diff --git a/resource-manager/network/2024-01-01/adminrulecollections/README.md b/resource-manager/network/2024-01-01/adminrulecollections/README.md new file mode 100644 index 00000000000..4afed0adb34 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrulecollections/README.md @@ -0,0 +1,86 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/adminrulecollections` Documentation + +The `adminrulecollections` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/adminrulecollections" +``` + + +### Client Initialization + +```go +client := adminrulecollections.NewAdminRuleCollectionsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `AdminRuleCollectionsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := adminrulecollections.NewRuleCollectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "securityAdminConfigurationValue", "ruleCollectionValue") + +payload := adminrulecollections.AdminRuleCollection{ + // ... +} + + +read, err := client.CreateOrUpdate(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `AdminRuleCollectionsClient.Delete` + +```go +ctx := context.TODO() +id := adminrulecollections.NewRuleCollectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "securityAdminConfigurationValue", "ruleCollectionValue") + +if err := client.DeleteThenPoll(ctx, id, adminrulecollections.DefaultDeleteOperationOptions()); err != nil { + // handle the error +} +``` + + +### Example Usage: `AdminRuleCollectionsClient.Get` + +```go +ctx := context.TODO() +id := adminrulecollections.NewRuleCollectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "securityAdminConfigurationValue", "ruleCollectionValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `AdminRuleCollectionsClient.List` + +```go +ctx := context.TODO() +id := adminrulecollections.NewSecurityAdminConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "securityAdminConfigurationValue") + +// alternatively `client.List(ctx, id, adminrulecollections.DefaultListOperationOptions())` can be used to do batched pagination +items, err := client.ListComplete(ctx, id, adminrulecollections.DefaultListOperationOptions()) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/adminrulecollections/client.go b/resource-manager/network/2024-01-01/adminrulecollections/client.go new file mode 100644 index 00000000000..adbf2674d97 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrulecollections/client.go @@ -0,0 +1,26 @@ +package adminrulecollections + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AdminRuleCollectionsClient struct { + Client *resourcemanager.Client +} + +func NewAdminRuleCollectionsClientWithBaseURI(sdkApi sdkEnv.Api) (*AdminRuleCollectionsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "adminrulecollections", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating AdminRuleCollectionsClient: %+v", err) + } + + return &AdminRuleCollectionsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/adminrulecollections/constants.go b/resource-manager/network/2024-01-01/adminrulecollections/constants.go new file mode 100644 index 00000000000..d3e735bf0f1 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrulecollections/constants.go @@ -0,0 +1,57 @@ +package adminrulecollections + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/adminrulecollections/id_rulecollection.go b/resource-manager/network/2024-01-01/adminrulecollections/id_rulecollection.go new file mode 100644 index 00000000000..5c84e59671e --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrulecollections/id_rulecollection.go @@ -0,0 +1,148 @@ +package adminrulecollections + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&RuleCollectionId{}) +} + +var _ resourceids.ResourceId = &RuleCollectionId{} + +// RuleCollectionId is a struct representing the Resource ID for a Rule Collection +type RuleCollectionId struct { + SubscriptionId string + ResourceGroupName string + NetworkManagerName string + SecurityAdminConfigurationName string + RuleCollectionName string +} + +// NewRuleCollectionID returns a new RuleCollectionId struct +func NewRuleCollectionID(subscriptionId string, resourceGroupName string, networkManagerName string, securityAdminConfigurationName string, ruleCollectionName string) RuleCollectionId { + return RuleCollectionId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkManagerName: networkManagerName, + SecurityAdminConfigurationName: securityAdminConfigurationName, + RuleCollectionName: ruleCollectionName, + } +} + +// ParseRuleCollectionID parses 'input' into a RuleCollectionId +func ParseRuleCollectionID(input string) (*RuleCollectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&RuleCollectionId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RuleCollectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseRuleCollectionIDInsensitively parses 'input' case-insensitively into a RuleCollectionId +// note: this method should only be used for API response data and not user input +func ParseRuleCollectionIDInsensitively(input string) (*RuleCollectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&RuleCollectionId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RuleCollectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *RuleCollectionId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkManagerName, ok = input.Parsed["networkManagerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkManagerName", input) + } + + if id.SecurityAdminConfigurationName, ok = input.Parsed["securityAdminConfigurationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "securityAdminConfigurationName", input) + } + + if id.RuleCollectionName, ok = input.Parsed["ruleCollectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "ruleCollectionName", input) + } + + return nil +} + +// ValidateRuleCollectionID checks that 'input' can be parsed as a Rule Collection ID +func ValidateRuleCollectionID(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 := ParseRuleCollectionID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Rule Collection ID +func (id RuleCollectionId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkManagers/%s/securityAdminConfigurations/%s/ruleCollections/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkManagerName, id.SecurityAdminConfigurationName, id.RuleCollectionName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Rule Collection ID +func (id RuleCollectionId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkManagers", "networkManagers", "networkManagers"), + resourceids.UserSpecifiedSegment("networkManagerName", "networkManagerValue"), + resourceids.StaticSegment("staticSecurityAdminConfigurations", "securityAdminConfigurations", "securityAdminConfigurations"), + resourceids.UserSpecifiedSegment("securityAdminConfigurationName", "securityAdminConfigurationValue"), + resourceids.StaticSegment("staticRuleCollections", "ruleCollections", "ruleCollections"), + resourceids.UserSpecifiedSegment("ruleCollectionName", "ruleCollectionValue"), + } +} + +// String returns a human-readable description of this Rule Collection ID +func (id RuleCollectionId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Manager Name: %q", id.NetworkManagerName), + fmt.Sprintf("Security Admin Configuration Name: %q", id.SecurityAdminConfigurationName), + fmt.Sprintf("Rule Collection Name: %q", id.RuleCollectionName), + } + return fmt.Sprintf("Rule Collection (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/adminrulecollections/id_rulecollection_test.go b/resource-manager/network/2024-01-01/adminrulecollections/id_rulecollection_test.go new file mode 100644 index 00000000000..f887adb5138 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrulecollections/id_rulecollection_test.go @@ -0,0 +1,372 @@ +package adminrulecollections + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &RuleCollectionId{} + +func TestNewRuleCollectionID(t *testing.T) { + id := NewRuleCollectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "securityAdminConfigurationValue", "ruleCollectionValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkManagerName != "networkManagerValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkManagerName'", id.NetworkManagerName, "networkManagerValue") + } + + if id.SecurityAdminConfigurationName != "securityAdminConfigurationValue" { + t.Fatalf("Expected %q but got %q for Segment 'SecurityAdminConfigurationName'", id.SecurityAdminConfigurationName, "securityAdminConfigurationValue") + } + + if id.RuleCollectionName != "ruleCollectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'RuleCollectionName'", id.RuleCollectionName, "ruleCollectionValue") + } +} + +func TestFormatRuleCollectionID(t *testing.T) { + actual := NewRuleCollectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "securityAdminConfigurationValue", "ruleCollectionValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections/ruleCollectionValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseRuleCollectionID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RuleCollectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections/ruleCollectionValue", + Expected: &RuleCollectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + SecurityAdminConfigurationName: "securityAdminConfigurationValue", + RuleCollectionName: "ruleCollectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections/ruleCollectionValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRuleCollectionID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + if actual.SecurityAdminConfigurationName != v.Expected.SecurityAdminConfigurationName { + t.Fatalf("Expected %q but got %q for SecurityAdminConfigurationName", v.Expected.SecurityAdminConfigurationName, actual.SecurityAdminConfigurationName) + } + + if actual.RuleCollectionName != v.Expected.RuleCollectionName { + t.Fatalf("Expected %q but got %q for RuleCollectionName", v.Expected.RuleCollectionName, actual.RuleCollectionName) + } + + } +} + +func TestParseRuleCollectionIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RuleCollectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sEcUrItYaDmInCoNfIgUrAtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sEcUrItYaDmInCoNfIgUrAtIoNs/sEcUrItYaDmInCoNfIgUrAtIoNvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sEcUrItYaDmInCoNfIgUrAtIoNs/sEcUrItYaDmInCoNfIgUrAtIoNvAlUe/rUlEcOlLeCtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections/ruleCollectionValue", + Expected: &RuleCollectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + SecurityAdminConfigurationName: "securityAdminConfigurationValue", + RuleCollectionName: "ruleCollectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections/ruleCollectionValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sEcUrItYaDmInCoNfIgUrAtIoNs/sEcUrItYaDmInCoNfIgUrAtIoNvAlUe/rUlEcOlLeCtIoNs/rUlEcOlLeCtIoNvAlUe", + Expected: &RuleCollectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkManagerName: "nEtWoRkMaNaGeRvAlUe", + SecurityAdminConfigurationName: "sEcUrItYaDmInCoNfIgUrAtIoNvAlUe", + RuleCollectionName: "rUlEcOlLeCtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sEcUrItYaDmInCoNfIgUrAtIoNs/sEcUrItYaDmInCoNfIgUrAtIoNvAlUe/rUlEcOlLeCtIoNs/rUlEcOlLeCtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRuleCollectionIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + if actual.SecurityAdminConfigurationName != v.Expected.SecurityAdminConfigurationName { + t.Fatalf("Expected %q but got %q for SecurityAdminConfigurationName", v.Expected.SecurityAdminConfigurationName, actual.SecurityAdminConfigurationName) + } + + if actual.RuleCollectionName != v.Expected.RuleCollectionName { + t.Fatalf("Expected %q but got %q for RuleCollectionName", v.Expected.RuleCollectionName, actual.RuleCollectionName) + } + + } +} + +func TestSegmentsForRuleCollectionId(t *testing.T) { + segments := RuleCollectionId{}.Segments() + if len(segments) == 0 { + t.Fatalf("RuleCollectionId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/adminrulecollections/id_securityadminconfiguration.go b/resource-manager/network/2024-01-01/adminrulecollections/id_securityadminconfiguration.go new file mode 100644 index 00000000000..b8186efef3b --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrulecollections/id_securityadminconfiguration.go @@ -0,0 +1,139 @@ +package adminrulecollections + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&SecurityAdminConfigurationId{}) +} + +var _ resourceids.ResourceId = &SecurityAdminConfigurationId{} + +// SecurityAdminConfigurationId is a struct representing the Resource ID for a Security Admin Configuration +type SecurityAdminConfigurationId struct { + SubscriptionId string + ResourceGroupName string + NetworkManagerName string + SecurityAdminConfigurationName string +} + +// NewSecurityAdminConfigurationID returns a new SecurityAdminConfigurationId struct +func NewSecurityAdminConfigurationID(subscriptionId string, resourceGroupName string, networkManagerName string, securityAdminConfigurationName string) SecurityAdminConfigurationId { + return SecurityAdminConfigurationId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkManagerName: networkManagerName, + SecurityAdminConfigurationName: securityAdminConfigurationName, + } +} + +// ParseSecurityAdminConfigurationID parses 'input' into a SecurityAdminConfigurationId +func ParseSecurityAdminConfigurationID(input string) (*SecurityAdminConfigurationId, error) { + parser := resourceids.NewParserFromResourceIdType(&SecurityAdminConfigurationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := SecurityAdminConfigurationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseSecurityAdminConfigurationIDInsensitively parses 'input' case-insensitively into a SecurityAdminConfigurationId +// note: this method should only be used for API response data and not user input +func ParseSecurityAdminConfigurationIDInsensitively(input string) (*SecurityAdminConfigurationId, error) { + parser := resourceids.NewParserFromResourceIdType(&SecurityAdminConfigurationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := SecurityAdminConfigurationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *SecurityAdminConfigurationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkManagerName, ok = input.Parsed["networkManagerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkManagerName", input) + } + + if id.SecurityAdminConfigurationName, ok = input.Parsed["securityAdminConfigurationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "securityAdminConfigurationName", input) + } + + return nil +} + +// ValidateSecurityAdminConfigurationID checks that 'input' can be parsed as a Security Admin Configuration ID +func ValidateSecurityAdminConfigurationID(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 := ParseSecurityAdminConfigurationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Security Admin Configuration ID +func (id SecurityAdminConfigurationId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkManagers/%s/securityAdminConfigurations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkManagerName, id.SecurityAdminConfigurationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Security Admin Configuration ID +func (id SecurityAdminConfigurationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkManagers", "networkManagers", "networkManagers"), + resourceids.UserSpecifiedSegment("networkManagerName", "networkManagerValue"), + resourceids.StaticSegment("staticSecurityAdminConfigurations", "securityAdminConfigurations", "securityAdminConfigurations"), + resourceids.UserSpecifiedSegment("securityAdminConfigurationName", "securityAdminConfigurationValue"), + } +} + +// String returns a human-readable description of this Security Admin Configuration ID +func (id SecurityAdminConfigurationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Manager Name: %q", id.NetworkManagerName), + fmt.Sprintf("Security Admin Configuration Name: %q", id.SecurityAdminConfigurationName), + } + return fmt.Sprintf("Security Admin Configuration (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/adminrulecollections/id_securityadminconfiguration_test.go b/resource-manager/network/2024-01-01/adminrulecollections/id_securityadminconfiguration_test.go new file mode 100644 index 00000000000..1dbffe93a7e --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrulecollections/id_securityadminconfiguration_test.go @@ -0,0 +1,327 @@ +package adminrulecollections + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &SecurityAdminConfigurationId{} + +func TestNewSecurityAdminConfigurationID(t *testing.T) { + id := NewSecurityAdminConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "securityAdminConfigurationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkManagerName != "networkManagerValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkManagerName'", id.NetworkManagerName, "networkManagerValue") + } + + if id.SecurityAdminConfigurationName != "securityAdminConfigurationValue" { + t.Fatalf("Expected %q but got %q for Segment 'SecurityAdminConfigurationName'", id.SecurityAdminConfigurationName, "securityAdminConfigurationValue") + } +} + +func TestFormatSecurityAdminConfigurationID(t *testing.T) { + actual := NewSecurityAdminConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "securityAdminConfigurationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseSecurityAdminConfigurationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *SecurityAdminConfigurationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue", + Expected: &SecurityAdminConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + SecurityAdminConfigurationName: "securityAdminConfigurationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseSecurityAdminConfigurationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + if actual.SecurityAdminConfigurationName != v.Expected.SecurityAdminConfigurationName { + t.Fatalf("Expected %q but got %q for SecurityAdminConfigurationName", v.Expected.SecurityAdminConfigurationName, actual.SecurityAdminConfigurationName) + } + + } +} + +func TestParseSecurityAdminConfigurationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *SecurityAdminConfigurationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sEcUrItYaDmInCoNfIgUrAtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue", + Expected: &SecurityAdminConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + SecurityAdminConfigurationName: "securityAdminConfigurationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sEcUrItYaDmInCoNfIgUrAtIoNs/sEcUrItYaDmInCoNfIgUrAtIoNvAlUe", + Expected: &SecurityAdminConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkManagerName: "nEtWoRkMaNaGeRvAlUe", + SecurityAdminConfigurationName: "sEcUrItYaDmInCoNfIgUrAtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sEcUrItYaDmInCoNfIgUrAtIoNs/sEcUrItYaDmInCoNfIgUrAtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseSecurityAdminConfigurationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + if actual.SecurityAdminConfigurationName != v.Expected.SecurityAdminConfigurationName { + t.Fatalf("Expected %q but got %q for SecurityAdminConfigurationName", v.Expected.SecurityAdminConfigurationName, actual.SecurityAdminConfigurationName) + } + + } +} + +func TestSegmentsForSecurityAdminConfigurationId(t *testing.T) { + segments := SecurityAdminConfigurationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("SecurityAdminConfigurationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/adminrulecollections/method_createorupdate.go b/resource-manager/network/2024-01-01/adminrulecollections/method_createorupdate.go new file mode 100644 index 00000000000..67a6db6eb7b --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrulecollections/method_createorupdate.go @@ -0,0 +1,59 @@ +package adminrulecollections + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *AdminRuleCollection +} + +// CreateOrUpdate ... +func (c AdminRuleCollectionsClient) CreateOrUpdate(ctx context.Context, id RuleCollectionId, input AdminRuleCollection) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model AdminRuleCollection + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/adminrulecollections/method_delete.go b/resource-manager/network/2024-01-01/adminrulecollections/method_delete.go new file mode 100644 index 00000000000..2a158c78562 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrulecollections/method_delete.go @@ -0,0 +1,99 @@ +package adminrulecollections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +type DeleteOperationOptions struct { + Force *bool +} + +func DefaultDeleteOperationOptions() DeleteOperationOptions { + return DeleteOperationOptions{} +} + +func (o DeleteOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o DeleteOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o DeleteOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Force != nil { + out.Append("force", fmt.Sprintf("%v", *o.Force)) + } + return &out +} + +// Delete ... +func (c AdminRuleCollectionsClient) Delete(ctx context.Context, id RuleCollectionId, options DeleteOperationOptions) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c AdminRuleCollectionsClient) DeleteThenPoll(ctx context.Context, id RuleCollectionId, options DeleteOperationOptions) error { + result, err := c.Delete(ctx, id, options) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/adminrulecollections/method_get.go b/resource-manager/network/2024-01-01/adminrulecollections/method_get.go new file mode 100644 index 00000000000..8beb93c5eca --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrulecollections/method_get.go @@ -0,0 +1,54 @@ +package adminrulecollections + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *AdminRuleCollection +} + +// Get ... +func (c AdminRuleCollectionsClient) Get(ctx context.Context, id RuleCollectionId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model AdminRuleCollection + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/adminrulecollections/method_list.go b/resource-manager/network/2024-01-01/adminrulecollections/method_list.go new file mode 100644 index 00000000000..4b76fd0901c --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrulecollections/method_list.go @@ -0,0 +1,120 @@ +package adminrulecollections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]AdminRuleCollection +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []AdminRuleCollection +} + +type ListOperationOptions struct { + Top *int64 +} + +func DefaultListOperationOptions() ListOperationOptions { + return ListOperationOptions{} +} + +func (o ListOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o ListOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o ListOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Top != nil { + out.Append("$top", fmt.Sprintf("%v", *o.Top)) + } + return &out +} + +// List ... +func (c AdminRuleCollectionsClient) List(ctx context.Context, id SecurityAdminConfigurationId, options ListOperationOptions) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/ruleCollections", id.ID()), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]AdminRuleCollection `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c AdminRuleCollectionsClient) ListComplete(ctx context.Context, id SecurityAdminConfigurationId, options ListOperationOptions) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, options, AdminRuleCollectionOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c AdminRuleCollectionsClient) ListCompleteMatchingPredicate(ctx context.Context, id SecurityAdminConfigurationId, options ListOperationOptions, predicate AdminRuleCollectionOperationPredicate) (result ListCompleteResult, err error) { + items := make([]AdminRuleCollection, 0) + + resp, err := c.List(ctx, id, options) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/adminrulecollections/model_adminrulecollection.go b/resource-manager/network/2024-01-01/adminrulecollections/model_adminrulecollection.go new file mode 100644 index 00000000000..aea91d2ba70 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrulecollections/model_adminrulecollection.go @@ -0,0 +1,17 @@ +package adminrulecollections + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/systemdata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AdminRuleCollection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *AdminRuleCollectionPropertiesFormat `json:"properties,omitempty"` + SystemData *systemdata.SystemData `json:"systemData,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/adminrulecollections/model_adminrulecollectionpropertiesformat.go b/resource-manager/network/2024-01-01/adminrulecollections/model_adminrulecollectionpropertiesformat.go new file mode 100644 index 00000000000..43e02d8ca9c --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrulecollections/model_adminrulecollectionpropertiesformat.go @@ -0,0 +1,11 @@ +package adminrulecollections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AdminRuleCollectionPropertiesFormat struct { + AppliesToGroups []NetworkManagerSecurityGroupItem `json:"appliesToGroups"` + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/adminrulecollections/model_networkmanagersecuritygroupitem.go b/resource-manager/network/2024-01-01/adminrulecollections/model_networkmanagersecuritygroupitem.go new file mode 100644 index 00000000000..ce59c38f4fd --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrulecollections/model_networkmanagersecuritygroupitem.go @@ -0,0 +1,8 @@ +package adminrulecollections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManagerSecurityGroupItem struct { + NetworkGroupId string `json:"networkGroupId"` +} diff --git a/resource-manager/network/2024-01-01/adminrulecollections/predicates.go b/resource-manager/network/2024-01-01/adminrulecollections/predicates.go new file mode 100644 index 00000000000..67b37b95643 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrulecollections/predicates.go @@ -0,0 +1,32 @@ +package adminrulecollections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AdminRuleCollectionOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p AdminRuleCollectionOperationPredicate) Matches(input AdminRuleCollection) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/adminrulecollections/version.go b/resource-manager/network/2024-01-01/adminrulecollections/version.go new file mode 100644 index 00000000000..519ff5d3655 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrulecollections/version.go @@ -0,0 +1,12 @@ +package adminrulecollections + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/adminrulecollections/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/adminrules/README.md b/resource-manager/network/2024-01-01/adminrules/README.md new file mode 100644 index 00000000000..aae2c387f88 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrules/README.md @@ -0,0 +1,86 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/adminrules` Documentation + +The `adminrules` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/adminrules" +``` + + +### Client Initialization + +```go +client := adminrules.NewAdminRulesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `AdminRulesClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := adminrules.NewRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "securityAdminConfigurationValue", "ruleCollectionValue", "ruleValue") + +payload := adminrules.BaseAdminRule{ + // ... +} + + +read, err := client.CreateOrUpdate(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `AdminRulesClient.Delete` + +```go +ctx := context.TODO() +id := adminrules.NewRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "securityAdminConfigurationValue", "ruleCollectionValue", "ruleValue") + +if err := client.DeleteThenPoll(ctx, id, adminrules.DefaultDeleteOperationOptions()); err != nil { + // handle the error +} +``` + + +### Example Usage: `AdminRulesClient.Get` + +```go +ctx := context.TODO() +id := adminrules.NewRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "securityAdminConfigurationValue", "ruleCollectionValue", "ruleValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `AdminRulesClient.List` + +```go +ctx := context.TODO() +id := adminrules.NewRuleCollectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "securityAdminConfigurationValue", "ruleCollectionValue") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/adminrules/client.go b/resource-manager/network/2024-01-01/adminrules/client.go new file mode 100644 index 00000000000..40da5b4d0a4 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrules/client.go @@ -0,0 +1,26 @@ +package adminrules + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AdminRulesClient struct { + Client *resourcemanager.Client +} + +func NewAdminRulesClientWithBaseURI(sdkApi sdkEnv.Api) (*AdminRulesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "adminrules", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating AdminRulesClient: %+v", err) + } + + return &AdminRulesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/adminrules/constants.go b/resource-manager/network/2024-01-01/adminrules/constants.go new file mode 100644 index 00000000000..fbaa03c5543 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrules/constants.go @@ -0,0 +1,277 @@ +package adminrules + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AddressPrefixType string + +const ( + AddressPrefixTypeIPPrefix AddressPrefixType = "IPPrefix" + AddressPrefixTypeServiceTag AddressPrefixType = "ServiceTag" +) + +func PossibleValuesForAddressPrefixType() []string { + return []string{ + string(AddressPrefixTypeIPPrefix), + string(AddressPrefixTypeServiceTag), + } +} + +func (s *AddressPrefixType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAddressPrefixType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAddressPrefixType(input string) (*AddressPrefixType, error) { + vals := map[string]AddressPrefixType{ + "ipprefix": AddressPrefixTypeIPPrefix, + "servicetag": AddressPrefixTypeServiceTag, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := AddressPrefixType(input) + return &out, nil +} + +type AdminRuleKind string + +const ( + AdminRuleKindCustom AdminRuleKind = "Custom" + AdminRuleKindDefault AdminRuleKind = "Default" +) + +func PossibleValuesForAdminRuleKind() []string { + return []string{ + string(AdminRuleKindCustom), + string(AdminRuleKindDefault), + } +} + +func (s *AdminRuleKind) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAdminRuleKind(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAdminRuleKind(input string) (*AdminRuleKind, error) { + vals := map[string]AdminRuleKind{ + "custom": AdminRuleKindCustom, + "default": AdminRuleKindDefault, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := AdminRuleKind(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type SecurityConfigurationRuleAccess string + +const ( + SecurityConfigurationRuleAccessAllow SecurityConfigurationRuleAccess = "Allow" + SecurityConfigurationRuleAccessAlwaysAllow SecurityConfigurationRuleAccess = "AlwaysAllow" + SecurityConfigurationRuleAccessDeny SecurityConfigurationRuleAccess = "Deny" +) + +func PossibleValuesForSecurityConfigurationRuleAccess() []string { + return []string{ + string(SecurityConfigurationRuleAccessAllow), + string(SecurityConfigurationRuleAccessAlwaysAllow), + string(SecurityConfigurationRuleAccessDeny), + } +} + +func (s *SecurityConfigurationRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityConfigurationRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityConfigurationRuleAccess(input string) (*SecurityConfigurationRuleAccess, error) { + vals := map[string]SecurityConfigurationRuleAccess{ + "allow": SecurityConfigurationRuleAccessAllow, + "alwaysallow": SecurityConfigurationRuleAccessAlwaysAllow, + "deny": SecurityConfigurationRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityConfigurationRuleAccess(input) + return &out, nil +} + +type SecurityConfigurationRuleDirection string + +const ( + SecurityConfigurationRuleDirectionInbound SecurityConfigurationRuleDirection = "Inbound" + SecurityConfigurationRuleDirectionOutbound SecurityConfigurationRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityConfigurationRuleDirection() []string { + return []string{ + string(SecurityConfigurationRuleDirectionInbound), + string(SecurityConfigurationRuleDirectionOutbound), + } +} + +func (s *SecurityConfigurationRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityConfigurationRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityConfigurationRuleDirection(input string) (*SecurityConfigurationRuleDirection, error) { + vals := map[string]SecurityConfigurationRuleDirection{ + "inbound": SecurityConfigurationRuleDirectionInbound, + "outbound": SecurityConfigurationRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityConfigurationRuleDirection(input) + return &out, nil +} + +type SecurityConfigurationRuleProtocol string + +const ( + SecurityConfigurationRuleProtocolAh SecurityConfigurationRuleProtocol = "Ah" + SecurityConfigurationRuleProtocolAny SecurityConfigurationRuleProtocol = "Any" + SecurityConfigurationRuleProtocolEsp SecurityConfigurationRuleProtocol = "Esp" + SecurityConfigurationRuleProtocolIcmp SecurityConfigurationRuleProtocol = "Icmp" + SecurityConfigurationRuleProtocolTcp SecurityConfigurationRuleProtocol = "Tcp" + SecurityConfigurationRuleProtocolUdp SecurityConfigurationRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityConfigurationRuleProtocol() []string { + return []string{ + string(SecurityConfigurationRuleProtocolAh), + string(SecurityConfigurationRuleProtocolAny), + string(SecurityConfigurationRuleProtocolEsp), + string(SecurityConfigurationRuleProtocolIcmp), + string(SecurityConfigurationRuleProtocolTcp), + string(SecurityConfigurationRuleProtocolUdp), + } +} + +func (s *SecurityConfigurationRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityConfigurationRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityConfigurationRuleProtocol(input string) (*SecurityConfigurationRuleProtocol, error) { + vals := map[string]SecurityConfigurationRuleProtocol{ + "ah": SecurityConfigurationRuleProtocolAh, + "any": SecurityConfigurationRuleProtocolAny, + "esp": SecurityConfigurationRuleProtocolEsp, + "icmp": SecurityConfigurationRuleProtocolIcmp, + "tcp": SecurityConfigurationRuleProtocolTcp, + "udp": SecurityConfigurationRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityConfigurationRuleProtocol(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/adminrules/id_rule.go b/resource-manager/network/2024-01-01/adminrules/id_rule.go new file mode 100644 index 00000000000..3b132449062 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrules/id_rule.go @@ -0,0 +1,157 @@ +package adminrules + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&RuleId{}) +} + +var _ resourceids.ResourceId = &RuleId{} + +// RuleId is a struct representing the Resource ID for a Rule +type RuleId struct { + SubscriptionId string + ResourceGroupName string + NetworkManagerName string + SecurityAdminConfigurationName string + RuleCollectionName string + RuleName string +} + +// NewRuleID returns a new RuleId struct +func NewRuleID(subscriptionId string, resourceGroupName string, networkManagerName string, securityAdminConfigurationName string, ruleCollectionName string, ruleName string) RuleId { + return RuleId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkManagerName: networkManagerName, + SecurityAdminConfigurationName: securityAdminConfigurationName, + RuleCollectionName: ruleCollectionName, + RuleName: ruleName, + } +} + +// ParseRuleID parses 'input' into a RuleId +func ParseRuleID(input string) (*RuleId, error) { + parser := resourceids.NewParserFromResourceIdType(&RuleId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RuleId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseRuleIDInsensitively parses 'input' case-insensitively into a RuleId +// note: this method should only be used for API response data and not user input +func ParseRuleIDInsensitively(input string) (*RuleId, error) { + parser := resourceids.NewParserFromResourceIdType(&RuleId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RuleId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *RuleId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkManagerName, ok = input.Parsed["networkManagerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkManagerName", input) + } + + if id.SecurityAdminConfigurationName, ok = input.Parsed["securityAdminConfigurationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "securityAdminConfigurationName", input) + } + + if id.RuleCollectionName, ok = input.Parsed["ruleCollectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "ruleCollectionName", input) + } + + if id.RuleName, ok = input.Parsed["ruleName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "ruleName", input) + } + + return nil +} + +// ValidateRuleID checks that 'input' can be parsed as a Rule ID +func ValidateRuleID(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 := ParseRuleID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Rule ID +func (id RuleId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkManagers/%s/securityAdminConfigurations/%s/ruleCollections/%s/rules/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkManagerName, id.SecurityAdminConfigurationName, id.RuleCollectionName, id.RuleName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Rule ID +func (id RuleId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkManagers", "networkManagers", "networkManagers"), + resourceids.UserSpecifiedSegment("networkManagerName", "networkManagerValue"), + resourceids.StaticSegment("staticSecurityAdminConfigurations", "securityAdminConfigurations", "securityAdminConfigurations"), + resourceids.UserSpecifiedSegment("securityAdminConfigurationName", "securityAdminConfigurationValue"), + resourceids.StaticSegment("staticRuleCollections", "ruleCollections", "ruleCollections"), + resourceids.UserSpecifiedSegment("ruleCollectionName", "ruleCollectionValue"), + resourceids.StaticSegment("staticRules", "rules", "rules"), + resourceids.UserSpecifiedSegment("ruleName", "ruleValue"), + } +} + +// String returns a human-readable description of this Rule ID +func (id RuleId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Manager Name: %q", id.NetworkManagerName), + fmt.Sprintf("Security Admin Configuration Name: %q", id.SecurityAdminConfigurationName), + fmt.Sprintf("Rule Collection Name: %q", id.RuleCollectionName), + fmt.Sprintf("Rule Name: %q", id.RuleName), + } + return fmt.Sprintf("Rule (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/adminrules/id_rule_test.go b/resource-manager/network/2024-01-01/adminrules/id_rule_test.go new file mode 100644 index 00000000000..755182392b5 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrules/id_rule_test.go @@ -0,0 +1,417 @@ +package adminrules + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &RuleId{} + +func TestNewRuleID(t *testing.T) { + id := NewRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "securityAdminConfigurationValue", "ruleCollectionValue", "ruleValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkManagerName != "networkManagerValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkManagerName'", id.NetworkManagerName, "networkManagerValue") + } + + if id.SecurityAdminConfigurationName != "securityAdminConfigurationValue" { + t.Fatalf("Expected %q but got %q for Segment 'SecurityAdminConfigurationName'", id.SecurityAdminConfigurationName, "securityAdminConfigurationValue") + } + + if id.RuleCollectionName != "ruleCollectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'RuleCollectionName'", id.RuleCollectionName, "ruleCollectionValue") + } + + if id.RuleName != "ruleValue" { + t.Fatalf("Expected %q but got %q for Segment 'RuleName'", id.RuleName, "ruleValue") + } +} + +func TestFormatRuleID(t *testing.T) { + actual := NewRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "securityAdminConfigurationValue", "ruleCollectionValue", "ruleValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections/ruleCollectionValue/rules/ruleValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseRuleID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RuleId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections/ruleCollectionValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections/ruleCollectionValue/rules", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections/ruleCollectionValue/rules/ruleValue", + Expected: &RuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + SecurityAdminConfigurationName: "securityAdminConfigurationValue", + RuleCollectionName: "ruleCollectionValue", + RuleName: "ruleValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections/ruleCollectionValue/rules/ruleValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRuleID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + if actual.SecurityAdminConfigurationName != v.Expected.SecurityAdminConfigurationName { + t.Fatalf("Expected %q but got %q for SecurityAdminConfigurationName", v.Expected.SecurityAdminConfigurationName, actual.SecurityAdminConfigurationName) + } + + if actual.RuleCollectionName != v.Expected.RuleCollectionName { + t.Fatalf("Expected %q but got %q for RuleCollectionName", v.Expected.RuleCollectionName, actual.RuleCollectionName) + } + + if actual.RuleName != v.Expected.RuleName { + t.Fatalf("Expected %q but got %q for RuleName", v.Expected.RuleName, actual.RuleName) + } + + } +} + +func TestParseRuleIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RuleId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sEcUrItYaDmInCoNfIgUrAtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sEcUrItYaDmInCoNfIgUrAtIoNs/sEcUrItYaDmInCoNfIgUrAtIoNvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sEcUrItYaDmInCoNfIgUrAtIoNs/sEcUrItYaDmInCoNfIgUrAtIoNvAlUe/rUlEcOlLeCtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections/ruleCollectionValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sEcUrItYaDmInCoNfIgUrAtIoNs/sEcUrItYaDmInCoNfIgUrAtIoNvAlUe/rUlEcOlLeCtIoNs/rUlEcOlLeCtIoNvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections/ruleCollectionValue/rules", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sEcUrItYaDmInCoNfIgUrAtIoNs/sEcUrItYaDmInCoNfIgUrAtIoNvAlUe/rUlEcOlLeCtIoNs/rUlEcOlLeCtIoNvAlUe/rUlEs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections/ruleCollectionValue/rules/ruleValue", + Expected: &RuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + SecurityAdminConfigurationName: "securityAdminConfigurationValue", + RuleCollectionName: "ruleCollectionValue", + RuleName: "ruleValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections/ruleCollectionValue/rules/ruleValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sEcUrItYaDmInCoNfIgUrAtIoNs/sEcUrItYaDmInCoNfIgUrAtIoNvAlUe/rUlEcOlLeCtIoNs/rUlEcOlLeCtIoNvAlUe/rUlEs/rUlEvAlUe", + Expected: &RuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkManagerName: "nEtWoRkMaNaGeRvAlUe", + SecurityAdminConfigurationName: "sEcUrItYaDmInCoNfIgUrAtIoNvAlUe", + RuleCollectionName: "rUlEcOlLeCtIoNvAlUe", + RuleName: "rUlEvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sEcUrItYaDmInCoNfIgUrAtIoNs/sEcUrItYaDmInCoNfIgUrAtIoNvAlUe/rUlEcOlLeCtIoNs/rUlEcOlLeCtIoNvAlUe/rUlEs/rUlEvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRuleIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + if actual.SecurityAdminConfigurationName != v.Expected.SecurityAdminConfigurationName { + t.Fatalf("Expected %q but got %q for SecurityAdminConfigurationName", v.Expected.SecurityAdminConfigurationName, actual.SecurityAdminConfigurationName) + } + + if actual.RuleCollectionName != v.Expected.RuleCollectionName { + t.Fatalf("Expected %q but got %q for RuleCollectionName", v.Expected.RuleCollectionName, actual.RuleCollectionName) + } + + if actual.RuleName != v.Expected.RuleName { + t.Fatalf("Expected %q but got %q for RuleName", v.Expected.RuleName, actual.RuleName) + } + + } +} + +func TestSegmentsForRuleId(t *testing.T) { + segments := RuleId{}.Segments() + if len(segments) == 0 { + t.Fatalf("RuleId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/adminrules/id_rulecollection.go b/resource-manager/network/2024-01-01/adminrules/id_rulecollection.go new file mode 100644 index 00000000000..6dd9dd5b0a8 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrules/id_rulecollection.go @@ -0,0 +1,148 @@ +package adminrules + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&RuleCollectionId{}) +} + +var _ resourceids.ResourceId = &RuleCollectionId{} + +// RuleCollectionId is a struct representing the Resource ID for a Rule Collection +type RuleCollectionId struct { + SubscriptionId string + ResourceGroupName string + NetworkManagerName string + SecurityAdminConfigurationName string + RuleCollectionName string +} + +// NewRuleCollectionID returns a new RuleCollectionId struct +func NewRuleCollectionID(subscriptionId string, resourceGroupName string, networkManagerName string, securityAdminConfigurationName string, ruleCollectionName string) RuleCollectionId { + return RuleCollectionId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkManagerName: networkManagerName, + SecurityAdminConfigurationName: securityAdminConfigurationName, + RuleCollectionName: ruleCollectionName, + } +} + +// ParseRuleCollectionID parses 'input' into a RuleCollectionId +func ParseRuleCollectionID(input string) (*RuleCollectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&RuleCollectionId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RuleCollectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseRuleCollectionIDInsensitively parses 'input' case-insensitively into a RuleCollectionId +// note: this method should only be used for API response data and not user input +func ParseRuleCollectionIDInsensitively(input string) (*RuleCollectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&RuleCollectionId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RuleCollectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *RuleCollectionId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkManagerName, ok = input.Parsed["networkManagerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkManagerName", input) + } + + if id.SecurityAdminConfigurationName, ok = input.Parsed["securityAdminConfigurationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "securityAdminConfigurationName", input) + } + + if id.RuleCollectionName, ok = input.Parsed["ruleCollectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "ruleCollectionName", input) + } + + return nil +} + +// ValidateRuleCollectionID checks that 'input' can be parsed as a Rule Collection ID +func ValidateRuleCollectionID(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 := ParseRuleCollectionID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Rule Collection ID +func (id RuleCollectionId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkManagers/%s/securityAdminConfigurations/%s/ruleCollections/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkManagerName, id.SecurityAdminConfigurationName, id.RuleCollectionName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Rule Collection ID +func (id RuleCollectionId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkManagers", "networkManagers", "networkManagers"), + resourceids.UserSpecifiedSegment("networkManagerName", "networkManagerValue"), + resourceids.StaticSegment("staticSecurityAdminConfigurations", "securityAdminConfigurations", "securityAdminConfigurations"), + resourceids.UserSpecifiedSegment("securityAdminConfigurationName", "securityAdminConfigurationValue"), + resourceids.StaticSegment("staticRuleCollections", "ruleCollections", "ruleCollections"), + resourceids.UserSpecifiedSegment("ruleCollectionName", "ruleCollectionValue"), + } +} + +// String returns a human-readable description of this Rule Collection ID +func (id RuleCollectionId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Manager Name: %q", id.NetworkManagerName), + fmt.Sprintf("Security Admin Configuration Name: %q", id.SecurityAdminConfigurationName), + fmt.Sprintf("Rule Collection Name: %q", id.RuleCollectionName), + } + return fmt.Sprintf("Rule Collection (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/adminrules/id_rulecollection_test.go b/resource-manager/network/2024-01-01/adminrules/id_rulecollection_test.go new file mode 100644 index 00000000000..f93da939de7 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrules/id_rulecollection_test.go @@ -0,0 +1,372 @@ +package adminrules + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &RuleCollectionId{} + +func TestNewRuleCollectionID(t *testing.T) { + id := NewRuleCollectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "securityAdminConfigurationValue", "ruleCollectionValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkManagerName != "networkManagerValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkManagerName'", id.NetworkManagerName, "networkManagerValue") + } + + if id.SecurityAdminConfigurationName != "securityAdminConfigurationValue" { + t.Fatalf("Expected %q but got %q for Segment 'SecurityAdminConfigurationName'", id.SecurityAdminConfigurationName, "securityAdminConfigurationValue") + } + + if id.RuleCollectionName != "ruleCollectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'RuleCollectionName'", id.RuleCollectionName, "ruleCollectionValue") + } +} + +func TestFormatRuleCollectionID(t *testing.T) { + actual := NewRuleCollectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "securityAdminConfigurationValue", "ruleCollectionValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections/ruleCollectionValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseRuleCollectionID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RuleCollectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections/ruleCollectionValue", + Expected: &RuleCollectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + SecurityAdminConfigurationName: "securityAdminConfigurationValue", + RuleCollectionName: "ruleCollectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections/ruleCollectionValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRuleCollectionID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + if actual.SecurityAdminConfigurationName != v.Expected.SecurityAdminConfigurationName { + t.Fatalf("Expected %q but got %q for SecurityAdminConfigurationName", v.Expected.SecurityAdminConfigurationName, actual.SecurityAdminConfigurationName) + } + + if actual.RuleCollectionName != v.Expected.RuleCollectionName { + t.Fatalf("Expected %q but got %q for RuleCollectionName", v.Expected.RuleCollectionName, actual.RuleCollectionName) + } + + } +} + +func TestParseRuleCollectionIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RuleCollectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sEcUrItYaDmInCoNfIgUrAtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sEcUrItYaDmInCoNfIgUrAtIoNs/sEcUrItYaDmInCoNfIgUrAtIoNvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sEcUrItYaDmInCoNfIgUrAtIoNs/sEcUrItYaDmInCoNfIgUrAtIoNvAlUe/rUlEcOlLeCtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections/ruleCollectionValue", + Expected: &RuleCollectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + SecurityAdminConfigurationName: "securityAdminConfigurationValue", + RuleCollectionName: "ruleCollectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/ruleCollections/ruleCollectionValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sEcUrItYaDmInCoNfIgUrAtIoNs/sEcUrItYaDmInCoNfIgUrAtIoNvAlUe/rUlEcOlLeCtIoNs/rUlEcOlLeCtIoNvAlUe", + Expected: &RuleCollectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkManagerName: "nEtWoRkMaNaGeRvAlUe", + SecurityAdminConfigurationName: "sEcUrItYaDmInCoNfIgUrAtIoNvAlUe", + RuleCollectionName: "rUlEcOlLeCtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sEcUrItYaDmInCoNfIgUrAtIoNs/sEcUrItYaDmInCoNfIgUrAtIoNvAlUe/rUlEcOlLeCtIoNs/rUlEcOlLeCtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRuleCollectionIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + if actual.SecurityAdminConfigurationName != v.Expected.SecurityAdminConfigurationName { + t.Fatalf("Expected %q but got %q for SecurityAdminConfigurationName", v.Expected.SecurityAdminConfigurationName, actual.SecurityAdminConfigurationName) + } + + if actual.RuleCollectionName != v.Expected.RuleCollectionName { + t.Fatalf("Expected %q but got %q for RuleCollectionName", v.Expected.RuleCollectionName, actual.RuleCollectionName) + } + + } +} + +func TestSegmentsForRuleCollectionId(t *testing.T) { + segments := RuleCollectionId{}.Segments() + if len(segments) == 0 { + t.Fatalf("RuleCollectionId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/adminrules/method_createorupdate.go b/resource-manager/network/2024-01-01/adminrules/method_createorupdate.go new file mode 100644 index 00000000000..d936a5666f1 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrules/method_createorupdate.go @@ -0,0 +1,63 @@ +package adminrules + +import ( + "context" + "encoding/json" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *BaseAdminRule +} + +// CreateOrUpdate ... +func (c AdminRulesClient) CreateOrUpdate(ctx context.Context, id RuleId, input BaseAdminRule) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var respObj json.RawMessage + if err = resp.Unmarshal(&respObj); err != nil { + return + } + model, err := unmarshalBaseAdminRuleImplementation(respObj) + if err != nil { + return + } + result.Model = &model + + return +} diff --git a/resource-manager/network/2024-01-01/adminrules/method_delete.go b/resource-manager/network/2024-01-01/adminrules/method_delete.go new file mode 100644 index 00000000000..6d7b0f948b8 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrules/method_delete.go @@ -0,0 +1,99 @@ +package adminrules + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +type DeleteOperationOptions struct { + Force *bool +} + +func DefaultDeleteOperationOptions() DeleteOperationOptions { + return DeleteOperationOptions{} +} + +func (o DeleteOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o DeleteOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o DeleteOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Force != nil { + out.Append("force", fmt.Sprintf("%v", *o.Force)) + } + return &out +} + +// Delete ... +func (c AdminRulesClient) Delete(ctx context.Context, id RuleId, options DeleteOperationOptions) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c AdminRulesClient) DeleteThenPoll(ctx context.Context, id RuleId, options DeleteOperationOptions) error { + result, err := c.Delete(ctx, id, options) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/adminrules/method_get.go b/resource-manager/network/2024-01-01/adminrules/method_get.go new file mode 100644 index 00000000000..94337a0e139 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrules/method_get.go @@ -0,0 +1,58 @@ +package adminrules + +import ( + "context" + "encoding/json" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *BaseAdminRule +} + +// Get ... +func (c AdminRulesClient) Get(ctx context.Context, id RuleId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var respObj json.RawMessage + if err = resp.Unmarshal(&respObj); err != nil { + return + } + model, err := unmarshalBaseAdminRuleImplementation(respObj) + if err != nil { + return + } + result.Model = &model + + return +} diff --git a/resource-manager/network/2024-01-01/adminrules/method_list.go b/resource-manager/network/2024-01-01/adminrules/method_list.go new file mode 100644 index 00000000000..1c41454de22 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrules/method_list.go @@ -0,0 +1,104 @@ +package adminrules + +import ( + "context" + "encoding/json" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]BaseAdminRule +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []BaseAdminRule +} + +// List ... +func (c AdminRulesClient) List(ctx context.Context, id RuleCollectionId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/rules", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]json.RawMessage `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + temp := make([]BaseAdminRule, 0) + if values.Values != nil { + for i, v := range *values.Values { + val, err := unmarshalBaseAdminRuleImplementation(v) + if err != nil { + err = fmt.Errorf("unmarshalling item %d for BaseAdminRule (%q): %+v", i, v, err) + return result, err + } + temp = append(temp, val) + } + } + result.Model = &temp + + return +} + +// ListComplete retrieves all the results into a single object +func (c AdminRulesClient) ListComplete(ctx context.Context, id RuleCollectionId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, BaseAdminRuleOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c AdminRulesClient) ListCompleteMatchingPredicate(ctx context.Context, id RuleCollectionId, predicate BaseAdminRuleOperationPredicate) (result ListCompleteResult, err error) { + items := make([]BaseAdminRule, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/adminrules/model_addressprefixitem.go b/resource-manager/network/2024-01-01/adminrules/model_addressprefixitem.go new file mode 100644 index 00000000000..223aec22448 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrules/model_addressprefixitem.go @@ -0,0 +1,9 @@ +package adminrules + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AddressPrefixItem struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixType *AddressPrefixType `json:"addressPrefixType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/adminrules/model_adminpropertiesformat.go b/resource-manager/network/2024-01-01/adminrules/model_adminpropertiesformat.go new file mode 100644 index 00000000000..a0e21af6c0d --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrules/model_adminpropertiesformat.go @@ -0,0 +1,18 @@ +package adminrules + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AdminPropertiesFormat struct { + Access SecurityConfigurationRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Destinations *[]AddressPrefixItem `json:"destinations,omitempty"` + Direction SecurityConfigurationRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityConfigurationRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` + Sources *[]AddressPrefixItem `json:"sources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/adminrules/model_adminrule.go b/resource-manager/network/2024-01-01/adminrules/model_adminrule.go new file mode 100644 index 00000000000..8544cf3cd71 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrules/model_adminrule.go @@ -0,0 +1,48 @@ +package adminrules + +import ( + "encoding/json" + "fmt" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/systemdata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ BaseAdminRule = AdminRule{} + +type AdminRule struct { + Properties *AdminPropertiesFormat `json:"properties,omitempty"` + + // Fields inherited from BaseAdminRule + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + SystemData *systemdata.SystemData `json:"systemData,omitempty"` + Type *string `json:"type,omitempty"` +} + +var _ json.Marshaler = AdminRule{} + +func (s AdminRule) MarshalJSON() ([]byte, error) { + type wrapper AdminRule + wrapped := wrapper(s) + encoded, err := json.Marshal(wrapped) + if err != nil { + return nil, fmt.Errorf("marshaling AdminRule: %+v", err) + } + + var decoded map[string]interface{} + if err := json.Unmarshal(encoded, &decoded); err != nil { + return nil, fmt.Errorf("unmarshaling AdminRule: %+v", err) + } + decoded["kind"] = "Custom" + + encoded, err = json.Marshal(decoded) + if err != nil { + return nil, fmt.Errorf("re-marshaling AdminRule: %+v", err) + } + + return encoded, nil +} diff --git a/resource-manager/network/2024-01-01/adminrules/model_baseadminrule.go b/resource-manager/network/2024-01-01/adminrules/model_baseadminrule.go new file mode 100644 index 00000000000..bbcabba727e --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrules/model_baseadminrule.go @@ -0,0 +1,61 @@ +package adminrules + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BaseAdminRule interface { +} + +// RawBaseAdminRuleImpl is returned when the Discriminated Value +// doesn't match any of the defined types +// NOTE: this should only be used when a type isn't defined for this type of Object (as a workaround) +// and is used only for Deserialization (e.g. this cannot be used as a Request Payload). +type RawBaseAdminRuleImpl struct { + Type string + Values map[string]interface{} +} + +func unmarshalBaseAdminRuleImplementation(input []byte) (BaseAdminRule, error) { + if input == nil { + return nil, nil + } + + var temp map[string]interface{} + if err := json.Unmarshal(input, &temp); err != nil { + return nil, fmt.Errorf("unmarshaling BaseAdminRule into map[string]interface: %+v", err) + } + + value, ok := temp["kind"].(string) + if !ok { + return nil, nil + } + + if strings.EqualFold(value, "Custom") { + var out AdminRule + if err := json.Unmarshal(input, &out); err != nil { + return nil, fmt.Errorf("unmarshaling into AdminRule: %+v", err) + } + return out, nil + } + + if strings.EqualFold(value, "Default") { + var out DefaultAdminRule + if err := json.Unmarshal(input, &out); err != nil { + return nil, fmt.Errorf("unmarshaling into DefaultAdminRule: %+v", err) + } + return out, nil + } + + out := RawBaseAdminRuleImpl{ + Type: value, + Values: temp, + } + return out, nil + +} diff --git a/resource-manager/network/2024-01-01/adminrules/model_defaultadminpropertiesformat.go b/resource-manager/network/2024-01-01/adminrules/model_defaultadminpropertiesformat.go new file mode 100644 index 00000000000..a8242069c88 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrules/model_defaultadminpropertiesformat.go @@ -0,0 +1,19 @@ +package adminrules + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DefaultAdminPropertiesFormat struct { + Access *SecurityConfigurationRuleAccess `json:"access,omitempty"` + Description *string `json:"description,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Destinations *[]AddressPrefixItem `json:"destinations,omitempty"` + Direction *SecurityConfigurationRuleDirection `json:"direction,omitempty"` + Flag *string `json:"flag,omitempty"` + Priority *int64 `json:"priority,omitempty"` + Protocol *SecurityConfigurationRuleProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` + Sources *[]AddressPrefixItem `json:"sources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/adminrules/model_defaultadminrule.go b/resource-manager/network/2024-01-01/adminrules/model_defaultadminrule.go new file mode 100644 index 00000000000..7a93ae7edc9 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrules/model_defaultadminrule.go @@ -0,0 +1,48 @@ +package adminrules + +import ( + "encoding/json" + "fmt" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/systemdata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ BaseAdminRule = DefaultAdminRule{} + +type DefaultAdminRule struct { + Properties *DefaultAdminPropertiesFormat `json:"properties,omitempty"` + + // Fields inherited from BaseAdminRule + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + SystemData *systemdata.SystemData `json:"systemData,omitempty"` + Type *string `json:"type,omitempty"` +} + +var _ json.Marshaler = DefaultAdminRule{} + +func (s DefaultAdminRule) MarshalJSON() ([]byte, error) { + type wrapper DefaultAdminRule + wrapped := wrapper(s) + encoded, err := json.Marshal(wrapped) + if err != nil { + return nil, fmt.Errorf("marshaling DefaultAdminRule: %+v", err) + } + + var decoded map[string]interface{} + if err := json.Unmarshal(encoded, &decoded); err != nil { + return nil, fmt.Errorf("unmarshaling DefaultAdminRule: %+v", err) + } + decoded["kind"] = "Default" + + encoded, err = json.Marshal(decoded) + if err != nil { + return nil, fmt.Errorf("re-marshaling DefaultAdminRule: %+v", err) + } + + return encoded, nil +} diff --git a/resource-manager/network/2024-01-01/adminrules/predicates.go b/resource-manager/network/2024-01-01/adminrules/predicates.go new file mode 100644 index 00000000000..f594b9ac1be --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrules/predicates.go @@ -0,0 +1,12 @@ +package adminrules + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BaseAdminRuleOperationPredicate struct { +} + +func (p BaseAdminRuleOperationPredicate) Matches(input BaseAdminRule) bool { + + return true +} diff --git a/resource-manager/network/2024-01-01/adminrules/version.go b/resource-manager/network/2024-01-01/adminrules/version.go new file mode 100644 index 00000000000..b456849b640 --- /dev/null +++ b/resource-manager/network/2024-01-01/adminrules/version.go @@ -0,0 +1,12 @@ +package adminrules + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/adminrules/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/README.md b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/README.md new file mode 100644 index 00000000000..4f066f7a6a2 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/README.md @@ -0,0 +1,82 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections` Documentation + +The `applicationgatewayprivateendpointconnections` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections" +``` + + +### Client Initialization + +```go +client := applicationgatewayprivateendpointconnections.NewApplicationGatewayPrivateEndpointConnectionsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ApplicationGatewayPrivateEndpointConnectionsClient.Delete` + +```go +ctx := context.TODO() +id := applicationgatewayprivateendpointconnections.NewApplicationGatewayPrivateEndpointConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayValue", "privateEndpointConnectionValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `ApplicationGatewayPrivateEndpointConnectionsClient.Get` + +```go +ctx := context.TODO() +id := applicationgatewayprivateendpointconnections.NewApplicationGatewayPrivateEndpointConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayValue", "privateEndpointConnectionValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ApplicationGatewayPrivateEndpointConnectionsClient.List` + +```go +ctx := context.TODO() +id := applicationgatewayprivateendpointconnections.NewApplicationGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayValue") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `ApplicationGatewayPrivateEndpointConnectionsClient.Update` + +```go +ctx := context.TODO() +id := applicationgatewayprivateendpointconnections.NewApplicationGatewayPrivateEndpointConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayValue", "privateEndpointConnectionValue") + +payload := applicationgatewayprivateendpointconnections.ApplicationGatewayPrivateEndpointConnection{ + // ... +} + + +if err := client.UpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/client.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/client.go new file mode 100644 index 00000000000..10a57c1c475 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/client.go @@ -0,0 +1,26 @@ +package applicationgatewayprivateendpointconnections + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPrivateEndpointConnectionsClient struct { + Client *resourcemanager.Client +} + +func NewApplicationGatewayPrivateEndpointConnectionsClientWithBaseURI(sdkApi sdkEnv.Api) (*ApplicationGatewayPrivateEndpointConnectionsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "applicationgatewayprivateendpointconnections", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ApplicationGatewayPrivateEndpointConnectionsClient: %+v", err) + } + + return &ApplicationGatewayPrivateEndpointConnectionsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/constants.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/constants.go new file mode 100644 index 00000000000..bef4af9059e --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/constants.go @@ -0,0 +1,1198 @@ +package applicationgatewayprivateendpointconnections + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettingsProtectionMode string + +const ( + DdosSettingsProtectionModeDisabled DdosSettingsProtectionMode = "Disabled" + DdosSettingsProtectionModeEnabled DdosSettingsProtectionMode = "Enabled" + DdosSettingsProtectionModeVirtualNetworkInherited DdosSettingsProtectionMode = "VirtualNetworkInherited" +) + +func PossibleValuesForDdosSettingsProtectionMode() []string { + return []string{ + string(DdosSettingsProtectionModeDisabled), + string(DdosSettingsProtectionModeEnabled), + string(DdosSettingsProtectionModeVirtualNetworkInherited), + } +} + +func (s *DdosSettingsProtectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDdosSettingsProtectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDdosSettingsProtectionMode(input string) (*DdosSettingsProtectionMode, error) { + vals := map[string]DdosSettingsProtectionMode{ + "disabled": DdosSettingsProtectionModeDisabled, + "enabled": DdosSettingsProtectionModeEnabled, + "virtualnetworkinherited": DdosSettingsProtectionModeVirtualNetworkInherited, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DdosSettingsProtectionMode(input) + return &out, nil +} + +type DeleteOptions string + +const ( + DeleteOptionsDelete DeleteOptions = "Delete" + DeleteOptionsDetach DeleteOptions = "Detach" +) + +func PossibleValuesForDeleteOptions() []string { + return []string{ + string(DeleteOptionsDelete), + string(DeleteOptionsDetach), + } +} + +func (s *DeleteOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteOptions(input string) (*DeleteOptions, error) { + vals := map[string]DeleteOptions{ + "delete": DeleteOptionsDelete, + "detach": DeleteOptionsDetach, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteOptions(input) + return &out, nil +} + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelInterfaceType string + +const ( + GatewayLoadBalancerTunnelInterfaceTypeExternal GatewayLoadBalancerTunnelInterfaceType = "External" + GatewayLoadBalancerTunnelInterfaceTypeInternal GatewayLoadBalancerTunnelInterfaceType = "Internal" + GatewayLoadBalancerTunnelInterfaceTypeNone GatewayLoadBalancerTunnelInterfaceType = "None" +) + +func PossibleValuesForGatewayLoadBalancerTunnelInterfaceType() []string { + return []string{ + string(GatewayLoadBalancerTunnelInterfaceTypeExternal), + string(GatewayLoadBalancerTunnelInterfaceTypeInternal), + string(GatewayLoadBalancerTunnelInterfaceTypeNone), + } +} + +func (s *GatewayLoadBalancerTunnelInterfaceType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelInterfaceType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelInterfaceType(input string) (*GatewayLoadBalancerTunnelInterfaceType, error) { + vals := map[string]GatewayLoadBalancerTunnelInterfaceType{ + "external": GatewayLoadBalancerTunnelInterfaceTypeExternal, + "internal": GatewayLoadBalancerTunnelInterfaceTypeInternal, + "none": GatewayLoadBalancerTunnelInterfaceTypeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelInterfaceType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelProtocol string + +const ( + GatewayLoadBalancerTunnelProtocolNative GatewayLoadBalancerTunnelProtocol = "Native" + GatewayLoadBalancerTunnelProtocolNone GatewayLoadBalancerTunnelProtocol = "None" + GatewayLoadBalancerTunnelProtocolVXLAN GatewayLoadBalancerTunnelProtocol = "VXLAN" +) + +func PossibleValuesForGatewayLoadBalancerTunnelProtocol() []string { + return []string{ + string(GatewayLoadBalancerTunnelProtocolNative), + string(GatewayLoadBalancerTunnelProtocolNone), + string(GatewayLoadBalancerTunnelProtocolVXLAN), + } +} + +func (s *GatewayLoadBalancerTunnelProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelProtocol(input string) (*GatewayLoadBalancerTunnelProtocol, error) { + vals := map[string]GatewayLoadBalancerTunnelProtocol{ + "native": GatewayLoadBalancerTunnelProtocolNative, + "none": GatewayLoadBalancerTunnelProtocolNone, + "vxlan": GatewayLoadBalancerTunnelProtocolVXLAN, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelProtocol(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} + +type LoadBalancerBackendAddressAdminState string + +const ( + LoadBalancerBackendAddressAdminStateDown LoadBalancerBackendAddressAdminState = "Down" + LoadBalancerBackendAddressAdminStateNone LoadBalancerBackendAddressAdminState = "None" + LoadBalancerBackendAddressAdminStateUp LoadBalancerBackendAddressAdminState = "Up" +) + +func PossibleValuesForLoadBalancerBackendAddressAdminState() []string { + return []string{ + string(LoadBalancerBackendAddressAdminStateDown), + string(LoadBalancerBackendAddressAdminStateNone), + string(LoadBalancerBackendAddressAdminStateUp), + } +} + +func (s *LoadBalancerBackendAddressAdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerBackendAddressAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerBackendAddressAdminState(input string) (*LoadBalancerBackendAddressAdminState, error) { + vals := map[string]LoadBalancerBackendAddressAdminState{ + "down": LoadBalancerBackendAddressAdminStateDown, + "none": LoadBalancerBackendAddressAdminStateNone, + "up": LoadBalancerBackendAddressAdminStateUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerBackendAddressAdminState(input) + return &out, nil +} + +type NatGatewaySkuName string + +const ( + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +func PossibleValuesForNatGatewaySkuName() []string { + return []string{ + string(NatGatewaySkuNameStandard), + } +} + +func (s *NatGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNatGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNatGatewaySkuName(input string) (*NatGatewaySkuName, error) { + vals := map[string]NatGatewaySkuName{ + "standard": NatGatewaySkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NatGatewaySkuName(input) + return &out, nil +} + +type NetworkInterfaceAuxiliaryMode string + +const ( + NetworkInterfaceAuxiliaryModeAcceleratedConnections NetworkInterfaceAuxiliaryMode = "AcceleratedConnections" + NetworkInterfaceAuxiliaryModeFloating NetworkInterfaceAuxiliaryMode = "Floating" + NetworkInterfaceAuxiliaryModeMaxConnections NetworkInterfaceAuxiliaryMode = "MaxConnections" + NetworkInterfaceAuxiliaryModeNone NetworkInterfaceAuxiliaryMode = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliaryMode() []string { + return []string{ + string(NetworkInterfaceAuxiliaryModeAcceleratedConnections), + string(NetworkInterfaceAuxiliaryModeFloating), + string(NetworkInterfaceAuxiliaryModeMaxConnections), + string(NetworkInterfaceAuxiliaryModeNone), + } +} + +func (s *NetworkInterfaceAuxiliaryMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliaryMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliaryMode(input string) (*NetworkInterfaceAuxiliaryMode, error) { + vals := map[string]NetworkInterfaceAuxiliaryMode{ + "acceleratedconnections": NetworkInterfaceAuxiliaryModeAcceleratedConnections, + "floating": NetworkInterfaceAuxiliaryModeFloating, + "maxconnections": NetworkInterfaceAuxiliaryModeMaxConnections, + "none": NetworkInterfaceAuxiliaryModeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliaryMode(input) + return &out, nil +} + +type NetworkInterfaceAuxiliarySku string + +const ( + NetworkInterfaceAuxiliarySkuAEight NetworkInterfaceAuxiliarySku = "A8" + NetworkInterfaceAuxiliarySkuAFour NetworkInterfaceAuxiliarySku = "A4" + NetworkInterfaceAuxiliarySkuAOne NetworkInterfaceAuxiliarySku = "A1" + NetworkInterfaceAuxiliarySkuATwo NetworkInterfaceAuxiliarySku = "A2" + NetworkInterfaceAuxiliarySkuNone NetworkInterfaceAuxiliarySku = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliarySku() []string { + return []string{ + string(NetworkInterfaceAuxiliarySkuAEight), + string(NetworkInterfaceAuxiliarySkuAFour), + string(NetworkInterfaceAuxiliarySkuAOne), + string(NetworkInterfaceAuxiliarySkuATwo), + string(NetworkInterfaceAuxiliarySkuNone), + } +} + +func (s *NetworkInterfaceAuxiliarySku) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliarySku(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliarySku(input string) (*NetworkInterfaceAuxiliarySku, error) { + vals := map[string]NetworkInterfaceAuxiliarySku{ + "a8": NetworkInterfaceAuxiliarySkuAEight, + "a4": NetworkInterfaceAuxiliarySkuAFour, + "a1": NetworkInterfaceAuxiliarySkuAOne, + "a2": NetworkInterfaceAuxiliarySkuATwo, + "none": NetworkInterfaceAuxiliarySkuNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliarySku(input) + return &out, nil +} + +type NetworkInterfaceMigrationPhase string + +const ( + NetworkInterfaceMigrationPhaseAbort NetworkInterfaceMigrationPhase = "Abort" + NetworkInterfaceMigrationPhaseCommit NetworkInterfaceMigrationPhase = "Commit" + NetworkInterfaceMigrationPhaseCommitted NetworkInterfaceMigrationPhase = "Committed" + NetworkInterfaceMigrationPhaseNone NetworkInterfaceMigrationPhase = "None" + NetworkInterfaceMigrationPhasePrepare NetworkInterfaceMigrationPhase = "Prepare" +) + +func PossibleValuesForNetworkInterfaceMigrationPhase() []string { + return []string{ + string(NetworkInterfaceMigrationPhaseAbort), + string(NetworkInterfaceMigrationPhaseCommit), + string(NetworkInterfaceMigrationPhaseCommitted), + string(NetworkInterfaceMigrationPhaseNone), + string(NetworkInterfaceMigrationPhasePrepare), + } +} + +func (s *NetworkInterfaceMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceMigrationPhase(input string) (*NetworkInterfaceMigrationPhase, error) { + vals := map[string]NetworkInterfaceMigrationPhase{ + "abort": NetworkInterfaceMigrationPhaseAbort, + "commit": NetworkInterfaceMigrationPhaseCommit, + "committed": NetworkInterfaceMigrationPhaseCommitted, + "none": NetworkInterfaceMigrationPhaseNone, + "prepare": NetworkInterfaceMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceMigrationPhase(input) + return &out, nil +} + +type NetworkInterfaceNicType string + +const ( + NetworkInterfaceNicTypeElastic NetworkInterfaceNicType = "Elastic" + NetworkInterfaceNicTypeStandard NetworkInterfaceNicType = "Standard" +) + +func PossibleValuesForNetworkInterfaceNicType() []string { + return []string{ + string(NetworkInterfaceNicTypeElastic), + string(NetworkInterfaceNicTypeStandard), + } +} + +func (s *NetworkInterfaceNicType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceNicType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceNicType(input string) (*NetworkInterfaceNicType, error) { + vals := map[string]NetworkInterfaceNicType{ + "elastic": NetworkInterfaceNicTypeElastic, + "standard": NetworkInterfaceNicTypeStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceNicType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type PublicIPAddressDnsSettingsDomainNameLabelScope string + +const ( + PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "NoReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "ResourceGroupReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "SubscriptionReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "TenantReuse" +) + +func PossibleValuesForPublicIPAddressDnsSettingsDomainNameLabelScope() []string { + return []string{ + string(PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse), + } +} + +func (s *PublicIPAddressDnsSettingsDomainNameLabelScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressDnsSettingsDomainNameLabelScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressDnsSettingsDomainNameLabelScope(input string) (*PublicIPAddressDnsSettingsDomainNameLabelScope, error) { + vals := map[string]PublicIPAddressDnsSettingsDomainNameLabelScope{ + "noreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse, + "resourcegroupreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse, + "subscriptionreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse, + "tenantreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressDnsSettingsDomainNameLabelScope(input) + return &out, nil +} + +type PublicIPAddressMigrationPhase string + +const ( + PublicIPAddressMigrationPhaseAbort PublicIPAddressMigrationPhase = "Abort" + PublicIPAddressMigrationPhaseCommit PublicIPAddressMigrationPhase = "Commit" + PublicIPAddressMigrationPhaseCommitted PublicIPAddressMigrationPhase = "Committed" + PublicIPAddressMigrationPhaseNone PublicIPAddressMigrationPhase = "None" + PublicIPAddressMigrationPhasePrepare PublicIPAddressMigrationPhase = "Prepare" +) + +func PossibleValuesForPublicIPAddressMigrationPhase() []string { + return []string{ + string(PublicIPAddressMigrationPhaseAbort), + string(PublicIPAddressMigrationPhaseCommit), + string(PublicIPAddressMigrationPhaseCommitted), + string(PublicIPAddressMigrationPhaseNone), + string(PublicIPAddressMigrationPhasePrepare), + } +} + +func (s *PublicIPAddressMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressMigrationPhase(input string) (*PublicIPAddressMigrationPhase, error) { + vals := map[string]PublicIPAddressMigrationPhase{ + "abort": PublicIPAddressMigrationPhaseAbort, + "commit": PublicIPAddressMigrationPhaseCommit, + "committed": PublicIPAddressMigrationPhaseCommitted, + "none": PublicIPAddressMigrationPhaseNone, + "prepare": PublicIPAddressMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressMigrationPhase(input) + return &out, nil +} + +type PublicIPAddressSkuName string + +const ( + PublicIPAddressSkuNameBasic PublicIPAddressSkuName = "Basic" + PublicIPAddressSkuNameStandard PublicIPAddressSkuName = "Standard" +) + +func PossibleValuesForPublicIPAddressSkuName() []string { + return []string{ + string(PublicIPAddressSkuNameBasic), + string(PublicIPAddressSkuNameStandard), + } +} + +func (s *PublicIPAddressSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuName(input string) (*PublicIPAddressSkuName, error) { + vals := map[string]PublicIPAddressSkuName{ + "basic": PublicIPAddressSkuNameBasic, + "standard": PublicIPAddressSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuName(input) + return &out, nil +} + +type PublicIPAddressSkuTier string + +const ( + PublicIPAddressSkuTierGlobal PublicIPAddressSkuTier = "Global" + PublicIPAddressSkuTierRegional PublicIPAddressSkuTier = "Regional" +) + +func PossibleValuesForPublicIPAddressSkuTier() []string { + return []string{ + string(PublicIPAddressSkuTierGlobal), + string(PublicIPAddressSkuTierRegional), + } +} + +func (s *PublicIPAddressSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuTier(input string) (*PublicIPAddressSkuTier, error) { + vals := map[string]PublicIPAddressSkuTier{ + "global": PublicIPAddressSkuTierGlobal, + "regional": PublicIPAddressSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuTier(input) + return &out, nil +} + +type RouteNextHopType string + +const ( + RouteNextHopTypeInternet RouteNextHopType = "Internet" + RouteNextHopTypeNone RouteNextHopType = "None" + RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" + RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" + RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" +) + +func PossibleValuesForRouteNextHopType() []string { + return []string{ + string(RouteNextHopTypeInternet), + string(RouteNextHopTypeNone), + string(RouteNextHopTypeVirtualAppliance), + string(RouteNextHopTypeVirtualNetworkGateway), + string(RouteNextHopTypeVnetLocal), + } +} + +func (s *RouteNextHopType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteNextHopType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteNextHopType(input string) (*RouteNextHopType, error) { + vals := map[string]RouteNextHopType{ + "internet": RouteNextHopTypeInternet, + "none": RouteNextHopTypeNone, + "virtualappliance": RouteNextHopTypeVirtualAppliance, + "virtualnetworkgateway": RouteNextHopTypeVirtualNetworkGateway, + "vnetlocal": RouteNextHopTypeVnetLocal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteNextHopType(input) + return &out, nil +} + +type SecurityRuleAccess string + +const ( + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +func PossibleValuesForSecurityRuleAccess() []string { + return []string{ + string(SecurityRuleAccessAllow), + string(SecurityRuleAccessDeny), + } +} + +func (s *SecurityRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleAccess(input string) (*SecurityRuleAccess, error) { + vals := map[string]SecurityRuleAccess{ + "allow": SecurityRuleAccessAllow, + "deny": SecurityRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleAccess(input) + return &out, nil +} + +type SecurityRuleDirection string + +const ( + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityRuleDirection() []string { + return []string{ + string(SecurityRuleDirectionInbound), + string(SecurityRuleDirectionOutbound), + } +} + +func (s *SecurityRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleDirection(input string) (*SecurityRuleDirection, error) { + vals := map[string]SecurityRuleDirection{ + "inbound": SecurityRuleDirectionInbound, + "outbound": SecurityRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleDirection(input) + return &out, nil +} + +type SecurityRuleProtocol string + +const ( + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + SecurityRuleProtocolAny SecurityRuleProtocol = "*" + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + SecurityRuleProtocolTcp SecurityRuleProtocol = "Tcp" + SecurityRuleProtocolUdp SecurityRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityRuleProtocol() []string { + return []string{ + string(SecurityRuleProtocolAh), + string(SecurityRuleProtocolAny), + string(SecurityRuleProtocolEsp), + string(SecurityRuleProtocolIcmp), + string(SecurityRuleProtocolTcp), + string(SecurityRuleProtocolUdp), + } +} + +func (s *SecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleProtocol(input string) (*SecurityRuleProtocol, error) { + vals := map[string]SecurityRuleProtocol{ + "ah": SecurityRuleProtocolAh, + "*": SecurityRuleProtocolAny, + "esp": SecurityRuleProtocolEsp, + "icmp": SecurityRuleProtocolIcmp, + "tcp": SecurityRuleProtocolTcp, + "udp": SecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleProtocol(input) + return &out, nil +} + +type SharingScope string + +const ( + SharingScopeDelegatedServices SharingScope = "DelegatedServices" + SharingScopeTenant SharingScope = "Tenant" +) + +func PossibleValuesForSharingScope() []string { + return []string{ + string(SharingScopeDelegatedServices), + string(SharingScopeTenant), + } +} + +func (s *SharingScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSharingScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSharingScope(input string) (*SharingScope, error) { + vals := map[string]SharingScope{ + "delegatedservices": SharingScopeDelegatedServices, + "tenant": SharingScopeTenant, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SharingScope(input) + return &out, nil +} + +type SyncMode string + +const ( + SyncModeAutomatic SyncMode = "Automatic" + SyncModeManual SyncMode = "Manual" +) + +func PossibleValuesForSyncMode() []string { + return []string{ + string(SyncModeAutomatic), + string(SyncModeManual), + } +} + +func (s *SyncMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSyncMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSyncMode(input string) (*SyncMode, error) { + vals := map[string]SyncMode{ + "automatic": SyncModeAutomatic, + "manual": SyncModeManual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SyncMode(input) + return &out, nil +} + +type TransportProtocol string + +const ( + TransportProtocolAll TransportProtocol = "All" + TransportProtocolTcp TransportProtocol = "Tcp" + TransportProtocolUdp TransportProtocol = "Udp" +) + +func PossibleValuesForTransportProtocol() []string { + return []string{ + string(TransportProtocolAll), + string(TransportProtocolTcp), + string(TransportProtocolUdp), + } +} + +func (s *TransportProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseTransportProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseTransportProtocol(input string) (*TransportProtocol, error) { + vals := map[string]TransportProtocol{ + "all": TransportProtocolAll, + "tcp": TransportProtocolTcp, + "udp": TransportProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := TransportProtocol(input) + return &out, nil +} + +type VirtualNetworkPrivateEndpointNetworkPolicies string + +const ( + VirtualNetworkPrivateEndpointNetworkPoliciesDisabled VirtualNetworkPrivateEndpointNetworkPolicies = "Disabled" + VirtualNetworkPrivateEndpointNetworkPoliciesEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "Enabled" + VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "NetworkSecurityGroupEnabled" + VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "RouteTableEnabled" +) + +func PossibleValuesForVirtualNetworkPrivateEndpointNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateEndpointNetworkPoliciesDisabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled), + } +} + +func (s *VirtualNetworkPrivateEndpointNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateEndpointNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateEndpointNetworkPolicies(input string) (*VirtualNetworkPrivateEndpointNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateEndpointNetworkPolicies{ + "disabled": VirtualNetworkPrivateEndpointNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateEndpointNetworkPoliciesEnabled, + "networksecuritygroupenabled": VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled, + "routetableenabled": VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateEndpointNetworkPolicies(input) + return &out, nil +} + +type VirtualNetworkPrivateLinkServiceNetworkPolicies string + +const ( + VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Disabled" + VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Enabled" +) + +func PossibleValuesForVirtualNetworkPrivateLinkServiceNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled), + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled), + } +} + +func (s *VirtualNetworkPrivateLinkServiceNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateLinkServiceNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateLinkServiceNetworkPolicies(input string) (*VirtualNetworkPrivateLinkServiceNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateLinkServiceNetworkPolicies{ + "disabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateLinkServiceNetworkPolicies(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/id_applicationgateway.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/id_applicationgateway.go new file mode 100644 index 00000000000..e1cb4795761 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/id_applicationgateway.go @@ -0,0 +1,130 @@ +package applicationgatewayprivateendpointconnections + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ApplicationGatewayId{}) +} + +var _ resourceids.ResourceId = &ApplicationGatewayId{} + +// ApplicationGatewayId is a struct representing the Resource ID for a Application Gateway +type ApplicationGatewayId struct { + SubscriptionId string + ResourceGroupName string + ApplicationGatewayName string +} + +// NewApplicationGatewayID returns a new ApplicationGatewayId struct +func NewApplicationGatewayID(subscriptionId string, resourceGroupName string, applicationGatewayName string) ApplicationGatewayId { + return ApplicationGatewayId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ApplicationGatewayName: applicationGatewayName, + } +} + +// ParseApplicationGatewayID parses 'input' into a ApplicationGatewayId +func ParseApplicationGatewayID(input string) (*ApplicationGatewayId, error) { + parser := resourceids.NewParserFromResourceIdType(&ApplicationGatewayId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ApplicationGatewayId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseApplicationGatewayIDInsensitively parses 'input' case-insensitively into a ApplicationGatewayId +// note: this method should only be used for API response data and not user input +func ParseApplicationGatewayIDInsensitively(input string) (*ApplicationGatewayId, error) { + parser := resourceids.NewParserFromResourceIdType(&ApplicationGatewayId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ApplicationGatewayId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ApplicationGatewayId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ApplicationGatewayName, ok = input.Parsed["applicationGatewayName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "applicationGatewayName", input) + } + + return nil +} + +// ValidateApplicationGatewayID checks that 'input' can be parsed as a Application Gateway ID +func ValidateApplicationGatewayID(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 := ParseApplicationGatewayID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Application Gateway ID +func (id ApplicationGatewayId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/applicationGateways/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ApplicationGatewayName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Application Gateway ID +func (id ApplicationGatewayId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticApplicationGateways", "applicationGateways", "applicationGateways"), + resourceids.UserSpecifiedSegment("applicationGatewayName", "applicationGatewayValue"), + } +} + +// String returns a human-readable description of this Application Gateway ID +func (id ApplicationGatewayId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Application Gateway Name: %q", id.ApplicationGatewayName), + } + return fmt.Sprintf("Application Gateway (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/id_applicationgateway_test.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/id_applicationgateway_test.go new file mode 100644 index 00000000000..abc9f9e0c40 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/id_applicationgateway_test.go @@ -0,0 +1,282 @@ +package applicationgatewayprivateendpointconnections + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ApplicationGatewayId{} + +func TestNewApplicationGatewayID(t *testing.T) { + id := NewApplicationGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ApplicationGatewayName != "applicationGatewayValue" { + t.Fatalf("Expected %q but got %q for Segment 'ApplicationGatewayName'", id.ApplicationGatewayName, "applicationGatewayValue") + } +} + +func TestFormatApplicationGatewayID(t *testing.T) { + actual := NewApplicationGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseApplicationGatewayID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ApplicationGatewayId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue", + Expected: &ApplicationGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ApplicationGatewayName: "applicationGatewayValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseApplicationGatewayID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ApplicationGatewayName != v.Expected.ApplicationGatewayName { + t.Fatalf("Expected %q but got %q for ApplicationGatewayName", v.Expected.ApplicationGatewayName, actual.ApplicationGatewayName) + } + + } +} + +func TestParseApplicationGatewayIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ApplicationGatewayId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnGaTeWaYs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue", + Expected: &ApplicationGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ApplicationGatewayName: "applicationGatewayValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnGaTeWaYs/aPpLiCaTiOnGaTeWaYvAlUe", + Expected: &ApplicationGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ApplicationGatewayName: "aPpLiCaTiOnGaTeWaYvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnGaTeWaYs/aPpLiCaTiOnGaTeWaYvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseApplicationGatewayIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ApplicationGatewayName != v.Expected.ApplicationGatewayName { + t.Fatalf("Expected %q but got %q for ApplicationGatewayName", v.Expected.ApplicationGatewayName, actual.ApplicationGatewayName) + } + + } +} + +func TestSegmentsForApplicationGatewayId(t *testing.T) { + segments := ApplicationGatewayId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ApplicationGatewayId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/id_applicationgatewayprivateendpointconnection.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/id_applicationgatewayprivateendpointconnection.go new file mode 100644 index 00000000000..aad51fee91b --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/id_applicationgatewayprivateendpointconnection.go @@ -0,0 +1,139 @@ +package applicationgatewayprivateendpointconnections + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ApplicationGatewayPrivateEndpointConnectionId{}) +} + +var _ resourceids.ResourceId = &ApplicationGatewayPrivateEndpointConnectionId{} + +// ApplicationGatewayPrivateEndpointConnectionId is a struct representing the Resource ID for a Application Gateway Private Endpoint Connection +type ApplicationGatewayPrivateEndpointConnectionId struct { + SubscriptionId string + ResourceGroupName string + ApplicationGatewayName string + PrivateEndpointConnectionName string +} + +// NewApplicationGatewayPrivateEndpointConnectionID returns a new ApplicationGatewayPrivateEndpointConnectionId struct +func NewApplicationGatewayPrivateEndpointConnectionID(subscriptionId string, resourceGroupName string, applicationGatewayName string, privateEndpointConnectionName string) ApplicationGatewayPrivateEndpointConnectionId { + return ApplicationGatewayPrivateEndpointConnectionId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ApplicationGatewayName: applicationGatewayName, + PrivateEndpointConnectionName: privateEndpointConnectionName, + } +} + +// ParseApplicationGatewayPrivateEndpointConnectionID parses 'input' into a ApplicationGatewayPrivateEndpointConnectionId +func ParseApplicationGatewayPrivateEndpointConnectionID(input string) (*ApplicationGatewayPrivateEndpointConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&ApplicationGatewayPrivateEndpointConnectionId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ApplicationGatewayPrivateEndpointConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseApplicationGatewayPrivateEndpointConnectionIDInsensitively parses 'input' case-insensitively into a ApplicationGatewayPrivateEndpointConnectionId +// note: this method should only be used for API response data and not user input +func ParseApplicationGatewayPrivateEndpointConnectionIDInsensitively(input string) (*ApplicationGatewayPrivateEndpointConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&ApplicationGatewayPrivateEndpointConnectionId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ApplicationGatewayPrivateEndpointConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ApplicationGatewayPrivateEndpointConnectionId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ApplicationGatewayName, ok = input.Parsed["applicationGatewayName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "applicationGatewayName", input) + } + + if id.PrivateEndpointConnectionName, ok = input.Parsed["privateEndpointConnectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "privateEndpointConnectionName", input) + } + + return nil +} + +// ValidateApplicationGatewayPrivateEndpointConnectionID checks that 'input' can be parsed as a Application Gateway Private Endpoint Connection ID +func ValidateApplicationGatewayPrivateEndpointConnectionID(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 := ParseApplicationGatewayPrivateEndpointConnectionID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Application Gateway Private Endpoint Connection ID +func (id ApplicationGatewayPrivateEndpointConnectionId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/applicationGateways/%s/privateEndpointConnections/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ApplicationGatewayName, id.PrivateEndpointConnectionName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Application Gateway Private Endpoint Connection ID +func (id ApplicationGatewayPrivateEndpointConnectionId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticApplicationGateways", "applicationGateways", "applicationGateways"), + resourceids.UserSpecifiedSegment("applicationGatewayName", "applicationGatewayValue"), + resourceids.StaticSegment("staticPrivateEndpointConnections", "privateEndpointConnections", "privateEndpointConnections"), + resourceids.UserSpecifiedSegment("privateEndpointConnectionName", "privateEndpointConnectionValue"), + } +} + +// String returns a human-readable description of this Application Gateway Private Endpoint Connection ID +func (id ApplicationGatewayPrivateEndpointConnectionId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Application Gateway Name: %q", id.ApplicationGatewayName), + fmt.Sprintf("Private Endpoint Connection Name: %q", id.PrivateEndpointConnectionName), + } + return fmt.Sprintf("Application Gateway Private Endpoint Connection (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/id_applicationgatewayprivateendpointconnection_test.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/id_applicationgatewayprivateendpointconnection_test.go new file mode 100644 index 00000000000..89bf57821c8 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/id_applicationgatewayprivateendpointconnection_test.go @@ -0,0 +1,327 @@ +package applicationgatewayprivateendpointconnections + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ApplicationGatewayPrivateEndpointConnectionId{} + +func TestNewApplicationGatewayPrivateEndpointConnectionID(t *testing.T) { + id := NewApplicationGatewayPrivateEndpointConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayValue", "privateEndpointConnectionValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ApplicationGatewayName != "applicationGatewayValue" { + t.Fatalf("Expected %q but got %q for Segment 'ApplicationGatewayName'", id.ApplicationGatewayName, "applicationGatewayValue") + } + + if id.PrivateEndpointConnectionName != "privateEndpointConnectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'PrivateEndpointConnectionName'", id.PrivateEndpointConnectionName, "privateEndpointConnectionValue") + } +} + +func TestFormatApplicationGatewayPrivateEndpointConnectionID(t *testing.T) { + actual := NewApplicationGatewayPrivateEndpointConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayValue", "privateEndpointConnectionValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue/privateEndpointConnections/privateEndpointConnectionValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseApplicationGatewayPrivateEndpointConnectionID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ApplicationGatewayPrivateEndpointConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue/privateEndpointConnections", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue/privateEndpointConnections/privateEndpointConnectionValue", + Expected: &ApplicationGatewayPrivateEndpointConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ApplicationGatewayName: "applicationGatewayValue", + PrivateEndpointConnectionName: "privateEndpointConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue/privateEndpointConnections/privateEndpointConnectionValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseApplicationGatewayPrivateEndpointConnectionID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ApplicationGatewayName != v.Expected.ApplicationGatewayName { + t.Fatalf("Expected %q but got %q for ApplicationGatewayName", v.Expected.ApplicationGatewayName, actual.ApplicationGatewayName) + } + + if actual.PrivateEndpointConnectionName != v.Expected.PrivateEndpointConnectionName { + t.Fatalf("Expected %q but got %q for PrivateEndpointConnectionName", v.Expected.PrivateEndpointConnectionName, actual.PrivateEndpointConnectionName) + } + + } +} + +func TestParseApplicationGatewayPrivateEndpointConnectionIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ApplicationGatewayPrivateEndpointConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnGaTeWaYs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnGaTeWaYs/aPpLiCaTiOnGaTeWaYvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue/privateEndpointConnections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnGaTeWaYs/aPpLiCaTiOnGaTeWaYvAlUe/pRiVaTeEnDpOiNtCoNnEcTiOnS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue/privateEndpointConnections/privateEndpointConnectionValue", + Expected: &ApplicationGatewayPrivateEndpointConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ApplicationGatewayName: "applicationGatewayValue", + PrivateEndpointConnectionName: "privateEndpointConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue/privateEndpointConnections/privateEndpointConnectionValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnGaTeWaYs/aPpLiCaTiOnGaTeWaYvAlUe/pRiVaTeEnDpOiNtCoNnEcTiOnS/pRiVaTeEnDpOiNtCoNnEcTiOnVaLuE", + Expected: &ApplicationGatewayPrivateEndpointConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ApplicationGatewayName: "aPpLiCaTiOnGaTeWaYvAlUe", + PrivateEndpointConnectionName: "pRiVaTeEnDpOiNtCoNnEcTiOnVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnGaTeWaYs/aPpLiCaTiOnGaTeWaYvAlUe/pRiVaTeEnDpOiNtCoNnEcTiOnS/pRiVaTeEnDpOiNtCoNnEcTiOnVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseApplicationGatewayPrivateEndpointConnectionIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ApplicationGatewayName != v.Expected.ApplicationGatewayName { + t.Fatalf("Expected %q but got %q for ApplicationGatewayName", v.Expected.ApplicationGatewayName, actual.ApplicationGatewayName) + } + + if actual.PrivateEndpointConnectionName != v.Expected.PrivateEndpointConnectionName { + t.Fatalf("Expected %q but got %q for PrivateEndpointConnectionName", v.Expected.PrivateEndpointConnectionName, actual.PrivateEndpointConnectionName) + } + + } +} + +func TestSegmentsForApplicationGatewayPrivateEndpointConnectionId(t *testing.T) { + segments := ApplicationGatewayPrivateEndpointConnectionId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ApplicationGatewayPrivateEndpointConnectionId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/method_delete.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/method_delete.go new file mode 100644 index 00000000000..8a25d1654cc --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/method_delete.go @@ -0,0 +1,71 @@ +package applicationgatewayprivateendpointconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c ApplicationGatewayPrivateEndpointConnectionsClient) Delete(ctx context.Context, id ApplicationGatewayPrivateEndpointConnectionId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c ApplicationGatewayPrivateEndpointConnectionsClient) DeleteThenPoll(ctx context.Context, id ApplicationGatewayPrivateEndpointConnectionId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/method_get.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/method_get.go new file mode 100644 index 00000000000..f3f7a21ab28 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/method_get.go @@ -0,0 +1,54 @@ +package applicationgatewayprivateendpointconnections + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ApplicationGatewayPrivateEndpointConnection +} + +// Get ... +func (c ApplicationGatewayPrivateEndpointConnectionsClient) Get(ctx context.Context, id ApplicationGatewayPrivateEndpointConnectionId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ApplicationGatewayPrivateEndpointConnection + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/method_list.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/method_list.go new file mode 100644 index 00000000000..c77aa7c6921 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/method_list.go @@ -0,0 +1,92 @@ +package applicationgatewayprivateendpointconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ApplicationGatewayPrivateEndpointConnection +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []ApplicationGatewayPrivateEndpointConnection +} + +// List ... +func (c ApplicationGatewayPrivateEndpointConnectionsClient) List(ctx context.Context, id ApplicationGatewayId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/privateEndpointConnections", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ApplicationGatewayPrivateEndpointConnection `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c ApplicationGatewayPrivateEndpointConnectionsClient) ListComplete(ctx context.Context, id ApplicationGatewayId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, ApplicationGatewayPrivateEndpointConnectionOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ApplicationGatewayPrivateEndpointConnectionsClient) ListCompleteMatchingPredicate(ctx context.Context, id ApplicationGatewayId, predicate ApplicationGatewayPrivateEndpointConnectionOperationPredicate) (result ListCompleteResult, err error) { + items := make([]ApplicationGatewayPrivateEndpointConnection, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/method_update.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/method_update.go new file mode 100644 index 00000000000..394f02e54dd --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/method_update.go @@ -0,0 +1,75 @@ +package applicationgatewayprivateendpointconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *ApplicationGatewayPrivateEndpointConnection +} + +// Update ... +func (c ApplicationGatewayPrivateEndpointConnectionsClient) Update(ctx context.Context, id ApplicationGatewayPrivateEndpointConnectionId, input ApplicationGatewayPrivateEndpointConnection) (result UpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// UpdateThenPoll performs Update then polls until it's completed +func (c ApplicationGatewayPrivateEndpointConnectionsClient) UpdateThenPoll(ctx context.Context, id ApplicationGatewayPrivateEndpointConnectionId, input ApplicationGatewayPrivateEndpointConnection) error { + result, err := c.Update(ctx, id, input) + if err != nil { + return fmt.Errorf("performing Update: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Update: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationgatewaybackendaddress.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationgatewaybackendaddress.go new file mode 100644 index 00000000000..19262bd584a --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationgatewaybackendaddress.go @@ -0,0 +1,9 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddress struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationgatewaybackendaddresspool.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationgatewaybackendaddresspool.go new file mode 100644 index 00000000000..049337217fe --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationgatewaybackendaddresspool.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationgatewaybackendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationgatewaybackendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..508dc9994b4 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationgatewaybackendaddresspoolpropertiesformat.go @@ -0,0 +1,10 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPoolPropertiesFormat struct { + BackendAddresses *[]ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"` + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationgatewayipconfiguration.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationgatewayipconfiguration.go new file mode 100644 index 00000000000..89d75010a65 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationgatewayipconfiguration.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationgatewayipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationgatewayipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..5d46fc4d14d --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationgatewayipconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationgatewayprivateendpointconnection.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationgatewayprivateendpointconnection.go new file mode 100644 index 00000000000..899ea09f853 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationgatewayprivateendpointconnection.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayPrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationgatewayprivateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationgatewayprivateendpointconnectionproperties.go new file mode 100644 index 00000000000..19f24417e8b --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationgatewayprivateendpointconnectionproperties.go @@ -0,0 +1,11 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..6cfad393dcc --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..f494b4f811b --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_backendaddresspool.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_backendaddresspool.go new file mode 100644 index 00000000000..f5906c781bd --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_backendaddresspool.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_backendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_backendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..d3eb3749cba --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_backendaddresspoolpropertiesformat.go @@ -0,0 +1,19 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPoolPropertiesFormat struct { + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + DrainPeriodInSeconds *int64 `json:"drainPeriodInSeconds,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancerBackendAddresses *[]LoadBalancerBackendAddress `json:"loadBalancerBackendAddresses,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + Location *string `json:"location,omitempty"` + OutboundRule *SubResource `json:"outboundRule,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SyncMode *SyncMode `json:"syncMode,omitempty"` + TunnelInterfaces *[]GatewayLoadBalancerTunnelInterface `json:"tunnelInterfaces,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_customdnsconfigpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_customdnsconfigpropertiesformat.go new file mode 100644 index 00000000000..0e7c2876d57 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_customdnsconfigpropertiesformat.go @@ -0,0 +1,9 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomDnsConfigPropertiesFormat struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_ddossettings.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_ddossettings.go new file mode 100644 index 00000000000..84bb3713a5f --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_ddossettings.go @@ -0,0 +1,9 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettings struct { + DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"` + ProtectionMode *DdosSettingsProtectionMode `json:"protectionMode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_delegation.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_delegation.go new file mode 100644 index 00000000000..db8d3269de6 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_delegation.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Delegation struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceDelegationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_flowlog.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_flowlog.go new file mode 100644 index 00000000000..1222520d55a --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_flowlog.go @@ -0,0 +1,19 @@ +package applicationgatewayprivateendpointconnections + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLog struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FlowLogPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_flowlogformatparameters.go new file mode 100644 index 00000000000..0b6831f6fa6 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_flowlogpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_flowlogpropertiesformat.go new file mode 100644 index 00000000000..922ced2b2f1 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_flowlogpropertiesformat.go @@ -0,0 +1,15 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogPropertiesFormat struct { + Enabled *bool `json:"enabled,omitempty"` + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` + TargetResourceGuid *string `json:"targetResourceGuid,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_frontendipconfiguration.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_frontendipconfiguration.go new file mode 100644 index 00000000000..5d4f44391e7 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_frontendipconfiguration.go @@ -0,0 +1,17 @@ +package applicationgatewayprivateendpointconnections + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_frontendipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_frontendipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..f8184b617b0 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_frontendipconfigurationpropertiesformat.go @@ -0,0 +1,19 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfigurationPropertiesFormat struct { + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + InboundNatPools *[]SubResource `json:"inboundNatPools,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_gatewayloadbalancertunnelinterface.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_gatewayloadbalancertunnelinterface.go new file mode 100644 index 00000000000..d1d69ce0587 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_gatewayloadbalancertunnelinterface.go @@ -0,0 +1,11 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayLoadBalancerTunnelInterface struct { + Identifier *int64 `json:"identifier,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *GatewayLoadBalancerTunnelProtocol `json:"protocol,omitempty"` + Type *GatewayLoadBalancerTunnelInterfaceType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_inboundnatrule.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_inboundnatrule.go new file mode 100644 index 00000000000..a9b0e096bd3 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_inboundnatrule.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundNatRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_inboundnatrulepropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_inboundnatrulepropertiesformat.go new file mode 100644 index 00000000000..30f69829656 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_inboundnatrulepropertiesformat.go @@ -0,0 +1,19 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendIPConfiguration *NetworkInterfaceIPConfiguration `json:"backendIPConfiguration,omitempty"` + BackendPort *int64 `json:"backendPort,omitempty"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + FrontendPortRangeEnd *int64 `json:"frontendPortRangeEnd,omitempty"` + FrontendPortRangeStart *int64 `json:"frontendPortRangeStart,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol *TransportProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_ipconfiguration.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_ipconfiguration.go new file mode 100644 index 00000000000..38591b7aaa2 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_ipconfiguration.go @@ -0,0 +1,11 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_ipconfigurationprofile.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_ipconfigurationprofile.go new file mode 100644 index 00000000000..a118ebdd4e1 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_ipconfigurationprofile.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationProfilePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_ipconfigurationprofilepropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_ipconfigurationprofilepropertiesformat.go new file mode 100644 index 00000000000..75728fa1ebe --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_ipconfigurationprofilepropertiesformat.go @@ -0,0 +1,9 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfilePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_ipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_ipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..b2f70477897 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_ipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_iptag.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_iptag.go new file mode 100644 index 00000000000..c1aef66c21f --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_iptag.go @@ -0,0 +1,9 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPTag struct { + IPTagType *string `json:"ipTagType,omitempty"` + Tag *string `json:"tag,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_loadbalancerbackendaddress.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_loadbalancerbackendaddress.go new file mode 100644 index 00000000000..7c55794d5db --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_loadbalancerbackendaddress.go @@ -0,0 +1,9 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddress struct { + Name *string `json:"name,omitempty"` + Properties *LoadBalancerBackendAddressPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_loadbalancerbackendaddresspropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_loadbalancerbackendaddresspropertiesformat.go new file mode 100644 index 00000000000..786682fa462 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_loadbalancerbackendaddresspropertiesformat.go @@ -0,0 +1,14 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPropertiesFormat struct { + AdminState *LoadBalancerBackendAddressAdminState `json:"adminState,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + InboundNatRulesPortMapping *[]NatRulePortMapping `json:"inboundNatRulesPortMapping,omitempty"` + LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIPConfiguration,omitempty"` + NetworkInterfaceIPConfiguration *SubResource `json:"networkInterfaceIPConfiguration,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_natgateway.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_natgateway.go new file mode 100644 index 00000000000..f7258d97962 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_natgateway.go @@ -0,0 +1,20 @@ +package applicationgatewayprivateendpointconnections + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"` + Sku *NatGatewaySku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_natgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_natgatewaypropertiesformat.go new file mode 100644 index 00000000000..7384cd2e1a6 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_natgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayPropertiesFormat struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]SubResource `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_natgatewaysku.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_natgatewaysku.go new file mode 100644 index 00000000000..17af8527640 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_natgatewaysku.go @@ -0,0 +1,8 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySku struct { + Name *NatGatewaySkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_natruleportmapping.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_natruleportmapping.go new file mode 100644 index 00000000000..d1f6b522fcc --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_natruleportmapping.go @@ -0,0 +1,10 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulePortMapping struct { + BackendPort *int64 `json:"backendPort,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + InboundNatRuleName *string `json:"inboundNatRuleName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterface.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterface.go new file mode 100644 index 00000000000..27dd4a4a08a --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterface.go @@ -0,0 +1,19 @@ +package applicationgatewayprivateendpointconnections + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterface struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfacePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterfacednssettings.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterfacednssettings.go new file mode 100644 index 00000000000..6b7723bb374 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterfacednssettings.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceDnsSettings struct { + AppliedDnsServers *[]string `json:"appliedDnsServers,omitempty"` + DnsServers *[]string `json:"dnsServers,omitempty"` + InternalDnsNameLabel *string `json:"internalDnsNameLabel,omitempty"` + InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty"` + InternalFqdn *string `json:"internalFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterfaceipconfiguration.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterfaceipconfiguration.go new file mode 100644 index 00000000000..5b9d0f918bf --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterfaceipconfiguration.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go new file mode 100644 index 00000000000..fc79de05a6f --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go @@ -0,0 +1,10 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties struct { + Fqdns *[]string `json:"fqdns,omitempty"` + GroupId *string `json:"groupId,omitempty"` + RequiredMemberName *string `json:"requiredMemberName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterfaceipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterfaceipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..3bc2704b42e --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterfaceipconfigurationpropertiesformat.go @@ -0,0 +1,22 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPropertiesFormat struct { + ApplicationGatewayBackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"applicationGatewayBackendAddressPools,omitempty"` + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + LoadBalancerBackendAddressPools *[]BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"` + LoadBalancerInboundNatRules *[]InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressPrefixLength *int64 `json:"privateIPAddressPrefixLength,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + PrivateLinkConnectionProperties *NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties `json:"privateLinkConnectionProperties,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` + VirtualNetworkTaps *[]VirtualNetworkTap `json:"virtualNetworkTaps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterfacepropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterfacepropertiesformat.go new file mode 100644 index 00000000000..4b7b529ab7d --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterfacepropertiesformat.go @@ -0,0 +1,29 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfacePropertiesFormat struct { + AuxiliaryMode *NetworkInterfaceAuxiliaryMode `json:"auxiliaryMode,omitempty"` + AuxiliarySku *NetworkInterfaceAuxiliarySku `json:"auxiliarySku,omitempty"` + DisableTcpStateTracking *bool `json:"disableTcpStateTracking,omitempty"` + DnsSettings *NetworkInterfaceDnsSettings `json:"dnsSettings,omitempty"` + DscpConfiguration *SubResource `json:"dscpConfiguration,omitempty"` + EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"` + EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"` + HostedWorkloads *[]string `json:"hostedWorkloads,omitempty"` + IPConfigurations *[]NetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + MacAddress *string `json:"macAddress,omitempty"` + MigrationPhase *NetworkInterfaceMigrationPhase `json:"migrationPhase,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + NicType *NetworkInterfaceNicType `json:"nicType,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkService *PrivateLinkService `json:"privateLinkService,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + TapConfigurations *[]NetworkInterfaceTapConfiguration `json:"tapConfigurations,omitempty"` + VirtualMachine *SubResource `json:"virtualMachine,omitempty"` + VnetEncryptionSupported *bool `json:"vnetEncryptionSupported,omitempty"` + WorkloadType *string `json:"workloadType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterfacetapconfiguration.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterfacetapconfiguration.go new file mode 100644 index 00000000000..54a119f8358 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterfacetapconfiguration.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceTapConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterfacetapconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterfacetapconfigurationpropertiesformat.go new file mode 100644 index 00000000000..2812f9ea959 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networkinterfacetapconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualNetworkTap *VirtualNetworkTap `json:"virtualNetworkTap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networksecuritygroup.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networksecuritygroup.go new file mode 100644 index 00000000000..cb2c6128022 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networksecuritygroup.go @@ -0,0 +1,14 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networksecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networksecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..2ec03e22f7c --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_networksecuritygrouppropertiesformat.go @@ -0,0 +1,15 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupPropertiesFormat struct { + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + FlowLogs *[]FlowLog `json:"flowLogs,omitempty"` + FlushConnection *bool `json:"flushConnection,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privateendpoint.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privateendpoint.go new file mode 100644 index 00000000000..c59c28f78d1 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privateendpoint.go @@ -0,0 +1,19 @@ +package applicationgatewayprivateendpointconnections + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpoint struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privateendpointconnection.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privateendpointconnection.go new file mode 100644 index 00000000000..ad89494737c --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privateendpointconnection.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privateendpointconnectionproperties.go new file mode 100644 index 00000000000..f1877976742 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privateendpointconnectionproperties.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateEndpointLocation *string `json:"privateEndpointLocation,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privateendpointipconfiguration.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privateendpointipconfiguration.go new file mode 100644 index 00000000000..bd3c50f01ac --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privateendpointipconfiguration.go @@ -0,0 +1,11 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privateendpointipconfigurationproperties.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privateendpointipconfigurationproperties.go new file mode 100644 index 00000000000..f3ec0dcc86e --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privateendpointipconfigurationproperties.go @@ -0,0 +1,10 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfigurationProperties struct { + GroupId *string `json:"groupId,omitempty"` + MemberName *string `json:"memberName,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privateendpointproperties.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privateendpointproperties.go new file mode 100644 index 00000000000..d7be5354bcd --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privateendpointproperties.go @@ -0,0 +1,16 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointProperties struct { + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + CustomDnsConfigs *[]CustomDnsConfigPropertiesFormat `json:"customDnsConfigs,omitempty"` + CustomNetworkInterfaceName *string `json:"customNetworkInterfaceName,omitempty"` + IPConfigurations *[]PrivateEndpointIPConfiguration `json:"ipConfigurations,omitempty"` + ManualPrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"manualPrivateLinkServiceConnections,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"privateLinkServiceConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privatelinkservice.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privatelinkservice.go new file mode 100644 index 00000000000..78a6c7ebba8 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privatelinkservice.go @@ -0,0 +1,19 @@ +package applicationgatewayprivateendpointconnections + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkService struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privatelinkserviceconnection.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privatelinkserviceconnection.go new file mode 100644 index 00000000000..5cc8a8e4dbf --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privatelinkserviceconnection.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privatelinkserviceconnectionproperties.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privatelinkserviceconnectionproperties.go new file mode 100644 index 00000000000..461fb1081a9 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privatelinkserviceconnectionproperties.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionProperties struct { + GroupIds *[]string `json:"groupIds,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + PrivateLinkServiceId *string `json:"privateLinkServiceId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestMessage *string `json:"requestMessage,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privatelinkserviceconnectionstate.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privatelinkserviceconnectionstate.go new file mode 100644 index 00000000000..6be96efd9df --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privatelinkserviceconnectionstate.go @@ -0,0 +1,10 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionState struct { + ActionsRequired *string `json:"actionsRequired,omitempty"` + Description *string `json:"description,omitempty"` + Status *string `json:"status,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privatelinkserviceipconfiguration.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privatelinkserviceipconfiguration.go new file mode 100644 index 00000000000..3c19c2d4de4 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privatelinkserviceipconfiguration.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privatelinkserviceipconfigurationproperties.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privatelinkserviceipconfigurationproperties.go new file mode 100644 index 00000000000..c81dae99663 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privatelinkserviceipconfigurationproperties.go @@ -0,0 +1,13 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privatelinkserviceproperties.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privatelinkserviceproperties.go new file mode 100644 index 00000000000..dc3f962814c --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_privatelinkserviceproperties.go @@ -0,0 +1,17 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceProperties struct { + Alias *string `json:"alias,omitempty"` + AutoApproval *ResourceSet `json:"autoApproval,omitempty"` + EnableProxyProtocol *bool `json:"enableProxyProtocol,omitempty"` + Fqdns *[]string `json:"fqdns,omitempty"` + IPConfigurations *[]PrivateLinkServiceIPConfiguration `json:"ipConfigurations,omitempty"` + LoadBalancerFrontendIPConfigurations *[]FrontendIPConfiguration `json:"loadBalancerFrontendIpConfigurations,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Visibility *ResourceSet `json:"visibility,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_publicipaddress.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_publicipaddress.go new file mode 100644 index 00000000000..e89345d55bc --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_publicipaddress.go @@ -0,0 +1,22 @@ +package applicationgatewayprivateendpointconnections + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddress struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PublicIPAddressPropertiesFormat `json:"properties,omitempty"` + Sku *PublicIPAddressSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_publicipaddressdnssettings.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_publicipaddressdnssettings.go new file mode 100644 index 00000000000..38e3265c5cf --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_publicipaddressdnssettings.go @@ -0,0 +1,11 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressDnsSettings struct { + DomainNameLabel *string `json:"domainNameLabel,omitempty"` + DomainNameLabelScope *PublicIPAddressDnsSettingsDomainNameLabelScope `json:"domainNameLabelScope,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + ReverseFqdn *string `json:"reverseFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_publicipaddresspropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_publicipaddresspropertiesformat.go new file mode 100644 index 00000000000..f699284c895 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_publicipaddresspropertiesformat.go @@ -0,0 +1,23 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressPropertiesFormat struct { + DdosSettings *DdosSettings `json:"ddosSettings,omitempty"` + DeleteOption *DeleteOptions `json:"deleteOption,omitempty"` + DnsSettings *PublicIPAddressDnsSettings `json:"dnsSettings,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty"` + IPTags *[]IPTag `json:"ipTags,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + LinkedPublicIPAddress *PublicIPAddress `json:"linkedPublicIPAddress,omitempty"` + MigrationPhase *PublicIPAddressMigrationPhase `json:"migrationPhase,omitempty"` + NatGateway *NatGateway `json:"natGateway,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"` + PublicIPAllocationMethod *IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServicePublicIPAddress *PublicIPAddress `json:"servicePublicIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_publicipaddresssku.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_publicipaddresssku.go new file mode 100644 index 00000000000..b74d0311a75 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_publicipaddresssku.go @@ -0,0 +1,9 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressSku struct { + Name *PublicIPAddressSkuName `json:"name,omitempty"` + Tier *PublicIPAddressSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_resourcenavigationlink.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_resourcenavigationlink.go new file mode 100644 index 00000000000..0274f951e3c --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_resourcenavigationlink.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ResourceNavigationLinkFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_resourcenavigationlinkformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_resourcenavigationlinkformat.go new file mode 100644 index 00000000000..4182988a892 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_resourcenavigationlinkformat.go @@ -0,0 +1,10 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLinkFormat struct { + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_resourceset.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_resourceset.go new file mode 100644 index 00000000000..075d9853046 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_resourceset.go @@ -0,0 +1,8 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceSet struct { + Subscriptions *[]string `json:"subscriptions,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..2b030c17554 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_route.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_route.go new file mode 100644 index 00000000000..939f9379822 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_route.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Route struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RoutePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_routepropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_routepropertiesformat.go new file mode 100644 index 00000000000..4afa3c6bed4 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_routepropertiesformat.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutePropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + HasBgpOverride *bool `json:"hasBgpOverride,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + NextHopType RouteNextHopType `json:"nextHopType"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_routetable.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_routetable.go new file mode 100644 index 00000000000..8a1cf00052b --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_routetable.go @@ -0,0 +1,14 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTable struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteTablePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_routetablepropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_routetablepropertiesformat.go new file mode 100644 index 00000000000..c3a2020ea09 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_routetablepropertiesformat.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTablePropertiesFormat struct { + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Routes *[]Route `json:"routes,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_securityrule.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_securityrule.go new file mode 100644 index 00000000000..e892509d682 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_securityrule.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_securityrulepropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_securityrulepropertiesformat.go new file mode 100644 index 00000000000..ad268f42e3d --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_securityrulepropertiesformat.go @@ -0,0 +1,23 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulePropertiesFormat struct { + Access SecurityRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction SecurityRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_serviceassociationlink.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_serviceassociationlink.go new file mode 100644 index 00000000000..208a786f7a0 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_serviceassociationlink.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceAssociationLinkPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_serviceassociationlinkpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_serviceassociationlinkpropertiesformat.go new file mode 100644 index 00000000000..eaf8e403c15 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_serviceassociationlinkpropertiesformat.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLinkPropertiesFormat struct { + AllowDelete *bool `json:"allowDelete,omitempty"` + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + Locations *[]string `json:"locations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_servicedelegationpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_servicedelegationpropertiesformat.go new file mode 100644 index 00000000000..a8da5cf7bca --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_servicedelegationpropertiesformat.go @@ -0,0 +1,10 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceDelegationPropertiesFormat struct { + Actions *[]string `json:"actions,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_serviceendpointpolicy.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_serviceendpointpolicy.go new file mode 100644 index 00000000000..0871d765423 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_serviceendpointpolicy.go @@ -0,0 +1,15 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Kind *string `json:"kind,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_serviceendpointpolicydefinition.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_serviceendpointpolicydefinition.go new file mode 100644 index 00000000000..9051f5afd03 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_serviceendpointpolicydefinition.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinition struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_serviceendpointpolicydefinitionpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_serviceendpointpolicydefinitionpropertiesformat.go new file mode 100644 index 00000000000..c8f3720498a --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_serviceendpointpolicydefinitionpropertiesformat.go @@ -0,0 +1,11 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionPropertiesFormat struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` + ServiceResources *[]string `json:"serviceResources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_serviceendpointpolicypropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_serviceendpointpolicypropertiesformat.go new file mode 100644 index 00000000000..27a0c5e36ce --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_serviceendpointpolicypropertiesformat.go @@ -0,0 +1,13 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyPropertiesFormat struct { + ContextualServiceEndpointPolicies *[]string `json:"contextualServiceEndpointPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServiceAlias *string `json:"serviceAlias,omitempty"` + ServiceEndpointPolicyDefinitions *[]ServiceEndpointPolicyDefinition `json:"serviceEndpointPolicyDefinitions,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_serviceendpointpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_serviceendpointpropertiesformat.go new file mode 100644 index 00000000000..5deea5147b0 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_serviceendpointpropertiesformat.go @@ -0,0 +1,11 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPropertiesFormat struct { + Locations *[]string `json:"locations,omitempty"` + NetworkIdentifier *SubResource `json:"networkIdentifier,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_subnet.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_subnet.go new file mode 100644 index 00000000000..315bdbd9d59 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_subnet.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Subnet struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SubnetPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_subnetpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_subnetpropertiesformat.go new file mode 100644 index 00000000000..488c645e1b3 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_subnetpropertiesformat.go @@ -0,0 +1,28 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + ApplicationGatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"applicationGatewayIPConfigurations,omitempty"` + DefaultOutboundAccess *bool `json:"defaultOutboundAccess,omitempty"` + Delegations *[]Delegation `json:"delegations,omitempty"` + IPAllocations *[]SubResource `json:"ipAllocations,omitempty"` + IPConfigurationProfiles *[]IPConfigurationProfile `json:"ipConfigurationProfiles,omitempty"` + IPConfigurations *[]IPConfiguration `json:"ipConfigurations,omitempty"` + NatGateway *SubResource `json:"natGateway,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + PrivateEndpointNetworkPolicies *VirtualNetworkPrivateEndpointNetworkPolicies `json:"privateEndpointNetworkPolicies,omitempty"` + PrivateEndpoints *[]PrivateEndpoint `json:"privateEndpoints,omitempty"` + PrivateLinkServiceNetworkPolicies *VirtualNetworkPrivateLinkServiceNetworkPolicies `json:"privateLinkServiceNetworkPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Purpose *string `json:"purpose,omitempty"` + ResourceNavigationLinks *[]ResourceNavigationLink `json:"resourceNavigationLinks,omitempty"` + RouteTable *RouteTable `json:"routeTable,omitempty"` + ServiceAssociationLinks *[]ServiceAssociationLink `json:"serviceAssociationLinks,omitempty"` + ServiceEndpointPolicies *[]ServiceEndpointPolicy `json:"serviceEndpointPolicies,omitempty"` + ServiceEndpoints *[]ServiceEndpointPropertiesFormat `json:"serviceEndpoints,omitempty"` + SharingScope *SharingScope `json:"sharingScope,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_subresource.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_subresource.go new file mode 100644 index 00000000000..7cea1d49c02 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_subresource.go @@ -0,0 +1,8 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..860948a52b3 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..92e4c14749f --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_virtualnetworktap.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_virtualnetworktap.go new file mode 100644 index 00000000000..7c49436256c --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_virtualnetworktap.go @@ -0,0 +1,14 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkTapPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_virtualnetworktappropertiesformat.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_virtualnetworktappropertiesformat.go new file mode 100644 index 00000000000..131405acb48 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/model_virtualnetworktappropertiesformat.go @@ -0,0 +1,13 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapPropertiesFormat struct { + DestinationLoadBalancerFrontEndIPConfiguration *FrontendIPConfiguration `json:"destinationLoadBalancerFrontEndIPConfiguration,omitempty"` + DestinationNetworkInterfaceIPConfiguration *NetworkInterfaceIPConfiguration `json:"destinationNetworkInterfaceIPConfiguration,omitempty"` + DestinationPort *int64 `json:"destinationPort,omitempty"` + NetworkInterfaceTapConfigurations *[]NetworkInterfaceTapConfiguration `json:"networkInterfaceTapConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/predicates.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/predicates.go new file mode 100644 index 00000000000..46757c5239b --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/predicates.go @@ -0,0 +1,32 @@ +package applicationgatewayprivateendpointconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPrivateEndpointConnectionOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p ApplicationGatewayPrivateEndpointConnectionOperationPredicate) Matches(input ApplicationGatewayPrivateEndpointConnection) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/version.go b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/version.go new file mode 100644 index 00000000000..daa7fb1a03b --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections/version.go @@ -0,0 +1,12 @@ +package applicationgatewayprivateendpointconnections + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/applicationgatewayprivateendpointconnections/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/README.md b/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/README.md new file mode 100644 index 00000000000..fd1f67f6892 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/README.md @@ -0,0 +1,37 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources` Documentation + +The `applicationgatewayprivatelinkresources` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources" +``` + + +### Client Initialization + +```go +client := applicationgatewayprivatelinkresources.NewApplicationGatewayPrivateLinkResourcesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ApplicationGatewayPrivateLinkResourcesClient.List` + +```go +ctx := context.TODO() +id := applicationgatewayprivatelinkresources.NewApplicationGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayValue") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/client.go b/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/client.go new file mode 100644 index 00000000000..9e064641526 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/client.go @@ -0,0 +1,26 @@ +package applicationgatewayprivatelinkresources + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPrivateLinkResourcesClient struct { + Client *resourcemanager.Client +} + +func NewApplicationGatewayPrivateLinkResourcesClientWithBaseURI(sdkApi sdkEnv.Api) (*ApplicationGatewayPrivateLinkResourcesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "applicationgatewayprivatelinkresources", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ApplicationGatewayPrivateLinkResourcesClient: %+v", err) + } + + return &ApplicationGatewayPrivateLinkResourcesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/id_applicationgateway.go b/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/id_applicationgateway.go new file mode 100644 index 00000000000..f86cb06512e --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/id_applicationgateway.go @@ -0,0 +1,130 @@ +package applicationgatewayprivatelinkresources + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ApplicationGatewayId{}) +} + +var _ resourceids.ResourceId = &ApplicationGatewayId{} + +// ApplicationGatewayId is a struct representing the Resource ID for a Application Gateway +type ApplicationGatewayId struct { + SubscriptionId string + ResourceGroupName string + ApplicationGatewayName string +} + +// NewApplicationGatewayID returns a new ApplicationGatewayId struct +func NewApplicationGatewayID(subscriptionId string, resourceGroupName string, applicationGatewayName string) ApplicationGatewayId { + return ApplicationGatewayId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ApplicationGatewayName: applicationGatewayName, + } +} + +// ParseApplicationGatewayID parses 'input' into a ApplicationGatewayId +func ParseApplicationGatewayID(input string) (*ApplicationGatewayId, error) { + parser := resourceids.NewParserFromResourceIdType(&ApplicationGatewayId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ApplicationGatewayId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseApplicationGatewayIDInsensitively parses 'input' case-insensitively into a ApplicationGatewayId +// note: this method should only be used for API response data and not user input +func ParseApplicationGatewayIDInsensitively(input string) (*ApplicationGatewayId, error) { + parser := resourceids.NewParserFromResourceIdType(&ApplicationGatewayId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ApplicationGatewayId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ApplicationGatewayId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ApplicationGatewayName, ok = input.Parsed["applicationGatewayName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "applicationGatewayName", input) + } + + return nil +} + +// ValidateApplicationGatewayID checks that 'input' can be parsed as a Application Gateway ID +func ValidateApplicationGatewayID(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 := ParseApplicationGatewayID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Application Gateway ID +func (id ApplicationGatewayId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/applicationGateways/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ApplicationGatewayName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Application Gateway ID +func (id ApplicationGatewayId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticApplicationGateways", "applicationGateways", "applicationGateways"), + resourceids.UserSpecifiedSegment("applicationGatewayName", "applicationGatewayValue"), + } +} + +// String returns a human-readable description of this Application Gateway ID +func (id ApplicationGatewayId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Application Gateway Name: %q", id.ApplicationGatewayName), + } + return fmt.Sprintf("Application Gateway (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/id_applicationgateway_test.go b/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/id_applicationgateway_test.go new file mode 100644 index 00000000000..5c994f79587 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/id_applicationgateway_test.go @@ -0,0 +1,282 @@ +package applicationgatewayprivatelinkresources + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ApplicationGatewayId{} + +func TestNewApplicationGatewayID(t *testing.T) { + id := NewApplicationGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ApplicationGatewayName != "applicationGatewayValue" { + t.Fatalf("Expected %q but got %q for Segment 'ApplicationGatewayName'", id.ApplicationGatewayName, "applicationGatewayValue") + } +} + +func TestFormatApplicationGatewayID(t *testing.T) { + actual := NewApplicationGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseApplicationGatewayID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ApplicationGatewayId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue", + Expected: &ApplicationGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ApplicationGatewayName: "applicationGatewayValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseApplicationGatewayID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ApplicationGatewayName != v.Expected.ApplicationGatewayName { + t.Fatalf("Expected %q but got %q for ApplicationGatewayName", v.Expected.ApplicationGatewayName, actual.ApplicationGatewayName) + } + + } +} + +func TestParseApplicationGatewayIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ApplicationGatewayId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnGaTeWaYs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue", + Expected: &ApplicationGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ApplicationGatewayName: "applicationGatewayValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnGaTeWaYs/aPpLiCaTiOnGaTeWaYvAlUe", + Expected: &ApplicationGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ApplicationGatewayName: "aPpLiCaTiOnGaTeWaYvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnGaTeWaYs/aPpLiCaTiOnGaTeWaYvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseApplicationGatewayIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ApplicationGatewayName != v.Expected.ApplicationGatewayName { + t.Fatalf("Expected %q but got %q for ApplicationGatewayName", v.Expected.ApplicationGatewayName, actual.ApplicationGatewayName) + } + + } +} + +func TestSegmentsForApplicationGatewayId(t *testing.T) { + segments := ApplicationGatewayId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ApplicationGatewayId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/method_list.go b/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/method_list.go new file mode 100644 index 00000000000..e50df050c40 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/method_list.go @@ -0,0 +1,92 @@ +package applicationgatewayprivatelinkresources + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ApplicationGatewayPrivateLinkResource +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []ApplicationGatewayPrivateLinkResource +} + +// List ... +func (c ApplicationGatewayPrivateLinkResourcesClient) List(ctx context.Context, id ApplicationGatewayId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/privateLinkResources", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ApplicationGatewayPrivateLinkResource `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c ApplicationGatewayPrivateLinkResourcesClient) ListComplete(ctx context.Context, id ApplicationGatewayId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, ApplicationGatewayPrivateLinkResourceOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ApplicationGatewayPrivateLinkResourcesClient) ListCompleteMatchingPredicate(ctx context.Context, id ApplicationGatewayId, predicate ApplicationGatewayPrivateLinkResourceOperationPredicate) (result ListCompleteResult, err error) { + items := make([]ApplicationGatewayPrivateLinkResource, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/model_applicationgatewayprivatelinkresource.go b/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/model_applicationgatewayprivatelinkresource.go new file mode 100644 index 00000000000..c3c4b5afa06 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/model_applicationgatewayprivatelinkresource.go @@ -0,0 +1,12 @@ +package applicationgatewayprivatelinkresources + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPrivateLinkResource struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayPrivateLinkResourceProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/model_applicationgatewayprivatelinkresourceproperties.go b/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/model_applicationgatewayprivatelinkresourceproperties.go new file mode 100644 index 00000000000..0f4b9748324 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/model_applicationgatewayprivatelinkresourceproperties.go @@ -0,0 +1,10 @@ +package applicationgatewayprivatelinkresources + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPrivateLinkResourceProperties struct { + GroupId *string `json:"groupId,omitempty"` + RequiredMembers *[]string `json:"requiredMembers,omitempty"` + RequiredZoneNames *[]string `json:"requiredZoneNames,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/predicates.go b/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/predicates.go new file mode 100644 index 00000000000..e93c21bb751 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/predicates.go @@ -0,0 +1,32 @@ +package applicationgatewayprivatelinkresources + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPrivateLinkResourceOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p ApplicationGatewayPrivateLinkResourceOperationPredicate) Matches(input ApplicationGatewayPrivateLinkResource) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/version.go b/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/version.go new file mode 100644 index 00000000000..11d7217b947 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources/version.go @@ -0,0 +1,12 @@ +package applicationgatewayprivatelinkresources + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/applicationgatewayprivatelinkresources/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/README.md b/resource-manager/network/2024-01-01/applicationgateways/README.md new file mode 100644 index 00000000000..93718314104 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/README.md @@ -0,0 +1,287 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/applicationgateways` Documentation + +The `applicationgateways` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/applicationgateways" +``` + + +### Client Initialization + +```go +client := applicationgateways.NewApplicationGatewaysClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ApplicationGatewaysClient.BackendHealth` + +```go +ctx := context.TODO() +id := applicationgateways.NewApplicationGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayValue") + +if err := client.BackendHealthThenPoll(ctx, id, applicationgateways.DefaultBackendHealthOperationOptions()); err != nil { + // handle the error +} +``` + + +### Example Usage: `ApplicationGatewaysClient.BackendHealthOnDemand` + +```go +ctx := context.TODO() +id := applicationgateways.NewApplicationGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayValue") + +payload := applicationgateways.ApplicationGatewayOnDemandProbe{ + // ... +} + + +if err := client.BackendHealthOnDemandThenPoll(ctx, id, payload, applicationgateways.DefaultBackendHealthOnDemandOperationOptions()); err != nil { + // handle the error +} +``` + + +### Example Usage: `ApplicationGatewaysClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := applicationgateways.NewApplicationGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayValue") + +payload := applicationgateways.ApplicationGateway{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `ApplicationGatewaysClient.Delete` + +```go +ctx := context.TODO() +id := applicationgateways.NewApplicationGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `ApplicationGatewaysClient.Get` + +```go +ctx := context.TODO() +id := applicationgateways.NewApplicationGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ApplicationGatewaysClient.GetSslPredefinedPolicy` + +```go +ctx := context.TODO() +id := applicationgateways.NewPredefinedPolicyID("12345678-1234-9876-4563-123456789012", "predefinedPolicyValue") + +read, err := client.GetSslPredefinedPolicy(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ApplicationGatewaysClient.List` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `ApplicationGatewaysClient.ListAll` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.ListAll(ctx, id)` can be used to do batched pagination +items, err := client.ListAllComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `ApplicationGatewaysClient.ListAvailableRequestHeaders` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +read, err := client.ListAvailableRequestHeaders(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ApplicationGatewaysClient.ListAvailableResponseHeaders` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +read, err := client.ListAvailableResponseHeaders(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ApplicationGatewaysClient.ListAvailableServerVariables` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +read, err := client.ListAvailableServerVariables(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ApplicationGatewaysClient.ListAvailableSslOptions` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +read, err := client.ListAvailableSslOptions(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ApplicationGatewaysClient.ListAvailableSslPredefinedPolicies` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.ListAvailableSslPredefinedPolicies(ctx, id)` can be used to do batched pagination +items, err := client.ListAvailableSslPredefinedPoliciesComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `ApplicationGatewaysClient.ListAvailableWafRuleSets` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +read, err := client.ListAvailableWafRuleSets(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ApplicationGatewaysClient.Start` + +```go +ctx := context.TODO() +id := applicationgateways.NewApplicationGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayValue") + +if err := client.StartThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `ApplicationGatewaysClient.Stop` + +```go +ctx := context.TODO() +id := applicationgateways.NewApplicationGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayValue") + +if err := client.StopThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `ApplicationGatewaysClient.UpdateTags` + +```go +ctx := context.TODO() +id := applicationgateways.NewApplicationGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayValue") + +payload := applicationgateways.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/applicationgateways/client.go b/resource-manager/network/2024-01-01/applicationgateways/client.go new file mode 100644 index 00000000000..9608bf47106 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/client.go @@ -0,0 +1,26 @@ +package applicationgateways + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewaysClient struct { + Client *resourcemanager.Client +} + +func NewApplicationGatewaysClientWithBaseURI(sdkApi sdkEnv.Api) (*ApplicationGatewaysClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "applicationgateways", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ApplicationGatewaysClient: %+v", err) + } + + return &ApplicationGatewaysClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/constants.go b/resource-manager/network/2024-01-01/applicationgateways/constants.go new file mode 100644 index 00000000000..449167f504a --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/constants.go @@ -0,0 +1,2207 @@ +package applicationgateways + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendHealthServerHealth string + +const ( + ApplicationGatewayBackendHealthServerHealthDown ApplicationGatewayBackendHealthServerHealth = "Down" + ApplicationGatewayBackendHealthServerHealthDraining ApplicationGatewayBackendHealthServerHealth = "Draining" + ApplicationGatewayBackendHealthServerHealthPartial ApplicationGatewayBackendHealthServerHealth = "Partial" + ApplicationGatewayBackendHealthServerHealthUnknown ApplicationGatewayBackendHealthServerHealth = "Unknown" + ApplicationGatewayBackendHealthServerHealthUp ApplicationGatewayBackendHealthServerHealth = "Up" +) + +func PossibleValuesForApplicationGatewayBackendHealthServerHealth() []string { + return []string{ + string(ApplicationGatewayBackendHealthServerHealthDown), + string(ApplicationGatewayBackendHealthServerHealthDraining), + string(ApplicationGatewayBackendHealthServerHealthPartial), + string(ApplicationGatewayBackendHealthServerHealthUnknown), + string(ApplicationGatewayBackendHealthServerHealthUp), + } +} + +func (s *ApplicationGatewayBackendHealthServerHealth) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayBackendHealthServerHealth(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayBackendHealthServerHealth(input string) (*ApplicationGatewayBackendHealthServerHealth, error) { + vals := map[string]ApplicationGatewayBackendHealthServerHealth{ + "down": ApplicationGatewayBackendHealthServerHealthDown, + "draining": ApplicationGatewayBackendHealthServerHealthDraining, + "partial": ApplicationGatewayBackendHealthServerHealthPartial, + "unknown": ApplicationGatewayBackendHealthServerHealthUnknown, + "up": ApplicationGatewayBackendHealthServerHealthUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayBackendHealthServerHealth(input) + return &out, nil +} + +type ApplicationGatewayClientRevocationOptions string + +const ( + ApplicationGatewayClientRevocationOptionsNone ApplicationGatewayClientRevocationOptions = "None" + ApplicationGatewayClientRevocationOptionsOCSP ApplicationGatewayClientRevocationOptions = "OCSP" +) + +func PossibleValuesForApplicationGatewayClientRevocationOptions() []string { + return []string{ + string(ApplicationGatewayClientRevocationOptionsNone), + string(ApplicationGatewayClientRevocationOptionsOCSP), + } +} + +func (s *ApplicationGatewayClientRevocationOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayClientRevocationOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayClientRevocationOptions(input string) (*ApplicationGatewayClientRevocationOptions, error) { + vals := map[string]ApplicationGatewayClientRevocationOptions{ + "none": ApplicationGatewayClientRevocationOptionsNone, + "ocsp": ApplicationGatewayClientRevocationOptionsOCSP, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayClientRevocationOptions(input) + return &out, nil +} + +type ApplicationGatewayCookieBasedAffinity string + +const ( + ApplicationGatewayCookieBasedAffinityDisabled ApplicationGatewayCookieBasedAffinity = "Disabled" + ApplicationGatewayCookieBasedAffinityEnabled ApplicationGatewayCookieBasedAffinity = "Enabled" +) + +func PossibleValuesForApplicationGatewayCookieBasedAffinity() []string { + return []string{ + string(ApplicationGatewayCookieBasedAffinityDisabled), + string(ApplicationGatewayCookieBasedAffinityEnabled), + } +} + +func (s *ApplicationGatewayCookieBasedAffinity) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayCookieBasedAffinity(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayCookieBasedAffinity(input string) (*ApplicationGatewayCookieBasedAffinity, error) { + vals := map[string]ApplicationGatewayCookieBasedAffinity{ + "disabled": ApplicationGatewayCookieBasedAffinityDisabled, + "enabled": ApplicationGatewayCookieBasedAffinityEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayCookieBasedAffinity(input) + return &out, nil +} + +type ApplicationGatewayCustomErrorStatusCode string + +const ( + ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveHundred ApplicationGatewayCustomErrorStatusCode = "HttpStatus500" + ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveZeroFour ApplicationGatewayCustomErrorStatusCode = "HttpStatus504" + ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveZeroThree ApplicationGatewayCustomErrorStatusCode = "HttpStatus503" + ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveZeroTwo ApplicationGatewayCustomErrorStatusCode = "HttpStatus502" + ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourHundred ApplicationGatewayCustomErrorStatusCode = "HttpStatus400" + ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroEight ApplicationGatewayCustomErrorStatusCode = "HttpStatus408" + ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroFive ApplicationGatewayCustomErrorStatusCode = "HttpStatus405" + ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroFour ApplicationGatewayCustomErrorStatusCode = "HttpStatus404" + ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroThree ApplicationGatewayCustomErrorStatusCode = "HttpStatus403" +) + +func PossibleValuesForApplicationGatewayCustomErrorStatusCode() []string { + return []string{ + string(ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveHundred), + string(ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveZeroFour), + string(ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveZeroThree), + string(ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveZeroTwo), + string(ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourHundred), + string(ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroEight), + string(ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroFive), + string(ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroFour), + string(ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroThree), + } +} + +func (s *ApplicationGatewayCustomErrorStatusCode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayCustomErrorStatusCode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayCustomErrorStatusCode(input string) (*ApplicationGatewayCustomErrorStatusCode, error) { + vals := map[string]ApplicationGatewayCustomErrorStatusCode{ + "httpstatus500": ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveHundred, + "httpstatus504": ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveZeroFour, + "httpstatus503": ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveZeroThree, + "httpstatus502": ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveZeroTwo, + "httpstatus400": ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourHundred, + "httpstatus408": ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroEight, + "httpstatus405": ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroFive, + "httpstatus404": ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroFour, + "httpstatus403": ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroThree, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayCustomErrorStatusCode(input) + return &out, nil +} + +type ApplicationGatewayFirewallMode string + +const ( + ApplicationGatewayFirewallModeDetection ApplicationGatewayFirewallMode = "Detection" + ApplicationGatewayFirewallModePrevention ApplicationGatewayFirewallMode = "Prevention" +) + +func PossibleValuesForApplicationGatewayFirewallMode() []string { + return []string{ + string(ApplicationGatewayFirewallModeDetection), + string(ApplicationGatewayFirewallModePrevention), + } +} + +func (s *ApplicationGatewayFirewallMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayFirewallMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayFirewallMode(input string) (*ApplicationGatewayFirewallMode, error) { + vals := map[string]ApplicationGatewayFirewallMode{ + "detection": ApplicationGatewayFirewallModeDetection, + "prevention": ApplicationGatewayFirewallModePrevention, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayFirewallMode(input) + return &out, nil +} + +type ApplicationGatewayLoadDistributionAlgorithm string + +const ( + ApplicationGatewayLoadDistributionAlgorithmIPHash ApplicationGatewayLoadDistributionAlgorithm = "IpHash" + ApplicationGatewayLoadDistributionAlgorithmLeastConnections ApplicationGatewayLoadDistributionAlgorithm = "LeastConnections" + ApplicationGatewayLoadDistributionAlgorithmRoundRobin ApplicationGatewayLoadDistributionAlgorithm = "RoundRobin" +) + +func PossibleValuesForApplicationGatewayLoadDistributionAlgorithm() []string { + return []string{ + string(ApplicationGatewayLoadDistributionAlgorithmIPHash), + string(ApplicationGatewayLoadDistributionAlgorithmLeastConnections), + string(ApplicationGatewayLoadDistributionAlgorithmRoundRobin), + } +} + +func (s *ApplicationGatewayLoadDistributionAlgorithm) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayLoadDistributionAlgorithm(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayLoadDistributionAlgorithm(input string) (*ApplicationGatewayLoadDistributionAlgorithm, error) { + vals := map[string]ApplicationGatewayLoadDistributionAlgorithm{ + "iphash": ApplicationGatewayLoadDistributionAlgorithmIPHash, + "leastconnections": ApplicationGatewayLoadDistributionAlgorithmLeastConnections, + "roundrobin": ApplicationGatewayLoadDistributionAlgorithmRoundRobin, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayLoadDistributionAlgorithm(input) + return &out, nil +} + +type ApplicationGatewayOperationalState string + +const ( + ApplicationGatewayOperationalStateRunning ApplicationGatewayOperationalState = "Running" + ApplicationGatewayOperationalStateStarting ApplicationGatewayOperationalState = "Starting" + ApplicationGatewayOperationalStateStopped ApplicationGatewayOperationalState = "Stopped" + ApplicationGatewayOperationalStateStopping ApplicationGatewayOperationalState = "Stopping" +) + +func PossibleValuesForApplicationGatewayOperationalState() []string { + return []string{ + string(ApplicationGatewayOperationalStateRunning), + string(ApplicationGatewayOperationalStateStarting), + string(ApplicationGatewayOperationalStateStopped), + string(ApplicationGatewayOperationalStateStopping), + } +} + +func (s *ApplicationGatewayOperationalState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayOperationalState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayOperationalState(input string) (*ApplicationGatewayOperationalState, error) { + vals := map[string]ApplicationGatewayOperationalState{ + "running": ApplicationGatewayOperationalStateRunning, + "starting": ApplicationGatewayOperationalStateStarting, + "stopped": ApplicationGatewayOperationalStateStopped, + "stopping": ApplicationGatewayOperationalStateStopping, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayOperationalState(input) + return &out, nil +} + +type ApplicationGatewayProtocol string + +const ( + ApplicationGatewayProtocolHTTP ApplicationGatewayProtocol = "Http" + ApplicationGatewayProtocolHTTPS ApplicationGatewayProtocol = "Https" + ApplicationGatewayProtocolTcp ApplicationGatewayProtocol = "Tcp" + ApplicationGatewayProtocolTls ApplicationGatewayProtocol = "Tls" +) + +func PossibleValuesForApplicationGatewayProtocol() []string { + return []string{ + string(ApplicationGatewayProtocolHTTP), + string(ApplicationGatewayProtocolHTTPS), + string(ApplicationGatewayProtocolTcp), + string(ApplicationGatewayProtocolTls), + } +} + +func (s *ApplicationGatewayProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayProtocol(input string) (*ApplicationGatewayProtocol, error) { + vals := map[string]ApplicationGatewayProtocol{ + "http": ApplicationGatewayProtocolHTTP, + "https": ApplicationGatewayProtocolHTTPS, + "tcp": ApplicationGatewayProtocolTcp, + "tls": ApplicationGatewayProtocolTls, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayProtocol(input) + return &out, nil +} + +type ApplicationGatewayRedirectType string + +const ( + ApplicationGatewayRedirectTypeFound ApplicationGatewayRedirectType = "Found" + ApplicationGatewayRedirectTypePermanent ApplicationGatewayRedirectType = "Permanent" + ApplicationGatewayRedirectTypeSeeOther ApplicationGatewayRedirectType = "SeeOther" + ApplicationGatewayRedirectTypeTemporary ApplicationGatewayRedirectType = "Temporary" +) + +func PossibleValuesForApplicationGatewayRedirectType() []string { + return []string{ + string(ApplicationGatewayRedirectTypeFound), + string(ApplicationGatewayRedirectTypePermanent), + string(ApplicationGatewayRedirectTypeSeeOther), + string(ApplicationGatewayRedirectTypeTemporary), + } +} + +func (s *ApplicationGatewayRedirectType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayRedirectType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayRedirectType(input string) (*ApplicationGatewayRedirectType, error) { + vals := map[string]ApplicationGatewayRedirectType{ + "found": ApplicationGatewayRedirectTypeFound, + "permanent": ApplicationGatewayRedirectTypePermanent, + "seeother": ApplicationGatewayRedirectTypeSeeOther, + "temporary": ApplicationGatewayRedirectTypeTemporary, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayRedirectType(input) + return &out, nil +} + +type ApplicationGatewayRequestRoutingRuleType string + +const ( + ApplicationGatewayRequestRoutingRuleTypeBasic ApplicationGatewayRequestRoutingRuleType = "Basic" + ApplicationGatewayRequestRoutingRuleTypePathBasedRouting ApplicationGatewayRequestRoutingRuleType = "PathBasedRouting" +) + +func PossibleValuesForApplicationGatewayRequestRoutingRuleType() []string { + return []string{ + string(ApplicationGatewayRequestRoutingRuleTypeBasic), + string(ApplicationGatewayRequestRoutingRuleTypePathBasedRouting), + } +} + +func (s *ApplicationGatewayRequestRoutingRuleType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayRequestRoutingRuleType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayRequestRoutingRuleType(input string) (*ApplicationGatewayRequestRoutingRuleType, error) { + vals := map[string]ApplicationGatewayRequestRoutingRuleType{ + "basic": ApplicationGatewayRequestRoutingRuleTypeBasic, + "pathbasedrouting": ApplicationGatewayRequestRoutingRuleTypePathBasedRouting, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayRequestRoutingRuleType(input) + return &out, nil +} + +type ApplicationGatewaySkuFamily string + +const ( + ApplicationGatewaySkuFamilyGenerationOne ApplicationGatewaySkuFamily = "Generation_1" + ApplicationGatewaySkuFamilyGenerationTwo ApplicationGatewaySkuFamily = "Generation_2" +) + +func PossibleValuesForApplicationGatewaySkuFamily() []string { + return []string{ + string(ApplicationGatewaySkuFamilyGenerationOne), + string(ApplicationGatewaySkuFamilyGenerationTwo), + } +} + +func (s *ApplicationGatewaySkuFamily) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewaySkuFamily(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewaySkuFamily(input string) (*ApplicationGatewaySkuFamily, error) { + vals := map[string]ApplicationGatewaySkuFamily{ + "generation_1": ApplicationGatewaySkuFamilyGenerationOne, + "generation_2": ApplicationGatewaySkuFamilyGenerationTwo, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewaySkuFamily(input) + return &out, nil +} + +type ApplicationGatewaySkuName string + +const ( + ApplicationGatewaySkuNameBasic ApplicationGatewaySkuName = "Basic" + ApplicationGatewaySkuNameStandardLarge ApplicationGatewaySkuName = "Standard_Large" + ApplicationGatewaySkuNameStandardMedium ApplicationGatewaySkuName = "Standard_Medium" + ApplicationGatewaySkuNameStandardSmall ApplicationGatewaySkuName = "Standard_Small" + ApplicationGatewaySkuNameStandardVTwo ApplicationGatewaySkuName = "Standard_v2" + ApplicationGatewaySkuNameWAFLarge ApplicationGatewaySkuName = "WAF_Large" + ApplicationGatewaySkuNameWAFMedium ApplicationGatewaySkuName = "WAF_Medium" + ApplicationGatewaySkuNameWAFVTwo ApplicationGatewaySkuName = "WAF_v2" +) + +func PossibleValuesForApplicationGatewaySkuName() []string { + return []string{ + string(ApplicationGatewaySkuNameBasic), + string(ApplicationGatewaySkuNameStandardLarge), + string(ApplicationGatewaySkuNameStandardMedium), + string(ApplicationGatewaySkuNameStandardSmall), + string(ApplicationGatewaySkuNameStandardVTwo), + string(ApplicationGatewaySkuNameWAFLarge), + string(ApplicationGatewaySkuNameWAFMedium), + string(ApplicationGatewaySkuNameWAFVTwo), + } +} + +func (s *ApplicationGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewaySkuName(input string) (*ApplicationGatewaySkuName, error) { + vals := map[string]ApplicationGatewaySkuName{ + "basic": ApplicationGatewaySkuNameBasic, + "standard_large": ApplicationGatewaySkuNameStandardLarge, + "standard_medium": ApplicationGatewaySkuNameStandardMedium, + "standard_small": ApplicationGatewaySkuNameStandardSmall, + "standard_v2": ApplicationGatewaySkuNameStandardVTwo, + "waf_large": ApplicationGatewaySkuNameWAFLarge, + "waf_medium": ApplicationGatewaySkuNameWAFMedium, + "waf_v2": ApplicationGatewaySkuNameWAFVTwo, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewaySkuName(input) + return &out, nil +} + +type ApplicationGatewaySslCipherSuite string + +const ( + ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESOneTwoEightCBCSHA ApplicationGatewaySslCipherSuite = "TLS_DHE_DSS_WITH_AES_128_CBC_SHA" + ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESOneTwoEightCBCSHATwoFiveSix ApplicationGatewaySslCipherSuite = "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256" + ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESTwoFiveSixCBCSHA ApplicationGatewaySslCipherSuite = "TLS_DHE_DSS_WITH_AES_256_CBC_SHA" + ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESTwoFiveSixCBCSHATwoFiveSix ApplicationGatewaySslCipherSuite = "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256" + ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHThreeDESEDECBCSHA ApplicationGatewaySslCipherSuite = "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA" + ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESOneTwoEightCBCSHA ApplicationGatewaySslCipherSuite = "TLS_DHE_RSA_WITH_AES_128_CBC_SHA" + ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESOneTwoEightGCMSHATwoFiveSix ApplicationGatewaySslCipherSuite = "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256" + ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESTwoFiveSixCBCSHA ApplicationGatewaySslCipherSuite = "TLS_DHE_RSA_WITH_AES_256_CBC_SHA" + ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESTwoFiveSixGCMSHAThreeEightFour ApplicationGatewaySslCipherSuite = "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384" + ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESOneTwoEightCBCSHA ApplicationGatewaySslCipherSuite = "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA" + ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESOneTwoEightCBCSHATwoFiveSix ApplicationGatewaySslCipherSuite = "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256" + ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESOneTwoEightGCMSHATwoFiveSix ApplicationGatewaySslCipherSuite = "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256" + ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESTwoFiveSixCBCSHA ApplicationGatewaySslCipherSuite = "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA" + ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESTwoFiveSixCBCSHAThreeEightFour ApplicationGatewaySslCipherSuite = "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384" + ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESTwoFiveSixGCMSHAThreeEightFour ApplicationGatewaySslCipherSuite = "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384" + ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESOneTwoEightCBCSHA ApplicationGatewaySslCipherSuite = "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA" + ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESOneTwoEightCBCSHATwoFiveSix ApplicationGatewaySslCipherSuite = "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256" + ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESOneTwoEightGCMSHATwoFiveSix ApplicationGatewaySslCipherSuite = "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" + ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESTwoFiveSixCBCSHA ApplicationGatewaySslCipherSuite = "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA" + ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESTwoFiveSixCBCSHAThreeEightFour ApplicationGatewaySslCipherSuite = "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384" + ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESTwoFiveSixGCMSHAThreeEightFour ApplicationGatewaySslCipherSuite = "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384" + ApplicationGatewaySslCipherSuiteTLSRSAWITHAESOneTwoEightCBCSHA ApplicationGatewaySslCipherSuite = "TLS_RSA_WITH_AES_128_CBC_SHA" + ApplicationGatewaySslCipherSuiteTLSRSAWITHAESOneTwoEightCBCSHATwoFiveSix ApplicationGatewaySslCipherSuite = "TLS_RSA_WITH_AES_128_CBC_SHA256" + ApplicationGatewaySslCipherSuiteTLSRSAWITHAESOneTwoEightGCMSHATwoFiveSix ApplicationGatewaySslCipherSuite = "TLS_RSA_WITH_AES_128_GCM_SHA256" + ApplicationGatewaySslCipherSuiteTLSRSAWITHAESTwoFiveSixCBCSHA ApplicationGatewaySslCipherSuite = "TLS_RSA_WITH_AES_256_CBC_SHA" + ApplicationGatewaySslCipherSuiteTLSRSAWITHAESTwoFiveSixCBCSHATwoFiveSix ApplicationGatewaySslCipherSuite = "TLS_RSA_WITH_AES_256_CBC_SHA256" + ApplicationGatewaySslCipherSuiteTLSRSAWITHAESTwoFiveSixGCMSHAThreeEightFour ApplicationGatewaySslCipherSuite = "TLS_RSA_WITH_AES_256_GCM_SHA384" + ApplicationGatewaySslCipherSuiteTLSRSAWITHThreeDESEDECBCSHA ApplicationGatewaySslCipherSuite = "TLS_RSA_WITH_3DES_EDE_CBC_SHA" +) + +func PossibleValuesForApplicationGatewaySslCipherSuite() []string { + return []string{ + string(ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESOneTwoEightCBCSHA), + string(ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESOneTwoEightCBCSHATwoFiveSix), + string(ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESTwoFiveSixCBCSHA), + string(ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESTwoFiveSixCBCSHATwoFiveSix), + string(ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHThreeDESEDECBCSHA), + string(ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESOneTwoEightCBCSHA), + string(ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESOneTwoEightGCMSHATwoFiveSix), + string(ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESTwoFiveSixCBCSHA), + string(ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESTwoFiveSixGCMSHAThreeEightFour), + string(ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESOneTwoEightCBCSHA), + string(ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESOneTwoEightCBCSHATwoFiveSix), + string(ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESOneTwoEightGCMSHATwoFiveSix), + string(ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESTwoFiveSixCBCSHA), + string(ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESTwoFiveSixCBCSHAThreeEightFour), + string(ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESTwoFiveSixGCMSHAThreeEightFour), + string(ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESOneTwoEightCBCSHA), + string(ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESOneTwoEightCBCSHATwoFiveSix), + string(ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESOneTwoEightGCMSHATwoFiveSix), + string(ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESTwoFiveSixCBCSHA), + string(ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESTwoFiveSixCBCSHAThreeEightFour), + string(ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESTwoFiveSixGCMSHAThreeEightFour), + string(ApplicationGatewaySslCipherSuiteTLSRSAWITHAESOneTwoEightCBCSHA), + string(ApplicationGatewaySslCipherSuiteTLSRSAWITHAESOneTwoEightCBCSHATwoFiveSix), + string(ApplicationGatewaySslCipherSuiteTLSRSAWITHAESOneTwoEightGCMSHATwoFiveSix), + string(ApplicationGatewaySslCipherSuiteTLSRSAWITHAESTwoFiveSixCBCSHA), + string(ApplicationGatewaySslCipherSuiteTLSRSAWITHAESTwoFiveSixCBCSHATwoFiveSix), + string(ApplicationGatewaySslCipherSuiteTLSRSAWITHAESTwoFiveSixGCMSHAThreeEightFour), + string(ApplicationGatewaySslCipherSuiteTLSRSAWITHThreeDESEDECBCSHA), + } +} + +func (s *ApplicationGatewaySslCipherSuite) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewaySslCipherSuite(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewaySslCipherSuite(input string) (*ApplicationGatewaySslCipherSuite, error) { + vals := map[string]ApplicationGatewaySslCipherSuite{ + "tls_dhe_dss_with_aes_128_cbc_sha": ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESOneTwoEightCBCSHA, + "tls_dhe_dss_with_aes_128_cbc_sha256": ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESOneTwoEightCBCSHATwoFiveSix, + "tls_dhe_dss_with_aes_256_cbc_sha": ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESTwoFiveSixCBCSHA, + "tls_dhe_dss_with_aes_256_cbc_sha256": ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESTwoFiveSixCBCSHATwoFiveSix, + "tls_dhe_dss_with_3des_ede_cbc_sha": ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHThreeDESEDECBCSHA, + "tls_dhe_rsa_with_aes_128_cbc_sha": ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESOneTwoEightCBCSHA, + "tls_dhe_rsa_with_aes_128_gcm_sha256": ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESOneTwoEightGCMSHATwoFiveSix, + "tls_dhe_rsa_with_aes_256_cbc_sha": ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESTwoFiveSixCBCSHA, + "tls_dhe_rsa_with_aes_256_gcm_sha384": ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESTwoFiveSixGCMSHAThreeEightFour, + "tls_ecdhe_ecdsa_with_aes_128_cbc_sha": ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESOneTwoEightCBCSHA, + "tls_ecdhe_ecdsa_with_aes_128_cbc_sha256": ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESOneTwoEightCBCSHATwoFiveSix, + "tls_ecdhe_ecdsa_with_aes_128_gcm_sha256": ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESOneTwoEightGCMSHATwoFiveSix, + "tls_ecdhe_ecdsa_with_aes_256_cbc_sha": ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESTwoFiveSixCBCSHA, + "tls_ecdhe_ecdsa_with_aes_256_cbc_sha384": ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESTwoFiveSixCBCSHAThreeEightFour, + "tls_ecdhe_ecdsa_with_aes_256_gcm_sha384": ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESTwoFiveSixGCMSHAThreeEightFour, + "tls_ecdhe_rsa_with_aes_128_cbc_sha": ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESOneTwoEightCBCSHA, + "tls_ecdhe_rsa_with_aes_128_cbc_sha256": ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESOneTwoEightCBCSHATwoFiveSix, + "tls_ecdhe_rsa_with_aes_128_gcm_sha256": ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESOneTwoEightGCMSHATwoFiveSix, + "tls_ecdhe_rsa_with_aes_256_cbc_sha": ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESTwoFiveSixCBCSHA, + "tls_ecdhe_rsa_with_aes_256_cbc_sha384": ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESTwoFiveSixCBCSHAThreeEightFour, + "tls_ecdhe_rsa_with_aes_256_gcm_sha384": ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESTwoFiveSixGCMSHAThreeEightFour, + "tls_rsa_with_aes_128_cbc_sha": ApplicationGatewaySslCipherSuiteTLSRSAWITHAESOneTwoEightCBCSHA, + "tls_rsa_with_aes_128_cbc_sha256": ApplicationGatewaySslCipherSuiteTLSRSAWITHAESOneTwoEightCBCSHATwoFiveSix, + "tls_rsa_with_aes_128_gcm_sha256": ApplicationGatewaySslCipherSuiteTLSRSAWITHAESOneTwoEightGCMSHATwoFiveSix, + "tls_rsa_with_aes_256_cbc_sha": ApplicationGatewaySslCipherSuiteTLSRSAWITHAESTwoFiveSixCBCSHA, + "tls_rsa_with_aes_256_cbc_sha256": ApplicationGatewaySslCipherSuiteTLSRSAWITHAESTwoFiveSixCBCSHATwoFiveSix, + "tls_rsa_with_aes_256_gcm_sha384": ApplicationGatewaySslCipherSuiteTLSRSAWITHAESTwoFiveSixGCMSHAThreeEightFour, + "tls_rsa_with_3des_ede_cbc_sha": ApplicationGatewaySslCipherSuiteTLSRSAWITHThreeDESEDECBCSHA, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewaySslCipherSuite(input) + return &out, nil +} + +type ApplicationGatewaySslPolicyName string + +const ( + ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroOneFiveZeroFiveZeroOne ApplicationGatewaySslPolicyName = "AppGwSslPolicy20150501" + ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroOneSevenZeroFourZeroOne ApplicationGatewaySslPolicyName = "AppGwSslPolicy20170401" + ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroOneSevenZeroFourZeroOneS ApplicationGatewaySslPolicyName = "AppGwSslPolicy20170401S" + ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroTwoTwoZeroOneZeroOne ApplicationGatewaySslPolicyName = "AppGwSslPolicy20220101" + ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroTwoTwoZeroOneZeroOneS ApplicationGatewaySslPolicyName = "AppGwSslPolicy20220101S" +) + +func PossibleValuesForApplicationGatewaySslPolicyName() []string { + return []string{ + string(ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroOneFiveZeroFiveZeroOne), + string(ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroOneSevenZeroFourZeroOne), + string(ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroOneSevenZeroFourZeroOneS), + string(ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroTwoTwoZeroOneZeroOne), + string(ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroTwoTwoZeroOneZeroOneS), + } +} + +func (s *ApplicationGatewaySslPolicyName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewaySslPolicyName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewaySslPolicyName(input string) (*ApplicationGatewaySslPolicyName, error) { + vals := map[string]ApplicationGatewaySslPolicyName{ + "appgwsslpolicy20150501": ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroOneFiveZeroFiveZeroOne, + "appgwsslpolicy20170401": ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroOneSevenZeroFourZeroOne, + "appgwsslpolicy20170401s": ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroOneSevenZeroFourZeroOneS, + "appgwsslpolicy20220101": ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroTwoTwoZeroOneZeroOne, + "appgwsslpolicy20220101s": ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroTwoTwoZeroOneZeroOneS, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewaySslPolicyName(input) + return &out, nil +} + +type ApplicationGatewaySslPolicyType string + +const ( + ApplicationGatewaySslPolicyTypeCustom ApplicationGatewaySslPolicyType = "Custom" + ApplicationGatewaySslPolicyTypeCustomVTwo ApplicationGatewaySslPolicyType = "CustomV2" + ApplicationGatewaySslPolicyTypePredefined ApplicationGatewaySslPolicyType = "Predefined" +) + +func PossibleValuesForApplicationGatewaySslPolicyType() []string { + return []string{ + string(ApplicationGatewaySslPolicyTypeCustom), + string(ApplicationGatewaySslPolicyTypeCustomVTwo), + string(ApplicationGatewaySslPolicyTypePredefined), + } +} + +func (s *ApplicationGatewaySslPolicyType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewaySslPolicyType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewaySslPolicyType(input string) (*ApplicationGatewaySslPolicyType, error) { + vals := map[string]ApplicationGatewaySslPolicyType{ + "custom": ApplicationGatewaySslPolicyTypeCustom, + "customv2": ApplicationGatewaySslPolicyTypeCustomVTwo, + "predefined": ApplicationGatewaySslPolicyTypePredefined, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewaySslPolicyType(input) + return &out, nil +} + +type ApplicationGatewaySslProtocol string + +const ( + ApplicationGatewaySslProtocolTLSvOneOne ApplicationGatewaySslProtocol = "TLSv1_1" + ApplicationGatewaySslProtocolTLSvOneThree ApplicationGatewaySslProtocol = "TLSv1_3" + ApplicationGatewaySslProtocolTLSvOneTwo ApplicationGatewaySslProtocol = "TLSv1_2" + ApplicationGatewaySslProtocolTLSvOneZero ApplicationGatewaySslProtocol = "TLSv1_0" +) + +func PossibleValuesForApplicationGatewaySslProtocol() []string { + return []string{ + string(ApplicationGatewaySslProtocolTLSvOneOne), + string(ApplicationGatewaySslProtocolTLSvOneThree), + string(ApplicationGatewaySslProtocolTLSvOneTwo), + string(ApplicationGatewaySslProtocolTLSvOneZero), + } +} + +func (s *ApplicationGatewaySslProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewaySslProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewaySslProtocol(input string) (*ApplicationGatewaySslProtocol, error) { + vals := map[string]ApplicationGatewaySslProtocol{ + "tlsv1_1": ApplicationGatewaySslProtocolTLSvOneOne, + "tlsv1_3": ApplicationGatewaySslProtocolTLSvOneThree, + "tlsv1_2": ApplicationGatewaySslProtocolTLSvOneTwo, + "tlsv1_0": ApplicationGatewaySslProtocolTLSvOneZero, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewaySslProtocol(input) + return &out, nil +} + +type ApplicationGatewayTier string + +const ( + ApplicationGatewayTierBasic ApplicationGatewayTier = "Basic" + ApplicationGatewayTierStandard ApplicationGatewayTier = "Standard" + ApplicationGatewayTierStandardVTwo ApplicationGatewayTier = "Standard_v2" + ApplicationGatewayTierWAF ApplicationGatewayTier = "WAF" + ApplicationGatewayTierWAFVTwo ApplicationGatewayTier = "WAF_v2" +) + +func PossibleValuesForApplicationGatewayTier() []string { + return []string{ + string(ApplicationGatewayTierBasic), + string(ApplicationGatewayTierStandard), + string(ApplicationGatewayTierStandardVTwo), + string(ApplicationGatewayTierWAF), + string(ApplicationGatewayTierWAFVTwo), + } +} + +func (s *ApplicationGatewayTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayTier(input string) (*ApplicationGatewayTier, error) { + vals := map[string]ApplicationGatewayTier{ + "basic": ApplicationGatewayTierBasic, + "standard": ApplicationGatewayTierStandard, + "standard_v2": ApplicationGatewayTierStandardVTwo, + "waf": ApplicationGatewayTierWAF, + "waf_v2": ApplicationGatewayTierWAFVTwo, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayTier(input) + return &out, nil +} + +type ApplicationGatewayTierTypes string + +const ( + ApplicationGatewayTierTypesStandard ApplicationGatewayTierTypes = "Standard" + ApplicationGatewayTierTypesStandardVTwo ApplicationGatewayTierTypes = "Standard_v2" + ApplicationGatewayTierTypesWAF ApplicationGatewayTierTypes = "WAF" + ApplicationGatewayTierTypesWAFVTwo ApplicationGatewayTierTypes = "WAF_v2" +) + +func PossibleValuesForApplicationGatewayTierTypes() []string { + return []string{ + string(ApplicationGatewayTierTypesStandard), + string(ApplicationGatewayTierTypesStandardVTwo), + string(ApplicationGatewayTierTypesWAF), + string(ApplicationGatewayTierTypesWAFVTwo), + } +} + +func (s *ApplicationGatewayTierTypes) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayTierTypes(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayTierTypes(input string) (*ApplicationGatewayTierTypes, error) { + vals := map[string]ApplicationGatewayTierTypes{ + "standard": ApplicationGatewayTierTypesStandard, + "standard_v2": ApplicationGatewayTierTypesStandardVTwo, + "waf": ApplicationGatewayTierTypesWAF, + "waf_v2": ApplicationGatewayTierTypesWAFVTwo, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayTierTypes(input) + return &out, nil +} + +type ApplicationGatewayWafRuleActionTypes string + +const ( + ApplicationGatewayWafRuleActionTypesAllow ApplicationGatewayWafRuleActionTypes = "Allow" + ApplicationGatewayWafRuleActionTypesAnomalyScoring ApplicationGatewayWafRuleActionTypes = "AnomalyScoring" + ApplicationGatewayWafRuleActionTypesBlock ApplicationGatewayWafRuleActionTypes = "Block" + ApplicationGatewayWafRuleActionTypesLog ApplicationGatewayWafRuleActionTypes = "Log" + ApplicationGatewayWafRuleActionTypesNone ApplicationGatewayWafRuleActionTypes = "None" +) + +func PossibleValuesForApplicationGatewayWafRuleActionTypes() []string { + return []string{ + string(ApplicationGatewayWafRuleActionTypesAllow), + string(ApplicationGatewayWafRuleActionTypesAnomalyScoring), + string(ApplicationGatewayWafRuleActionTypesBlock), + string(ApplicationGatewayWafRuleActionTypesLog), + string(ApplicationGatewayWafRuleActionTypesNone), + } +} + +func (s *ApplicationGatewayWafRuleActionTypes) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayWafRuleActionTypes(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayWafRuleActionTypes(input string) (*ApplicationGatewayWafRuleActionTypes, error) { + vals := map[string]ApplicationGatewayWafRuleActionTypes{ + "allow": ApplicationGatewayWafRuleActionTypesAllow, + "anomalyscoring": ApplicationGatewayWafRuleActionTypesAnomalyScoring, + "block": ApplicationGatewayWafRuleActionTypesBlock, + "log": ApplicationGatewayWafRuleActionTypesLog, + "none": ApplicationGatewayWafRuleActionTypesNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayWafRuleActionTypes(input) + return &out, nil +} + +type ApplicationGatewayWafRuleStateTypes string + +const ( + ApplicationGatewayWafRuleStateTypesDisabled ApplicationGatewayWafRuleStateTypes = "Disabled" + ApplicationGatewayWafRuleStateTypesEnabled ApplicationGatewayWafRuleStateTypes = "Enabled" +) + +func PossibleValuesForApplicationGatewayWafRuleStateTypes() []string { + return []string{ + string(ApplicationGatewayWafRuleStateTypesDisabled), + string(ApplicationGatewayWafRuleStateTypesEnabled), + } +} + +func (s *ApplicationGatewayWafRuleStateTypes) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayWafRuleStateTypes(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayWafRuleStateTypes(input string) (*ApplicationGatewayWafRuleStateTypes, error) { + vals := map[string]ApplicationGatewayWafRuleStateTypes{ + "disabled": ApplicationGatewayWafRuleStateTypesDisabled, + "enabled": ApplicationGatewayWafRuleStateTypesEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayWafRuleStateTypes(input) + return &out, nil +} + +type DdosSettingsProtectionMode string + +const ( + DdosSettingsProtectionModeDisabled DdosSettingsProtectionMode = "Disabled" + DdosSettingsProtectionModeEnabled DdosSettingsProtectionMode = "Enabled" + DdosSettingsProtectionModeVirtualNetworkInherited DdosSettingsProtectionMode = "VirtualNetworkInherited" +) + +func PossibleValuesForDdosSettingsProtectionMode() []string { + return []string{ + string(DdosSettingsProtectionModeDisabled), + string(DdosSettingsProtectionModeEnabled), + string(DdosSettingsProtectionModeVirtualNetworkInherited), + } +} + +func (s *DdosSettingsProtectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDdosSettingsProtectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDdosSettingsProtectionMode(input string) (*DdosSettingsProtectionMode, error) { + vals := map[string]DdosSettingsProtectionMode{ + "disabled": DdosSettingsProtectionModeDisabled, + "enabled": DdosSettingsProtectionModeEnabled, + "virtualnetworkinherited": DdosSettingsProtectionModeVirtualNetworkInherited, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DdosSettingsProtectionMode(input) + return &out, nil +} + +type DeleteOptions string + +const ( + DeleteOptionsDelete DeleteOptions = "Delete" + DeleteOptionsDetach DeleteOptions = "Detach" +) + +func PossibleValuesForDeleteOptions() []string { + return []string{ + string(DeleteOptionsDelete), + string(DeleteOptionsDetach), + } +} + +func (s *DeleteOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteOptions(input string) (*DeleteOptions, error) { + vals := map[string]DeleteOptions{ + "delete": DeleteOptionsDelete, + "detach": DeleteOptionsDetach, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteOptions(input) + return &out, nil +} + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelInterfaceType string + +const ( + GatewayLoadBalancerTunnelInterfaceTypeExternal GatewayLoadBalancerTunnelInterfaceType = "External" + GatewayLoadBalancerTunnelInterfaceTypeInternal GatewayLoadBalancerTunnelInterfaceType = "Internal" + GatewayLoadBalancerTunnelInterfaceTypeNone GatewayLoadBalancerTunnelInterfaceType = "None" +) + +func PossibleValuesForGatewayLoadBalancerTunnelInterfaceType() []string { + return []string{ + string(GatewayLoadBalancerTunnelInterfaceTypeExternal), + string(GatewayLoadBalancerTunnelInterfaceTypeInternal), + string(GatewayLoadBalancerTunnelInterfaceTypeNone), + } +} + +func (s *GatewayLoadBalancerTunnelInterfaceType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelInterfaceType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelInterfaceType(input string) (*GatewayLoadBalancerTunnelInterfaceType, error) { + vals := map[string]GatewayLoadBalancerTunnelInterfaceType{ + "external": GatewayLoadBalancerTunnelInterfaceTypeExternal, + "internal": GatewayLoadBalancerTunnelInterfaceTypeInternal, + "none": GatewayLoadBalancerTunnelInterfaceTypeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelInterfaceType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelProtocol string + +const ( + GatewayLoadBalancerTunnelProtocolNative GatewayLoadBalancerTunnelProtocol = "Native" + GatewayLoadBalancerTunnelProtocolNone GatewayLoadBalancerTunnelProtocol = "None" + GatewayLoadBalancerTunnelProtocolVXLAN GatewayLoadBalancerTunnelProtocol = "VXLAN" +) + +func PossibleValuesForGatewayLoadBalancerTunnelProtocol() []string { + return []string{ + string(GatewayLoadBalancerTunnelProtocolNative), + string(GatewayLoadBalancerTunnelProtocolNone), + string(GatewayLoadBalancerTunnelProtocolVXLAN), + } +} + +func (s *GatewayLoadBalancerTunnelProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelProtocol(input string) (*GatewayLoadBalancerTunnelProtocol, error) { + vals := map[string]GatewayLoadBalancerTunnelProtocol{ + "native": GatewayLoadBalancerTunnelProtocolNative, + "none": GatewayLoadBalancerTunnelProtocolNone, + "vxlan": GatewayLoadBalancerTunnelProtocolVXLAN, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelProtocol(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} + +type LoadBalancerBackendAddressAdminState string + +const ( + LoadBalancerBackendAddressAdminStateDown LoadBalancerBackendAddressAdminState = "Down" + LoadBalancerBackendAddressAdminStateNone LoadBalancerBackendAddressAdminState = "None" + LoadBalancerBackendAddressAdminStateUp LoadBalancerBackendAddressAdminState = "Up" +) + +func PossibleValuesForLoadBalancerBackendAddressAdminState() []string { + return []string{ + string(LoadBalancerBackendAddressAdminStateDown), + string(LoadBalancerBackendAddressAdminStateNone), + string(LoadBalancerBackendAddressAdminStateUp), + } +} + +func (s *LoadBalancerBackendAddressAdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerBackendAddressAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerBackendAddressAdminState(input string) (*LoadBalancerBackendAddressAdminState, error) { + vals := map[string]LoadBalancerBackendAddressAdminState{ + "down": LoadBalancerBackendAddressAdminStateDown, + "none": LoadBalancerBackendAddressAdminStateNone, + "up": LoadBalancerBackendAddressAdminStateUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerBackendAddressAdminState(input) + return &out, nil +} + +type NatGatewaySkuName string + +const ( + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +func PossibleValuesForNatGatewaySkuName() []string { + return []string{ + string(NatGatewaySkuNameStandard), + } +} + +func (s *NatGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNatGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNatGatewaySkuName(input string) (*NatGatewaySkuName, error) { + vals := map[string]NatGatewaySkuName{ + "standard": NatGatewaySkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NatGatewaySkuName(input) + return &out, nil +} + +type NetworkInterfaceAuxiliaryMode string + +const ( + NetworkInterfaceAuxiliaryModeAcceleratedConnections NetworkInterfaceAuxiliaryMode = "AcceleratedConnections" + NetworkInterfaceAuxiliaryModeFloating NetworkInterfaceAuxiliaryMode = "Floating" + NetworkInterfaceAuxiliaryModeMaxConnections NetworkInterfaceAuxiliaryMode = "MaxConnections" + NetworkInterfaceAuxiliaryModeNone NetworkInterfaceAuxiliaryMode = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliaryMode() []string { + return []string{ + string(NetworkInterfaceAuxiliaryModeAcceleratedConnections), + string(NetworkInterfaceAuxiliaryModeFloating), + string(NetworkInterfaceAuxiliaryModeMaxConnections), + string(NetworkInterfaceAuxiliaryModeNone), + } +} + +func (s *NetworkInterfaceAuxiliaryMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliaryMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliaryMode(input string) (*NetworkInterfaceAuxiliaryMode, error) { + vals := map[string]NetworkInterfaceAuxiliaryMode{ + "acceleratedconnections": NetworkInterfaceAuxiliaryModeAcceleratedConnections, + "floating": NetworkInterfaceAuxiliaryModeFloating, + "maxconnections": NetworkInterfaceAuxiliaryModeMaxConnections, + "none": NetworkInterfaceAuxiliaryModeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliaryMode(input) + return &out, nil +} + +type NetworkInterfaceAuxiliarySku string + +const ( + NetworkInterfaceAuxiliarySkuAEight NetworkInterfaceAuxiliarySku = "A8" + NetworkInterfaceAuxiliarySkuAFour NetworkInterfaceAuxiliarySku = "A4" + NetworkInterfaceAuxiliarySkuAOne NetworkInterfaceAuxiliarySku = "A1" + NetworkInterfaceAuxiliarySkuATwo NetworkInterfaceAuxiliarySku = "A2" + NetworkInterfaceAuxiliarySkuNone NetworkInterfaceAuxiliarySku = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliarySku() []string { + return []string{ + string(NetworkInterfaceAuxiliarySkuAEight), + string(NetworkInterfaceAuxiliarySkuAFour), + string(NetworkInterfaceAuxiliarySkuAOne), + string(NetworkInterfaceAuxiliarySkuATwo), + string(NetworkInterfaceAuxiliarySkuNone), + } +} + +func (s *NetworkInterfaceAuxiliarySku) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliarySku(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliarySku(input string) (*NetworkInterfaceAuxiliarySku, error) { + vals := map[string]NetworkInterfaceAuxiliarySku{ + "a8": NetworkInterfaceAuxiliarySkuAEight, + "a4": NetworkInterfaceAuxiliarySkuAFour, + "a1": NetworkInterfaceAuxiliarySkuAOne, + "a2": NetworkInterfaceAuxiliarySkuATwo, + "none": NetworkInterfaceAuxiliarySkuNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliarySku(input) + return &out, nil +} + +type NetworkInterfaceMigrationPhase string + +const ( + NetworkInterfaceMigrationPhaseAbort NetworkInterfaceMigrationPhase = "Abort" + NetworkInterfaceMigrationPhaseCommit NetworkInterfaceMigrationPhase = "Commit" + NetworkInterfaceMigrationPhaseCommitted NetworkInterfaceMigrationPhase = "Committed" + NetworkInterfaceMigrationPhaseNone NetworkInterfaceMigrationPhase = "None" + NetworkInterfaceMigrationPhasePrepare NetworkInterfaceMigrationPhase = "Prepare" +) + +func PossibleValuesForNetworkInterfaceMigrationPhase() []string { + return []string{ + string(NetworkInterfaceMigrationPhaseAbort), + string(NetworkInterfaceMigrationPhaseCommit), + string(NetworkInterfaceMigrationPhaseCommitted), + string(NetworkInterfaceMigrationPhaseNone), + string(NetworkInterfaceMigrationPhasePrepare), + } +} + +func (s *NetworkInterfaceMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceMigrationPhase(input string) (*NetworkInterfaceMigrationPhase, error) { + vals := map[string]NetworkInterfaceMigrationPhase{ + "abort": NetworkInterfaceMigrationPhaseAbort, + "commit": NetworkInterfaceMigrationPhaseCommit, + "committed": NetworkInterfaceMigrationPhaseCommitted, + "none": NetworkInterfaceMigrationPhaseNone, + "prepare": NetworkInterfaceMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceMigrationPhase(input) + return &out, nil +} + +type NetworkInterfaceNicType string + +const ( + NetworkInterfaceNicTypeElastic NetworkInterfaceNicType = "Elastic" + NetworkInterfaceNicTypeStandard NetworkInterfaceNicType = "Standard" +) + +func PossibleValuesForNetworkInterfaceNicType() []string { + return []string{ + string(NetworkInterfaceNicTypeElastic), + string(NetworkInterfaceNicTypeStandard), + } +} + +func (s *NetworkInterfaceNicType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceNicType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceNicType(input string) (*NetworkInterfaceNicType, error) { + vals := map[string]NetworkInterfaceNicType{ + "elastic": NetworkInterfaceNicTypeElastic, + "standard": NetworkInterfaceNicTypeStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceNicType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type PublicIPAddressDnsSettingsDomainNameLabelScope string + +const ( + PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "NoReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "ResourceGroupReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "SubscriptionReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "TenantReuse" +) + +func PossibleValuesForPublicIPAddressDnsSettingsDomainNameLabelScope() []string { + return []string{ + string(PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse), + } +} + +func (s *PublicIPAddressDnsSettingsDomainNameLabelScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressDnsSettingsDomainNameLabelScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressDnsSettingsDomainNameLabelScope(input string) (*PublicIPAddressDnsSettingsDomainNameLabelScope, error) { + vals := map[string]PublicIPAddressDnsSettingsDomainNameLabelScope{ + "noreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse, + "resourcegroupreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse, + "subscriptionreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse, + "tenantreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressDnsSettingsDomainNameLabelScope(input) + return &out, nil +} + +type PublicIPAddressMigrationPhase string + +const ( + PublicIPAddressMigrationPhaseAbort PublicIPAddressMigrationPhase = "Abort" + PublicIPAddressMigrationPhaseCommit PublicIPAddressMigrationPhase = "Commit" + PublicIPAddressMigrationPhaseCommitted PublicIPAddressMigrationPhase = "Committed" + PublicIPAddressMigrationPhaseNone PublicIPAddressMigrationPhase = "None" + PublicIPAddressMigrationPhasePrepare PublicIPAddressMigrationPhase = "Prepare" +) + +func PossibleValuesForPublicIPAddressMigrationPhase() []string { + return []string{ + string(PublicIPAddressMigrationPhaseAbort), + string(PublicIPAddressMigrationPhaseCommit), + string(PublicIPAddressMigrationPhaseCommitted), + string(PublicIPAddressMigrationPhaseNone), + string(PublicIPAddressMigrationPhasePrepare), + } +} + +func (s *PublicIPAddressMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressMigrationPhase(input string) (*PublicIPAddressMigrationPhase, error) { + vals := map[string]PublicIPAddressMigrationPhase{ + "abort": PublicIPAddressMigrationPhaseAbort, + "commit": PublicIPAddressMigrationPhaseCommit, + "committed": PublicIPAddressMigrationPhaseCommitted, + "none": PublicIPAddressMigrationPhaseNone, + "prepare": PublicIPAddressMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressMigrationPhase(input) + return &out, nil +} + +type PublicIPAddressSkuName string + +const ( + PublicIPAddressSkuNameBasic PublicIPAddressSkuName = "Basic" + PublicIPAddressSkuNameStandard PublicIPAddressSkuName = "Standard" +) + +func PossibleValuesForPublicIPAddressSkuName() []string { + return []string{ + string(PublicIPAddressSkuNameBasic), + string(PublicIPAddressSkuNameStandard), + } +} + +func (s *PublicIPAddressSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuName(input string) (*PublicIPAddressSkuName, error) { + vals := map[string]PublicIPAddressSkuName{ + "basic": PublicIPAddressSkuNameBasic, + "standard": PublicIPAddressSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuName(input) + return &out, nil +} + +type PublicIPAddressSkuTier string + +const ( + PublicIPAddressSkuTierGlobal PublicIPAddressSkuTier = "Global" + PublicIPAddressSkuTierRegional PublicIPAddressSkuTier = "Regional" +) + +func PossibleValuesForPublicIPAddressSkuTier() []string { + return []string{ + string(PublicIPAddressSkuTierGlobal), + string(PublicIPAddressSkuTierRegional), + } +} + +func (s *PublicIPAddressSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuTier(input string) (*PublicIPAddressSkuTier, error) { + vals := map[string]PublicIPAddressSkuTier{ + "global": PublicIPAddressSkuTierGlobal, + "regional": PublicIPAddressSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuTier(input) + return &out, nil +} + +type RouteNextHopType string + +const ( + RouteNextHopTypeInternet RouteNextHopType = "Internet" + RouteNextHopTypeNone RouteNextHopType = "None" + RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" + RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" + RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" +) + +func PossibleValuesForRouteNextHopType() []string { + return []string{ + string(RouteNextHopTypeInternet), + string(RouteNextHopTypeNone), + string(RouteNextHopTypeVirtualAppliance), + string(RouteNextHopTypeVirtualNetworkGateway), + string(RouteNextHopTypeVnetLocal), + } +} + +func (s *RouteNextHopType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteNextHopType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteNextHopType(input string) (*RouteNextHopType, error) { + vals := map[string]RouteNextHopType{ + "internet": RouteNextHopTypeInternet, + "none": RouteNextHopTypeNone, + "virtualappliance": RouteNextHopTypeVirtualAppliance, + "virtualnetworkgateway": RouteNextHopTypeVirtualNetworkGateway, + "vnetlocal": RouteNextHopTypeVnetLocal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteNextHopType(input) + return &out, nil +} + +type SecurityRuleAccess string + +const ( + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +func PossibleValuesForSecurityRuleAccess() []string { + return []string{ + string(SecurityRuleAccessAllow), + string(SecurityRuleAccessDeny), + } +} + +func (s *SecurityRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleAccess(input string) (*SecurityRuleAccess, error) { + vals := map[string]SecurityRuleAccess{ + "allow": SecurityRuleAccessAllow, + "deny": SecurityRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleAccess(input) + return &out, nil +} + +type SecurityRuleDirection string + +const ( + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityRuleDirection() []string { + return []string{ + string(SecurityRuleDirectionInbound), + string(SecurityRuleDirectionOutbound), + } +} + +func (s *SecurityRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleDirection(input string) (*SecurityRuleDirection, error) { + vals := map[string]SecurityRuleDirection{ + "inbound": SecurityRuleDirectionInbound, + "outbound": SecurityRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleDirection(input) + return &out, nil +} + +type SecurityRuleProtocol string + +const ( + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + SecurityRuleProtocolAny SecurityRuleProtocol = "*" + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + SecurityRuleProtocolTcp SecurityRuleProtocol = "Tcp" + SecurityRuleProtocolUdp SecurityRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityRuleProtocol() []string { + return []string{ + string(SecurityRuleProtocolAh), + string(SecurityRuleProtocolAny), + string(SecurityRuleProtocolEsp), + string(SecurityRuleProtocolIcmp), + string(SecurityRuleProtocolTcp), + string(SecurityRuleProtocolUdp), + } +} + +func (s *SecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleProtocol(input string) (*SecurityRuleProtocol, error) { + vals := map[string]SecurityRuleProtocol{ + "ah": SecurityRuleProtocolAh, + "*": SecurityRuleProtocolAny, + "esp": SecurityRuleProtocolEsp, + "icmp": SecurityRuleProtocolIcmp, + "tcp": SecurityRuleProtocolTcp, + "udp": SecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleProtocol(input) + return &out, nil +} + +type SharingScope string + +const ( + SharingScopeDelegatedServices SharingScope = "DelegatedServices" + SharingScopeTenant SharingScope = "Tenant" +) + +func PossibleValuesForSharingScope() []string { + return []string{ + string(SharingScopeDelegatedServices), + string(SharingScopeTenant), + } +} + +func (s *SharingScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSharingScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSharingScope(input string) (*SharingScope, error) { + vals := map[string]SharingScope{ + "delegatedservices": SharingScopeDelegatedServices, + "tenant": SharingScopeTenant, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SharingScope(input) + return &out, nil +} + +type SyncMode string + +const ( + SyncModeAutomatic SyncMode = "Automatic" + SyncModeManual SyncMode = "Manual" +) + +func PossibleValuesForSyncMode() []string { + return []string{ + string(SyncModeAutomatic), + string(SyncModeManual), + } +} + +func (s *SyncMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSyncMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSyncMode(input string) (*SyncMode, error) { + vals := map[string]SyncMode{ + "automatic": SyncModeAutomatic, + "manual": SyncModeManual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SyncMode(input) + return &out, nil +} + +type TransportProtocol string + +const ( + TransportProtocolAll TransportProtocol = "All" + TransportProtocolTcp TransportProtocol = "Tcp" + TransportProtocolUdp TransportProtocol = "Udp" +) + +func PossibleValuesForTransportProtocol() []string { + return []string{ + string(TransportProtocolAll), + string(TransportProtocolTcp), + string(TransportProtocolUdp), + } +} + +func (s *TransportProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseTransportProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseTransportProtocol(input string) (*TransportProtocol, error) { + vals := map[string]TransportProtocol{ + "all": TransportProtocolAll, + "tcp": TransportProtocolTcp, + "udp": TransportProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := TransportProtocol(input) + return &out, nil +} + +type VirtualNetworkPrivateEndpointNetworkPolicies string + +const ( + VirtualNetworkPrivateEndpointNetworkPoliciesDisabled VirtualNetworkPrivateEndpointNetworkPolicies = "Disabled" + VirtualNetworkPrivateEndpointNetworkPoliciesEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "Enabled" + VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "NetworkSecurityGroupEnabled" + VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "RouteTableEnabled" +) + +func PossibleValuesForVirtualNetworkPrivateEndpointNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateEndpointNetworkPoliciesDisabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled), + } +} + +func (s *VirtualNetworkPrivateEndpointNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateEndpointNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateEndpointNetworkPolicies(input string) (*VirtualNetworkPrivateEndpointNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateEndpointNetworkPolicies{ + "disabled": VirtualNetworkPrivateEndpointNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateEndpointNetworkPoliciesEnabled, + "networksecuritygroupenabled": VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled, + "routetableenabled": VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateEndpointNetworkPolicies(input) + return &out, nil +} + +type VirtualNetworkPrivateLinkServiceNetworkPolicies string + +const ( + VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Disabled" + VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Enabled" +) + +func PossibleValuesForVirtualNetworkPrivateLinkServiceNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled), + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled), + } +} + +func (s *VirtualNetworkPrivateLinkServiceNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateLinkServiceNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateLinkServiceNetworkPolicies(input string) (*VirtualNetworkPrivateLinkServiceNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateLinkServiceNetworkPolicies{ + "disabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateLinkServiceNetworkPolicies(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/id_applicationgateway.go b/resource-manager/network/2024-01-01/applicationgateways/id_applicationgateway.go new file mode 100644 index 00000000000..0611edc8513 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/id_applicationgateway.go @@ -0,0 +1,130 @@ +package applicationgateways + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ApplicationGatewayId{}) +} + +var _ resourceids.ResourceId = &ApplicationGatewayId{} + +// ApplicationGatewayId is a struct representing the Resource ID for a Application Gateway +type ApplicationGatewayId struct { + SubscriptionId string + ResourceGroupName string + ApplicationGatewayName string +} + +// NewApplicationGatewayID returns a new ApplicationGatewayId struct +func NewApplicationGatewayID(subscriptionId string, resourceGroupName string, applicationGatewayName string) ApplicationGatewayId { + return ApplicationGatewayId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ApplicationGatewayName: applicationGatewayName, + } +} + +// ParseApplicationGatewayID parses 'input' into a ApplicationGatewayId +func ParseApplicationGatewayID(input string) (*ApplicationGatewayId, error) { + parser := resourceids.NewParserFromResourceIdType(&ApplicationGatewayId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ApplicationGatewayId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseApplicationGatewayIDInsensitively parses 'input' case-insensitively into a ApplicationGatewayId +// note: this method should only be used for API response data and not user input +func ParseApplicationGatewayIDInsensitively(input string) (*ApplicationGatewayId, error) { + parser := resourceids.NewParserFromResourceIdType(&ApplicationGatewayId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ApplicationGatewayId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ApplicationGatewayId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ApplicationGatewayName, ok = input.Parsed["applicationGatewayName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "applicationGatewayName", input) + } + + return nil +} + +// ValidateApplicationGatewayID checks that 'input' can be parsed as a Application Gateway ID +func ValidateApplicationGatewayID(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 := ParseApplicationGatewayID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Application Gateway ID +func (id ApplicationGatewayId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/applicationGateways/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ApplicationGatewayName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Application Gateway ID +func (id ApplicationGatewayId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticApplicationGateways", "applicationGateways", "applicationGateways"), + resourceids.UserSpecifiedSegment("applicationGatewayName", "applicationGatewayValue"), + } +} + +// String returns a human-readable description of this Application Gateway ID +func (id ApplicationGatewayId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Application Gateway Name: %q", id.ApplicationGatewayName), + } + return fmt.Sprintf("Application Gateway (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/id_applicationgateway_test.go b/resource-manager/network/2024-01-01/applicationgateways/id_applicationgateway_test.go new file mode 100644 index 00000000000..9c3eeb06904 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/id_applicationgateway_test.go @@ -0,0 +1,282 @@ +package applicationgateways + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ApplicationGatewayId{} + +func TestNewApplicationGatewayID(t *testing.T) { + id := NewApplicationGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ApplicationGatewayName != "applicationGatewayValue" { + t.Fatalf("Expected %q but got %q for Segment 'ApplicationGatewayName'", id.ApplicationGatewayName, "applicationGatewayValue") + } +} + +func TestFormatApplicationGatewayID(t *testing.T) { + actual := NewApplicationGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseApplicationGatewayID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ApplicationGatewayId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue", + Expected: &ApplicationGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ApplicationGatewayName: "applicationGatewayValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseApplicationGatewayID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ApplicationGatewayName != v.Expected.ApplicationGatewayName { + t.Fatalf("Expected %q but got %q for ApplicationGatewayName", v.Expected.ApplicationGatewayName, actual.ApplicationGatewayName) + } + + } +} + +func TestParseApplicationGatewayIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ApplicationGatewayId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnGaTeWaYs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue", + Expected: &ApplicationGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ApplicationGatewayName: "applicationGatewayValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGateways/applicationGatewayValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnGaTeWaYs/aPpLiCaTiOnGaTeWaYvAlUe", + Expected: &ApplicationGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ApplicationGatewayName: "aPpLiCaTiOnGaTeWaYvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnGaTeWaYs/aPpLiCaTiOnGaTeWaYvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseApplicationGatewayIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ApplicationGatewayName != v.Expected.ApplicationGatewayName { + t.Fatalf("Expected %q but got %q for ApplicationGatewayName", v.Expected.ApplicationGatewayName, actual.ApplicationGatewayName) + } + + } +} + +func TestSegmentsForApplicationGatewayId(t *testing.T) { + segments := ApplicationGatewayId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ApplicationGatewayId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/id_predefinedpolicy.go b/resource-manager/network/2024-01-01/applicationgateways/id_predefinedpolicy.go new file mode 100644 index 00000000000..f22e541bda3 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/id_predefinedpolicy.go @@ -0,0 +1,123 @@ +package applicationgateways + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&PredefinedPolicyId{}) +} + +var _ resourceids.ResourceId = &PredefinedPolicyId{} + +// PredefinedPolicyId is a struct representing the Resource ID for a Predefined Policy +type PredefinedPolicyId struct { + SubscriptionId string + PredefinedPolicyName string +} + +// NewPredefinedPolicyID returns a new PredefinedPolicyId struct +func NewPredefinedPolicyID(subscriptionId string, predefinedPolicyName string) PredefinedPolicyId { + return PredefinedPolicyId{ + SubscriptionId: subscriptionId, + PredefinedPolicyName: predefinedPolicyName, + } +} + +// ParsePredefinedPolicyID parses 'input' into a PredefinedPolicyId +func ParsePredefinedPolicyID(input string) (*PredefinedPolicyId, error) { + parser := resourceids.NewParserFromResourceIdType(&PredefinedPolicyId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PredefinedPolicyId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParsePredefinedPolicyIDInsensitively parses 'input' case-insensitively into a PredefinedPolicyId +// note: this method should only be used for API response data and not user input +func ParsePredefinedPolicyIDInsensitively(input string) (*PredefinedPolicyId, error) { + parser := resourceids.NewParserFromResourceIdType(&PredefinedPolicyId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PredefinedPolicyId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *PredefinedPolicyId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.PredefinedPolicyName, ok = input.Parsed["predefinedPolicyName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "predefinedPolicyName", input) + } + + return nil +} + +// ValidatePredefinedPolicyID checks that 'input' can be parsed as a Predefined Policy ID +func ValidatePredefinedPolicyID(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 := ParsePredefinedPolicyID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Predefined Policy ID +func (id PredefinedPolicyId) ID() string { + fmtString := "/subscriptions/%s/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default/predefinedPolicies/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.PredefinedPolicyName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Predefined Policy ID +func (id PredefinedPolicyId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticApplicationGatewayAvailableSslOptions", "applicationGatewayAvailableSslOptions", "applicationGatewayAvailableSslOptions"), + resourceids.StaticSegment("staticDefault", "default", "default"), + resourceids.StaticSegment("staticPredefinedPolicies", "predefinedPolicies", "predefinedPolicies"), + resourceids.UserSpecifiedSegment("predefinedPolicyName", "predefinedPolicyValue"), + } +} + +// String returns a human-readable description of this Predefined Policy ID +func (id PredefinedPolicyId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Predefined Policy Name: %q", id.PredefinedPolicyName), + } + return fmt.Sprintf("Predefined Policy (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/id_predefinedpolicy_test.go b/resource-manager/network/2024-01-01/applicationgateways/id_predefinedpolicy_test.go new file mode 100644 index 00000000000..9ecaa5d023e --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/id_predefinedpolicy_test.go @@ -0,0 +1,267 @@ +package applicationgateways + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &PredefinedPolicyId{} + +func TestNewPredefinedPolicyID(t *testing.T) { + id := NewPredefinedPolicyID("12345678-1234-9876-4563-123456789012", "predefinedPolicyValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.PredefinedPolicyName != "predefinedPolicyValue" { + t.Fatalf("Expected %q but got %q for Segment 'PredefinedPolicyName'", id.PredefinedPolicyName, "predefinedPolicyValue") + } +} + +func TestFormatPredefinedPolicyID(t *testing.T) { + actual := NewPredefinedPolicyID("12345678-1234-9876-4563-123456789012", "predefinedPolicyValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default/predefinedPolicies/predefinedPolicyValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParsePredefinedPolicyID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PredefinedPolicyId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/applicationGatewayAvailableSslOptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default/predefinedPolicies", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default/predefinedPolicies/predefinedPolicyValue", + Expected: &PredefinedPolicyId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + PredefinedPolicyName: "predefinedPolicyValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default/predefinedPolicies/predefinedPolicyValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePredefinedPolicyID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.PredefinedPolicyName != v.Expected.PredefinedPolicyName { + t.Fatalf("Expected %q but got %q for PredefinedPolicyName", v.Expected.PredefinedPolicyName, actual.PredefinedPolicyName) + } + + } +} + +func TestParsePredefinedPolicyIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PredefinedPolicyId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/applicationGatewayAvailableSslOptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnGaTeWaYaVaIlAbLeSsLoPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnGaTeWaYaVaIlAbLeSsLoPtIoNs/dEfAuLt", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default/predefinedPolicies", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnGaTeWaYaVaIlAbLeSsLoPtIoNs/dEfAuLt/pReDeFiNeDpOlIcIeS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default/predefinedPolicies/predefinedPolicyValue", + Expected: &PredefinedPolicyId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + PredefinedPolicyName: "predefinedPolicyValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default/predefinedPolicies/predefinedPolicyValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnGaTeWaYaVaIlAbLeSsLoPtIoNs/dEfAuLt/pReDeFiNeDpOlIcIeS/pReDeFiNeDpOlIcYvAlUe", + Expected: &PredefinedPolicyId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + PredefinedPolicyName: "pReDeFiNeDpOlIcYvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnGaTeWaYaVaIlAbLeSsLoPtIoNs/dEfAuLt/pReDeFiNeDpOlIcIeS/pReDeFiNeDpOlIcYvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePredefinedPolicyIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.PredefinedPolicyName != v.Expected.PredefinedPolicyName { + t.Fatalf("Expected %q but got %q for PredefinedPolicyName", v.Expected.PredefinedPolicyName, actual.PredefinedPolicyName) + } + + } +} + +func TestSegmentsForPredefinedPolicyId(t *testing.T) { + segments := PredefinedPolicyId{}.Segments() + if len(segments) == 0 { + t.Fatalf("PredefinedPolicyId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/method_backendhealth.go b/resource-manager/network/2024-01-01/applicationgateways/method_backendhealth.go new file mode 100644 index 00000000000..bc7254fd7d6 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/method_backendhealth.go @@ -0,0 +1,99 @@ +package applicationgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendHealthOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *ApplicationGatewayBackendHealth +} + +type BackendHealthOperationOptions struct { + Expand *string +} + +func DefaultBackendHealthOperationOptions() BackendHealthOperationOptions { + return BackendHealthOperationOptions{} +} + +func (o BackendHealthOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o BackendHealthOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o BackendHealthOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// BackendHealth ... +func (c ApplicationGatewaysClient) BackendHealth(ctx context.Context, id ApplicationGatewayId, options BackendHealthOperationOptions) (result BackendHealthOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/backendhealth", id.ID()), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// BackendHealthThenPoll performs BackendHealth then polls until it's completed +func (c ApplicationGatewaysClient) BackendHealthThenPoll(ctx context.Context, id ApplicationGatewayId, options BackendHealthOperationOptions) error { + result, err := c.BackendHealth(ctx, id, options) + if err != nil { + return fmt.Errorf("performing BackendHealth: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after BackendHealth: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/method_backendhealthondemand.go b/resource-manager/network/2024-01-01/applicationgateways/method_backendhealthondemand.go new file mode 100644 index 00000000000..c99e1e55de2 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/method_backendhealthondemand.go @@ -0,0 +1,103 @@ +package applicationgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendHealthOnDemandOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *ApplicationGatewayBackendHealthOnDemand +} + +type BackendHealthOnDemandOperationOptions struct { + Expand *string +} + +func DefaultBackendHealthOnDemandOperationOptions() BackendHealthOnDemandOperationOptions { + return BackendHealthOnDemandOperationOptions{} +} + +func (o BackendHealthOnDemandOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o BackendHealthOnDemandOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o BackendHealthOnDemandOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// BackendHealthOnDemand ... +func (c ApplicationGatewaysClient) BackendHealthOnDemand(ctx context.Context, id ApplicationGatewayId, input ApplicationGatewayOnDemandProbe, options BackendHealthOnDemandOperationOptions) (result BackendHealthOnDemandOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/getBackendHealthOnDemand", id.ID()), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// BackendHealthOnDemandThenPoll performs BackendHealthOnDemand then polls until it's completed +func (c ApplicationGatewaysClient) BackendHealthOnDemandThenPoll(ctx context.Context, id ApplicationGatewayId, input ApplicationGatewayOnDemandProbe, options BackendHealthOnDemandOperationOptions) error { + result, err := c.BackendHealthOnDemand(ctx, id, input, options) + if err != nil { + return fmt.Errorf("performing BackendHealthOnDemand: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after BackendHealthOnDemand: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/method_createorupdate.go b/resource-manager/network/2024-01-01/applicationgateways/method_createorupdate.go new file mode 100644 index 00000000000..66330483b32 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/method_createorupdate.go @@ -0,0 +1,75 @@ +package applicationgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *ApplicationGateway +} + +// CreateOrUpdate ... +func (c ApplicationGatewaysClient) CreateOrUpdate(ctx context.Context, id ApplicationGatewayId, input ApplicationGateway) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c ApplicationGatewaysClient) CreateOrUpdateThenPoll(ctx context.Context, id ApplicationGatewayId, input ApplicationGateway) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/method_delete.go b/resource-manager/network/2024-01-01/applicationgateways/method_delete.go new file mode 100644 index 00000000000..6769fa69c24 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/method_delete.go @@ -0,0 +1,71 @@ +package applicationgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c ApplicationGatewaysClient) Delete(ctx context.Context, id ApplicationGatewayId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c ApplicationGatewaysClient) DeleteThenPoll(ctx context.Context, id ApplicationGatewayId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/method_get.go b/resource-manager/network/2024-01-01/applicationgateways/method_get.go new file mode 100644 index 00000000000..03000d91a47 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/method_get.go @@ -0,0 +1,54 @@ +package applicationgateways + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ApplicationGateway +} + +// Get ... +func (c ApplicationGatewaysClient) Get(ctx context.Context, id ApplicationGatewayId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ApplicationGateway + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/method_getsslpredefinedpolicy.go b/resource-manager/network/2024-01-01/applicationgateways/method_getsslpredefinedpolicy.go new file mode 100644 index 00000000000..97530703e81 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/method_getsslpredefinedpolicy.go @@ -0,0 +1,54 @@ +package applicationgateways + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetSslPredefinedPolicyOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ApplicationGatewaySslPredefinedPolicy +} + +// GetSslPredefinedPolicy ... +func (c ApplicationGatewaysClient) GetSslPredefinedPolicy(ctx context.Context, id PredefinedPolicyId) (result GetSslPredefinedPolicyOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ApplicationGatewaySslPredefinedPolicy + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/method_list.go b/resource-manager/network/2024-01-01/applicationgateways/method_list.go new file mode 100644 index 00000000000..5f1051eb154 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/method_list.go @@ -0,0 +1,93 @@ +package applicationgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ApplicationGateway +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []ApplicationGateway +} + +// List ... +func (c ApplicationGatewaysClient) List(ctx context.Context, id commonids.ResourceGroupId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/applicationGateways", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ApplicationGateway `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c ApplicationGatewaysClient) ListComplete(ctx context.Context, id commonids.ResourceGroupId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, ApplicationGatewayOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ApplicationGatewaysClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate ApplicationGatewayOperationPredicate) (result ListCompleteResult, err error) { + items := make([]ApplicationGateway, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/method_listall.go b/resource-manager/network/2024-01-01/applicationgateways/method_listall.go new file mode 100644 index 00000000000..b652121174a --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/method_listall.go @@ -0,0 +1,93 @@ +package applicationgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAllOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ApplicationGateway +} + +type ListAllCompleteResult struct { + LatestHttpResponse *http.Response + Items []ApplicationGateway +} + +// ListAll ... +func (c ApplicationGatewaysClient) ListAll(ctx context.Context, id commonids.SubscriptionId) (result ListAllOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/applicationGateways", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ApplicationGateway `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListAllComplete retrieves all the results into a single object +func (c ApplicationGatewaysClient) ListAllComplete(ctx context.Context, id commonids.SubscriptionId) (ListAllCompleteResult, error) { + return c.ListAllCompleteMatchingPredicate(ctx, id, ApplicationGatewayOperationPredicate{}) +} + +// ListAllCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ApplicationGatewaysClient) ListAllCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate ApplicationGatewayOperationPredicate) (result ListAllCompleteResult, err error) { + items := make([]ApplicationGateway, 0) + + resp, err := c.ListAll(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListAllCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/method_listavailablerequestheaders.go b/resource-manager/network/2024-01-01/applicationgateways/method_listavailablerequestheaders.go new file mode 100644 index 00000000000..634799c7f70 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/method_listavailablerequestheaders.go @@ -0,0 +1,56 @@ +package applicationgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAvailableRequestHeadersOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]string +} + +// ListAvailableRequestHeaders ... +func (c ApplicationGatewaysClient) ListAvailableRequestHeaders(ctx context.Context, id commonids.SubscriptionId) (result ListAvailableRequestHeadersOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/applicationGatewayAvailableRequestHeaders", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model []string + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/method_listavailableresponseheaders.go b/resource-manager/network/2024-01-01/applicationgateways/method_listavailableresponseheaders.go new file mode 100644 index 00000000000..fe99c70d2e7 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/method_listavailableresponseheaders.go @@ -0,0 +1,56 @@ +package applicationgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAvailableResponseHeadersOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]string +} + +// ListAvailableResponseHeaders ... +func (c ApplicationGatewaysClient) ListAvailableResponseHeaders(ctx context.Context, id commonids.SubscriptionId) (result ListAvailableResponseHeadersOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/applicationGatewayAvailableResponseHeaders", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model []string + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/method_listavailableservervariables.go b/resource-manager/network/2024-01-01/applicationgateways/method_listavailableservervariables.go new file mode 100644 index 00000000000..b48bb86d765 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/method_listavailableservervariables.go @@ -0,0 +1,56 @@ +package applicationgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAvailableServerVariablesOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]string +} + +// ListAvailableServerVariables ... +func (c ApplicationGatewaysClient) ListAvailableServerVariables(ctx context.Context, id commonids.SubscriptionId) (result ListAvailableServerVariablesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/applicationGatewayAvailableServerVariables", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model []string + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/method_listavailablessloptions.go b/resource-manager/network/2024-01-01/applicationgateways/method_listavailablessloptions.go new file mode 100644 index 00000000000..386a33e5e84 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/method_listavailablessloptions.go @@ -0,0 +1,56 @@ +package applicationgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAvailableSslOptionsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ApplicationGatewayAvailableSslOptions +} + +// ListAvailableSslOptions ... +func (c ApplicationGatewaysClient) ListAvailableSslOptions(ctx context.Context, id commonids.SubscriptionId) (result ListAvailableSslOptionsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ApplicationGatewayAvailableSslOptions + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/method_listavailablesslpredefinedpolicies.go b/resource-manager/network/2024-01-01/applicationgateways/method_listavailablesslpredefinedpolicies.go new file mode 100644 index 00000000000..e9498c59b10 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/method_listavailablesslpredefinedpolicies.go @@ -0,0 +1,93 @@ +package applicationgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAvailableSslPredefinedPoliciesOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ApplicationGatewaySslPredefinedPolicy +} + +type ListAvailableSslPredefinedPoliciesCompleteResult struct { + LatestHttpResponse *http.Response + Items []ApplicationGatewaySslPredefinedPolicy +} + +// ListAvailableSslPredefinedPolicies ... +func (c ApplicationGatewaysClient) ListAvailableSslPredefinedPolicies(ctx context.Context, id commonids.SubscriptionId) (result ListAvailableSslPredefinedPoliciesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default/predefinedPolicies", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ApplicationGatewaySslPredefinedPolicy `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListAvailableSslPredefinedPoliciesComplete retrieves all the results into a single object +func (c ApplicationGatewaysClient) ListAvailableSslPredefinedPoliciesComplete(ctx context.Context, id commonids.SubscriptionId) (ListAvailableSslPredefinedPoliciesCompleteResult, error) { + return c.ListAvailableSslPredefinedPoliciesCompleteMatchingPredicate(ctx, id, ApplicationGatewaySslPredefinedPolicyOperationPredicate{}) +} + +// ListAvailableSslPredefinedPoliciesCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ApplicationGatewaysClient) ListAvailableSslPredefinedPoliciesCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate ApplicationGatewaySslPredefinedPolicyOperationPredicate) (result ListAvailableSslPredefinedPoliciesCompleteResult, err error) { + items := make([]ApplicationGatewaySslPredefinedPolicy, 0) + + resp, err := c.ListAvailableSslPredefinedPolicies(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListAvailableSslPredefinedPoliciesCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/method_listavailablewafrulesets.go b/resource-manager/network/2024-01-01/applicationgateways/method_listavailablewafrulesets.go new file mode 100644 index 00000000000..3df1a2db564 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/method_listavailablewafrulesets.go @@ -0,0 +1,56 @@ +package applicationgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAvailableWafRuleSetsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ApplicationGatewayAvailableWafRuleSetsResult +} + +// ListAvailableWafRuleSets ... +func (c ApplicationGatewaysClient) ListAvailableWafRuleSets(ctx context.Context, id commonids.SubscriptionId) (result ListAvailableWafRuleSetsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/applicationGatewayAvailableWafRuleSets", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ApplicationGatewayAvailableWafRuleSetsResult + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/method_start.go b/resource-manager/network/2024-01-01/applicationgateways/method_start.go new file mode 100644 index 00000000000..828fc60cb3c --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/method_start.go @@ -0,0 +1,70 @@ +package applicationgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StartOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Start ... +func (c ApplicationGatewaysClient) Start(ctx context.Context, id ApplicationGatewayId) (result StartOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/start", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// StartThenPoll performs Start then polls until it's completed +func (c ApplicationGatewaysClient) StartThenPoll(ctx context.Context, id ApplicationGatewayId) error { + result, err := c.Start(ctx, id) + if err != nil { + return fmt.Errorf("performing Start: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Start: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/method_stop.go b/resource-manager/network/2024-01-01/applicationgateways/method_stop.go new file mode 100644 index 00000000000..75b68cdf697 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/method_stop.go @@ -0,0 +1,70 @@ +package applicationgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StopOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Stop ... +func (c ApplicationGatewaysClient) Stop(ctx context.Context, id ApplicationGatewayId) (result StopOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/stop", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// StopThenPoll performs Stop then polls until it's completed +func (c ApplicationGatewaysClient) StopThenPoll(ctx context.Context, id ApplicationGatewayId) error { + result, err := c.Stop(ctx, id) + if err != nil { + return fmt.Errorf("performing Stop: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Stop: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/method_updatetags.go b/resource-manager/network/2024-01-01/applicationgateways/method_updatetags.go new file mode 100644 index 00000000000..d22b3615559 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/method_updatetags.go @@ -0,0 +1,58 @@ +package applicationgateways + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ApplicationGateway +} + +// UpdateTags ... +func (c ApplicationGatewaysClient) UpdateTags(ctx context.Context, id ApplicationGatewayId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ApplicationGateway + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgateway.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgateway.go new file mode 100644 index 00000000000..26c26a88927 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgateway.go @@ -0,0 +1,21 @@ +package applicationgateways + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayauthenticationcertificate.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayauthenticationcertificate.go new file mode 100644 index 00000000000..21a1fec007f --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayauthenticationcertificate.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayAuthenticationCertificate struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayAuthenticationCertificatePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayauthenticationcertificatepropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayauthenticationcertificatepropertiesformat.go new file mode 100644 index 00000000000..37f5189d68a --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayauthenticationcertificatepropertiesformat.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayAuthenticationCertificatePropertiesFormat struct { + Data *string `json:"data,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayautoscaleconfiguration.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayautoscaleconfiguration.go new file mode 100644 index 00000000000..e8f13521e07 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayautoscaleconfiguration.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayAutoscaleConfiguration struct { + MaxCapacity *int64 `json:"maxCapacity,omitempty"` + MinCapacity int64 `json:"minCapacity"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayavailablessloptions.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayavailablessloptions.go new file mode 100644 index 00000000000..18677bfa9ad --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayavailablessloptions.go @@ -0,0 +1,13 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayAvailableSslOptions struct { + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayAvailableSslOptionsPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayavailablessloptionspropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayavailablessloptionspropertiesformat.go new file mode 100644 index 00000000000..552b956629b --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayavailablessloptionspropertiesformat.go @@ -0,0 +1,11 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayAvailableSslOptionsPropertiesFormat struct { + AvailableCipherSuites *[]ApplicationGatewaySslCipherSuite `json:"availableCipherSuites,omitempty"` + AvailableProtocols *[]ApplicationGatewaySslProtocol `json:"availableProtocols,omitempty"` + DefaultPolicy *ApplicationGatewaySslPolicyName `json:"defaultPolicy,omitempty"` + PredefinedPolicies *[]SubResource `json:"predefinedPolicies,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayavailablewafrulesetsresult.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayavailablewafrulesetsresult.go new file mode 100644 index 00000000000..b960a888077 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayavailablewafrulesetsresult.go @@ -0,0 +1,8 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayAvailableWafRuleSetsResult struct { + Value *[]ApplicationGatewayFirewallRuleSet `json:"value,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendaddress.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendaddress.go new file mode 100644 index 00000000000..9245b4581ff --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendaddress.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddress struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendaddresspool.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendaddresspool.go new file mode 100644 index 00000000000..e62cc5f5a6a --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendaddresspool.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..92e4b6fcae0 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendaddresspoolpropertiesformat.go @@ -0,0 +1,10 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPoolPropertiesFormat struct { + BackendAddresses *[]ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"` + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendhealth.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendhealth.go new file mode 100644 index 00000000000..b8439220957 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendhealth.go @@ -0,0 +1,8 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendHealth struct { + BackendAddressPools *[]ApplicationGatewayBackendHealthPool `json:"backendAddressPools,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendhealthhttpsettings.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendhealthhttpsettings.go new file mode 100644 index 00000000000..00f4c87c142 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendhealthhttpsettings.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendHealthHTTPSettings struct { + BackendHTTPSettings *ApplicationGatewayBackendHTTPSettings `json:"backendHttpSettings,omitempty"` + Servers *[]ApplicationGatewayBackendHealthServer `json:"servers,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendhealthondemand.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendhealthondemand.go new file mode 100644 index 00000000000..3bf6d17e80c --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendhealthondemand.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendHealthOnDemand struct { + BackendAddressPool *ApplicationGatewayBackendAddressPool `json:"backendAddressPool,omitempty"` + BackendHealthHTTPSettings *ApplicationGatewayBackendHealthHTTPSettings `json:"backendHealthHttpSettings,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendhealthpool.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendhealthpool.go new file mode 100644 index 00000000000..b32fffdf614 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendhealthpool.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendHealthPool struct { + BackendAddressPool *ApplicationGatewayBackendAddressPool `json:"backendAddressPool,omitempty"` + BackendHTTPSettingsCollection *[]ApplicationGatewayBackendHealthHTTPSettings `json:"backendHttpSettingsCollection,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendhealthserver.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendhealthserver.go new file mode 100644 index 00000000000..c11aed154b2 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendhealthserver.go @@ -0,0 +1,11 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendHealthServer struct { + Address *string `json:"address,omitempty"` + Health *ApplicationGatewayBackendHealthServerHealth `json:"health,omitempty"` + HealthProbeLog *string `json:"healthProbeLog,omitempty"` + IPConfiguration *NetworkInterfaceIPConfiguration `json:"ipConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendhttpsettings.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendhttpsettings.go new file mode 100644 index 00000000000..7cfbecd3506 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendhttpsettings.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendHTTPSettings struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendHTTPSettingsPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendhttpsettingspropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendhttpsettingspropertiesformat.go new file mode 100644 index 00000000000..68ccfd35301 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendhttpsettingspropertiesformat.go @@ -0,0 +1,21 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendHTTPSettingsPropertiesFormat struct { + AffinityCookieName *string `json:"affinityCookieName,omitempty"` + AuthenticationCertificates *[]SubResource `json:"authenticationCertificates,omitempty"` + ConnectionDraining *ApplicationGatewayConnectionDraining `json:"connectionDraining,omitempty"` + CookieBasedAffinity *ApplicationGatewayCookieBasedAffinity `json:"cookieBasedAffinity,omitempty"` + HostName *string `json:"hostName,omitempty"` + Path *string `json:"path,omitempty"` + PickHostNameFromBackendAddress *bool `json:"pickHostNameFromBackendAddress,omitempty"` + Port *int64 `json:"port,omitempty"` + Probe *SubResource `json:"probe,omitempty"` + ProbeEnabled *bool `json:"probeEnabled,omitempty"` + Protocol *ApplicationGatewayProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestTimeout *int64 `json:"requestTimeout,omitempty"` + TrustedRootCertificates *[]SubResource `json:"trustedRootCertificates,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendsettings.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendsettings.go new file mode 100644 index 00000000000..435626e7296 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendsettings.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendSettings struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendSettingsPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendsettingspropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendsettingspropertiesformat.go new file mode 100644 index 00000000000..5d5c1275f2e --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaybackendsettingspropertiesformat.go @@ -0,0 +1,15 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendSettingsPropertiesFormat struct { + HostName *string `json:"hostName,omitempty"` + PickHostNameFromBackendAddress *bool `json:"pickHostNameFromBackendAddress,omitempty"` + Port *int64 `json:"port,omitempty"` + Probe *SubResource `json:"probe,omitempty"` + Protocol *ApplicationGatewayProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Timeout *int64 `json:"timeout,omitempty"` + TrustedRootCertificates *[]SubResource `json:"trustedRootCertificates,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayclientauthconfiguration.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayclientauthconfiguration.go new file mode 100644 index 00000000000..7be179f89f0 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayclientauthconfiguration.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayClientAuthConfiguration struct { + VerifyClientCertIssuerDN *bool `json:"verifyClientCertIssuerDN,omitempty"` + VerifyClientRevocation *ApplicationGatewayClientRevocationOptions `json:"verifyClientRevocation,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayconnectiondraining.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayconnectiondraining.go new file mode 100644 index 00000000000..f40777a88f8 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayconnectiondraining.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayConnectionDraining struct { + DrainTimeoutInSec int64 `json:"drainTimeoutInSec"` + Enabled bool `json:"enabled"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaycustomerror.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaycustomerror.go new file mode 100644 index 00000000000..532de5a8e93 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaycustomerror.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayCustomError struct { + CustomErrorPageUrl *string `json:"customErrorPageUrl,omitempty"` + StatusCode *ApplicationGatewayCustomErrorStatusCode `json:"statusCode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfirewalldisabledrulegroup.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfirewalldisabledrulegroup.go new file mode 100644 index 00000000000..30534c50f52 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfirewalldisabledrulegroup.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayFirewallDisabledRuleGroup struct { + RuleGroupName string `json:"ruleGroupName"` + Rules *[]int64 `json:"rules,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfirewallexclusion.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfirewallexclusion.go new file mode 100644 index 00000000000..77bfe2cf65c --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfirewallexclusion.go @@ -0,0 +1,10 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayFirewallExclusion struct { + MatchVariable string `json:"matchVariable"` + Selector string `json:"selector"` + SelectorMatchOperator string `json:"selectorMatchOperator"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfirewallrule.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfirewallrule.go new file mode 100644 index 00000000000..c9a89bac633 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfirewallrule.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayFirewallRule struct { + Action *ApplicationGatewayWafRuleActionTypes `json:"action,omitempty"` + Description *string `json:"description,omitempty"` + RuleId int64 `json:"ruleId"` + RuleIdString *string `json:"ruleIdString,omitempty"` + State *ApplicationGatewayWafRuleStateTypes `json:"state,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfirewallrulegroup.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfirewallrulegroup.go new file mode 100644 index 00000000000..06c7cbffb38 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfirewallrulegroup.go @@ -0,0 +1,10 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayFirewallRuleGroup struct { + Description *string `json:"description,omitempty"` + RuleGroupName string `json:"ruleGroupName"` + Rules []ApplicationGatewayFirewallRule `json:"rules"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfirewallruleset.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfirewallruleset.go new file mode 100644 index 00000000000..3eb74351624 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfirewallruleset.go @@ -0,0 +1,13 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayFirewallRuleSet struct { + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayFirewallRuleSetPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfirewallrulesetpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfirewallrulesetpropertiesformat.go new file mode 100644 index 00000000000..f0bd967c325 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfirewallrulesetpropertiesformat.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayFirewallRuleSetPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RuleGroups []ApplicationGatewayFirewallRuleGroup `json:"ruleGroups"` + RuleSetType string `json:"ruleSetType"` + RuleSetVersion string `json:"ruleSetVersion"` + Tiers *[]ApplicationGatewayTierTypes `json:"tiers,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfrontendipconfiguration.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfrontendipconfiguration.go new file mode 100644 index 00000000000..16f3a44fe68 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfrontendipconfiguration.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayFrontendIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayFrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfrontendipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfrontendipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..45f83bbaa11 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfrontendipconfigurationpropertiesformat.go @@ -0,0 +1,13 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayFrontendIPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + PrivateLinkConfiguration *SubResource `json:"privateLinkConfiguration,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *SubResource `json:"publicIPAddress,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfrontendport.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfrontendport.go new file mode 100644 index 00000000000..9b3c8763e01 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfrontendport.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayFrontendPort struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayFrontendPortPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfrontendportpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfrontendportpropertiesformat.go new file mode 100644 index 00000000000..a9399610b8b --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayfrontendportpropertiesformat.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayFrontendPortPropertiesFormat struct { + Port *int64 `json:"port,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayglobalconfiguration.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayglobalconfiguration.go new file mode 100644 index 00000000000..8f031b6ad38 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayglobalconfiguration.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayGlobalConfiguration struct { + EnableRequestBuffering *bool `json:"enableRequestBuffering,omitempty"` + EnableResponseBuffering *bool `json:"enableResponseBuffering,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayheaderconfiguration.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayheaderconfiguration.go new file mode 100644 index 00000000000..a7a9580c702 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayheaderconfiguration.go @@ -0,0 +1,10 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayHeaderConfiguration struct { + HeaderName *string `json:"headerName,omitempty"` + HeaderValue *string `json:"headerValue,omitempty"` + HeaderValueMatcher *HeaderValueMatcher `json:"headerValueMatcher,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayhttplistener.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayhttplistener.go new file mode 100644 index 00000000000..457c3af7d7b --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayhttplistener.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayHTTPListener struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayHTTPListenerPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayhttplistenerpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayhttplistenerpropertiesformat.go new file mode 100644 index 00000000000..7d3436f6186 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayhttplistenerpropertiesformat.go @@ -0,0 +1,18 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayHTTPListenerPropertiesFormat struct { + CustomErrorConfigurations *[]ApplicationGatewayCustomError `json:"customErrorConfigurations,omitempty"` + FirewallPolicy *SubResource `json:"firewallPolicy,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *SubResource `json:"frontendPort,omitempty"` + HostName *string `json:"hostName,omitempty"` + HostNames *[]string `json:"hostNames,omitempty"` + Protocol *ApplicationGatewayProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequireServerNameIndication *bool `json:"requireServerNameIndication,omitempty"` + SslCertificate *SubResource `json:"sslCertificate,omitempty"` + SslProfile *SubResource `json:"sslProfile,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayipconfiguration.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayipconfiguration.go new file mode 100644 index 00000000000..7b513c56359 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayipconfiguration.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..67b2b22486e --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayipconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaylistener.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaylistener.go new file mode 100644 index 00000000000..eb251dad173 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaylistener.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayListener struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayListenerPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaylistenerpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaylistenerpropertiesformat.go new file mode 100644 index 00000000000..96c7728780d --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaylistenerpropertiesformat.go @@ -0,0 +1,14 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayListenerPropertiesFormat struct { + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *SubResource `json:"frontendPort,omitempty"` + HostNames *[]string `json:"hostNames,omitempty"` + Protocol *ApplicationGatewayProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SslCertificate *SubResource `json:"sslCertificate,omitempty"` + SslProfile *SubResource `json:"sslProfile,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayloaddistributionpolicy.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayloaddistributionpolicy.go new file mode 100644 index 00000000000..9c07ad54259 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayloaddistributionpolicy.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayLoadDistributionPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayLoadDistributionPolicyPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayloaddistributionpolicypropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayloaddistributionpolicypropertiesformat.go new file mode 100644 index 00000000000..9ae762454d0 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayloaddistributionpolicypropertiesformat.go @@ -0,0 +1,10 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayLoadDistributionPolicyPropertiesFormat struct { + LoadDistributionAlgorithm *ApplicationGatewayLoadDistributionAlgorithm `json:"loadDistributionAlgorithm,omitempty"` + LoadDistributionTargets *[]ApplicationGatewayLoadDistributionTarget `json:"loadDistributionTargets,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayloaddistributiontarget.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayloaddistributiontarget.go new file mode 100644 index 00000000000..5db29bd27a5 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayloaddistributiontarget.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayLoadDistributionTarget struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayLoadDistributionTargetPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayloaddistributiontargetpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayloaddistributiontargetpropertiesformat.go new file mode 100644 index 00000000000..cd785c4126e --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayloaddistributiontargetpropertiesformat.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayLoadDistributionTargetPropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + WeightPerServer *int64 `json:"weightPerServer,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayondemandprobe.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayondemandprobe.go new file mode 100644 index 00000000000..6ee19e174e2 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayondemandprobe.go @@ -0,0 +1,15 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayOnDemandProbe struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendHTTPSettings *SubResource `json:"backendHttpSettings,omitempty"` + Host *string `json:"host,omitempty"` + Match *ApplicationGatewayProbeHealthResponseMatch `json:"match,omitempty"` + Path *string `json:"path,omitempty"` + PickHostNameFromBackendHTTPSettings *bool `json:"pickHostNameFromBackendHttpSettings,omitempty"` + Protocol *ApplicationGatewayProtocol `json:"protocol,omitempty"` + Timeout *int64 `json:"timeout,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaypathrule.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaypathrule.go new file mode 100644 index 00000000000..ae684eb5860 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaypathrule.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPathRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayPathRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaypathrulepropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaypathrulepropertiesformat.go new file mode 100644 index 00000000000..c0586444c85 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaypathrulepropertiesformat.go @@ -0,0 +1,15 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPathRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendHTTPSettings *SubResource `json:"backendHttpSettings,omitempty"` + FirewallPolicy *SubResource `json:"firewallPolicy,omitempty"` + LoadDistributionPolicy *SubResource `json:"loadDistributionPolicy,omitempty"` + Paths *[]string `json:"paths,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RedirectConfiguration *SubResource `json:"redirectConfiguration,omitempty"` + RewriteRuleSet *SubResource `json:"rewriteRuleSet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprivateendpointconnection.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprivateendpointconnection.go new file mode 100644 index 00000000000..8099219aff4 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprivateendpointconnection.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayPrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprivateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprivateendpointconnectionproperties.go new file mode 100644 index 00000000000..400c841d704 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprivateendpointconnectionproperties.go @@ -0,0 +1,11 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprivatelinkconfiguration.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprivatelinkconfiguration.go new file mode 100644 index 00000000000..1997234fb4d --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprivatelinkconfiguration.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPrivateLinkConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayPrivateLinkConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprivatelinkconfigurationproperties.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprivatelinkconfigurationproperties.go new file mode 100644 index 00000000000..b86b3f17014 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprivatelinkconfigurationproperties.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPrivateLinkConfigurationProperties struct { + IPConfigurations *[]ApplicationGatewayPrivateLinkIPConfiguration `json:"ipConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprivatelinkipconfiguration.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprivatelinkipconfiguration.go new file mode 100644 index 00000000000..ad8bfa28be7 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprivatelinkipconfiguration.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPrivateLinkIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayPrivateLinkIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprivatelinkipconfigurationproperties.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprivatelinkipconfigurationproperties.go new file mode 100644 index 00000000000..b2d2b2af23a --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprivatelinkipconfigurationproperties.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPrivateLinkIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprobe.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprobe.go new file mode 100644 index 00000000000..9b27b4f7133 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprobe.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayProbe struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayProbePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprobehealthresponsematch.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprobehealthresponsematch.go new file mode 100644 index 00000000000..68ccf1eaaaf --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprobehealthresponsematch.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayProbeHealthResponseMatch struct { + Body *string `json:"body,omitempty"` + StatusCodes *[]string `json:"statusCodes,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprobepropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprobepropertiesformat.go new file mode 100644 index 00000000000..dab5ee7ae23 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayprobepropertiesformat.go @@ -0,0 +1,19 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayProbePropertiesFormat struct { + Host *string `json:"host,omitempty"` + Interval *int64 `json:"interval,omitempty"` + Match *ApplicationGatewayProbeHealthResponseMatch `json:"match,omitempty"` + MinServers *int64 `json:"minServers,omitempty"` + Path *string `json:"path,omitempty"` + PickHostNameFromBackendHTTPSettings *bool `json:"pickHostNameFromBackendHttpSettings,omitempty"` + PickHostNameFromBackendSettings *bool `json:"pickHostNameFromBackendSettings,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *ApplicationGatewayProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Timeout *int64 `json:"timeout,omitempty"` + UnhealthyThreshold *int64 `json:"unhealthyThreshold,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaypropertiesformat.go new file mode 100644 index 00000000000..1332febd49d --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaypropertiesformat.go @@ -0,0 +1,43 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPropertiesFormat struct { + AuthenticationCertificates *[]ApplicationGatewayAuthenticationCertificate `json:"authenticationCertificates,omitempty"` + AutoscaleConfiguration *ApplicationGatewayAutoscaleConfiguration `json:"autoscaleConfiguration,omitempty"` + BackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"backendAddressPools,omitempty"` + BackendHTTPSettingsCollection *[]ApplicationGatewayBackendHTTPSettings `json:"backendHttpSettingsCollection,omitempty"` + BackendSettingsCollection *[]ApplicationGatewayBackendSettings `json:"backendSettingsCollection,omitempty"` + CustomErrorConfigurations *[]ApplicationGatewayCustomError `json:"customErrorConfigurations,omitempty"` + DefaultPredefinedSslPolicy *ApplicationGatewaySslPolicyName `json:"defaultPredefinedSslPolicy,omitempty"` + EnableFips *bool `json:"enableFips,omitempty"` + EnableHTTP2 *bool `json:"enableHttp2,omitempty"` + FirewallPolicy *SubResource `json:"firewallPolicy,omitempty"` + ForceFirewallPolicyAssociation *bool `json:"forceFirewallPolicyAssociation,omitempty"` + FrontendIPConfigurations *[]ApplicationGatewayFrontendIPConfiguration `json:"frontendIPConfigurations,omitempty"` + FrontendPorts *[]ApplicationGatewayFrontendPort `json:"frontendPorts,omitempty"` + GatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"gatewayIPConfigurations,omitempty"` + GlobalConfiguration *ApplicationGatewayGlobalConfiguration `json:"globalConfiguration,omitempty"` + HTTPListeners *[]ApplicationGatewayHTTPListener `json:"httpListeners,omitempty"` + Listeners *[]ApplicationGatewayListener `json:"listeners,omitempty"` + LoadDistributionPolicies *[]ApplicationGatewayLoadDistributionPolicy `json:"loadDistributionPolicies,omitempty"` + OperationalState *ApplicationGatewayOperationalState `json:"operationalState,omitempty"` + PrivateEndpointConnections *[]ApplicationGatewayPrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + PrivateLinkConfigurations *[]ApplicationGatewayPrivateLinkConfiguration `json:"privateLinkConfigurations,omitempty"` + Probes *[]ApplicationGatewayProbe `json:"probes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RedirectConfigurations *[]ApplicationGatewayRedirectConfiguration `json:"redirectConfigurations,omitempty"` + RequestRoutingRules *[]ApplicationGatewayRequestRoutingRule `json:"requestRoutingRules,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + RewriteRuleSets *[]ApplicationGatewayRewriteRuleSet `json:"rewriteRuleSets,omitempty"` + RoutingRules *[]ApplicationGatewayRoutingRule `json:"routingRules,omitempty"` + Sku *ApplicationGatewaySku `json:"sku,omitempty"` + SslCertificates *[]ApplicationGatewaySslCertificate `json:"sslCertificates,omitempty"` + SslPolicy *ApplicationGatewaySslPolicy `json:"sslPolicy,omitempty"` + SslProfiles *[]ApplicationGatewaySslProfile `json:"sslProfiles,omitempty"` + TrustedClientCertificates *[]ApplicationGatewayTrustedClientCertificate `json:"trustedClientCertificates,omitempty"` + TrustedRootCertificates *[]ApplicationGatewayTrustedRootCertificate `json:"trustedRootCertificates,omitempty"` + UrlPathMaps *[]ApplicationGatewayUrlPathMap `json:"urlPathMaps,omitempty"` + WebApplicationFirewallConfiguration *ApplicationGatewayWebApplicationFirewallConfiguration `json:"webApplicationFirewallConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayredirectconfiguration.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayredirectconfiguration.go new file mode 100644 index 00000000000..99a2df5f0de --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayredirectconfiguration.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayRedirectConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayRedirectConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayredirectconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayredirectconfigurationpropertiesformat.go new file mode 100644 index 00000000000..07b97214f7f --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayredirectconfigurationpropertiesformat.go @@ -0,0 +1,15 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayRedirectConfigurationPropertiesFormat struct { + IncludePath *bool `json:"includePath,omitempty"` + IncludeQueryString *bool `json:"includeQueryString,omitempty"` + PathRules *[]SubResource `json:"pathRules,omitempty"` + RedirectType *ApplicationGatewayRedirectType `json:"redirectType,omitempty"` + RequestRoutingRules *[]SubResource `json:"requestRoutingRules,omitempty"` + TargetListener *SubResource `json:"targetListener,omitempty"` + TargetUrl *string `json:"targetUrl,omitempty"` + UrlPathMaps *[]SubResource `json:"urlPathMaps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayrequestroutingrule.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayrequestroutingrule.go new file mode 100644 index 00000000000..8968674820d --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayrequestroutingrule.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayRequestRoutingRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayRequestRoutingRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayrequestroutingrulepropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayrequestroutingrulepropertiesformat.go new file mode 100644 index 00000000000..d7ab0f3f4d9 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayrequestroutingrulepropertiesformat.go @@ -0,0 +1,17 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayRequestRoutingRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendHTTPSettings *SubResource `json:"backendHttpSettings,omitempty"` + HTTPListener *SubResource `json:"httpListener,omitempty"` + LoadDistributionPolicy *SubResource `json:"loadDistributionPolicy,omitempty"` + Priority *int64 `json:"priority,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RedirectConfiguration *SubResource `json:"redirectConfiguration,omitempty"` + RewriteRuleSet *SubResource `json:"rewriteRuleSet,omitempty"` + RuleType *ApplicationGatewayRequestRoutingRuleType `json:"ruleType,omitempty"` + UrlPathMap *SubResource `json:"urlPathMap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayrewriterule.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayrewriterule.go new file mode 100644 index 00000000000..6ce3b9a1f5d --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayrewriterule.go @@ -0,0 +1,11 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayRewriteRule struct { + ActionSet *ApplicationGatewayRewriteRuleActionSet `json:"actionSet,omitempty"` + Conditions *[]ApplicationGatewayRewriteRuleCondition `json:"conditions,omitempty"` + Name *string `json:"name,omitempty"` + RuleSequence *int64 `json:"ruleSequence,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayrewriteruleactionset.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayrewriteruleactionset.go new file mode 100644 index 00000000000..02be2e1f37b --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayrewriteruleactionset.go @@ -0,0 +1,10 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayRewriteRuleActionSet struct { + RequestHeaderConfigurations *[]ApplicationGatewayHeaderConfiguration `json:"requestHeaderConfigurations,omitempty"` + ResponseHeaderConfigurations *[]ApplicationGatewayHeaderConfiguration `json:"responseHeaderConfigurations,omitempty"` + UrlConfiguration *ApplicationGatewayUrlConfiguration `json:"urlConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayrewriterulecondition.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayrewriterulecondition.go new file mode 100644 index 00000000000..c7e6af3b85a --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayrewriterulecondition.go @@ -0,0 +1,11 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayRewriteRuleCondition struct { + IgnoreCase *bool `json:"ignoreCase,omitempty"` + Negate *bool `json:"negate,omitempty"` + Pattern *string `json:"pattern,omitempty"` + Variable *string `json:"variable,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayrewriteruleset.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayrewriteruleset.go new file mode 100644 index 00000000000..571e9038508 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayrewriteruleset.go @@ -0,0 +1,11 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayRewriteRuleSet struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayRewriteRuleSetPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayrewriterulesetpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayrewriterulesetpropertiesformat.go new file mode 100644 index 00000000000..031206c13ce --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayrewriterulesetpropertiesformat.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayRewriteRuleSetPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RewriteRules *[]ApplicationGatewayRewriteRule `json:"rewriteRules,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayroutingrule.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayroutingrule.go new file mode 100644 index 00000000000..448709de6b4 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayroutingrule.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayRoutingRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayRoutingRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayroutingrulepropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayroutingrulepropertiesformat.go new file mode 100644 index 00000000000..5be00552534 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayroutingrulepropertiesformat.go @@ -0,0 +1,13 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayRoutingRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendSettings *SubResource `json:"backendSettings,omitempty"` + Listener *SubResource `json:"listener,omitempty"` + Priority int64 `json:"priority"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RuleType *ApplicationGatewayRequestRoutingRuleType `json:"ruleType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysku.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysku.go new file mode 100644 index 00000000000..461f2f965a6 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysku.go @@ -0,0 +1,11 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewaySku struct { + Capacity *int64 `json:"capacity,omitempty"` + Family *ApplicationGatewaySkuFamily `json:"family,omitempty"` + Name *ApplicationGatewaySkuName `json:"name,omitempty"` + Tier *ApplicationGatewayTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysslcertificate.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysslcertificate.go new file mode 100644 index 00000000000..1f589867862 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysslcertificate.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewaySslCertificate struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewaySslCertificatePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysslcertificatepropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysslcertificatepropertiesformat.go new file mode 100644 index 00000000000..1c92efb93bd --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysslcertificatepropertiesformat.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewaySslCertificatePropertiesFormat struct { + Data *string `json:"data,omitempty"` + KeyVaultSecretId *string `json:"keyVaultSecretId,omitempty"` + Password *string `json:"password,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicCertData *string `json:"publicCertData,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysslpolicy.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysslpolicy.go new file mode 100644 index 00000000000..be42ac49a18 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysslpolicy.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewaySslPolicy struct { + CipherSuites *[]ApplicationGatewaySslCipherSuite `json:"cipherSuites,omitempty"` + DisabledSslProtocols *[]ApplicationGatewaySslProtocol `json:"disabledSslProtocols,omitempty"` + MinProtocolVersion *ApplicationGatewaySslProtocol `json:"minProtocolVersion,omitempty"` + PolicyName *ApplicationGatewaySslPolicyName `json:"policyName,omitempty"` + PolicyType *ApplicationGatewaySslPolicyType `json:"policyType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysslpredefinedpolicy.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysslpredefinedpolicy.go new file mode 100644 index 00000000000..a7932dc66db --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysslpredefinedpolicy.go @@ -0,0 +1,10 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewaySslPredefinedPolicy struct { + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewaySslPredefinedPolicyPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysslpredefinedpolicypropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysslpredefinedpolicypropertiesformat.go new file mode 100644 index 00000000000..15702750dea --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysslpredefinedpolicypropertiesformat.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewaySslPredefinedPolicyPropertiesFormat struct { + CipherSuites *[]ApplicationGatewaySslCipherSuite `json:"cipherSuites,omitempty"` + MinProtocolVersion *ApplicationGatewaySslProtocol `json:"minProtocolVersion,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysslprofile.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysslprofile.go new file mode 100644 index 00000000000..609877668f8 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysslprofile.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewaySslProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewaySslProfilePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysslprofilepropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysslprofilepropertiesformat.go new file mode 100644 index 00000000000..a7c5ae2c883 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaysslprofilepropertiesformat.go @@ -0,0 +1,11 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewaySslProfilePropertiesFormat struct { + ClientAuthConfiguration *ApplicationGatewayClientAuthConfiguration `json:"clientAuthConfiguration,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SslPolicy *ApplicationGatewaySslPolicy `json:"sslPolicy,omitempty"` + TrustedClientCertificates *[]SubResource `json:"trustedClientCertificates,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaytrustedclientcertificate.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaytrustedclientcertificate.go new file mode 100644 index 00000000000..731b46860d7 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaytrustedclientcertificate.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayTrustedClientCertificate struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayTrustedClientCertificatePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaytrustedclientcertificatepropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaytrustedclientcertificatepropertiesformat.go new file mode 100644 index 00000000000..67b5d91461d --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaytrustedclientcertificatepropertiesformat.go @@ -0,0 +1,11 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayTrustedClientCertificatePropertiesFormat struct { + ClientCertIssuerDN *string `json:"clientCertIssuerDN,omitempty"` + Data *string `json:"data,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ValidatedCertData *string `json:"validatedCertData,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaytrustedrootcertificate.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaytrustedrootcertificate.go new file mode 100644 index 00000000000..12343718b35 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaytrustedrootcertificate.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayTrustedRootCertificate struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayTrustedRootCertificatePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaytrustedrootcertificatepropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaytrustedrootcertificatepropertiesformat.go new file mode 100644 index 00000000000..7aeb8e0a84e --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaytrustedrootcertificatepropertiesformat.go @@ -0,0 +1,10 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayTrustedRootCertificatePropertiesFormat struct { + Data *string `json:"data,omitempty"` + KeyVaultSecretId *string `json:"keyVaultSecretId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayurlconfiguration.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayurlconfiguration.go new file mode 100644 index 00000000000..18491c35f12 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayurlconfiguration.go @@ -0,0 +1,10 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayUrlConfiguration struct { + ModifiedPath *string `json:"modifiedPath,omitempty"` + ModifiedQueryString *string `json:"modifiedQueryString,omitempty"` + Reroute *bool `json:"reroute,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayurlpathmap.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayurlpathmap.go new file mode 100644 index 00000000000..5fc06877578 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayurlpathmap.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayUrlPathMap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayUrlPathMapPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayurlpathmappropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayurlpathmappropertiesformat.go new file mode 100644 index 00000000000..ef8e7e8e02f --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewayurlpathmappropertiesformat.go @@ -0,0 +1,14 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayUrlPathMapPropertiesFormat struct { + DefaultBackendAddressPool *SubResource `json:"defaultBackendAddressPool,omitempty"` + DefaultBackendHTTPSettings *SubResource `json:"defaultBackendHttpSettings,omitempty"` + DefaultLoadDistributionPolicy *SubResource `json:"defaultLoadDistributionPolicy,omitempty"` + DefaultRedirectConfiguration *SubResource `json:"defaultRedirectConfiguration,omitempty"` + DefaultRewriteRuleSet *SubResource `json:"defaultRewriteRuleSet,omitempty"` + PathRules *[]ApplicationGatewayPathRule `json:"pathRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaywebapplicationfirewallconfiguration.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaywebapplicationfirewallconfiguration.go new file mode 100644 index 00000000000..561512df449 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationgatewaywebapplicationfirewallconfiguration.go @@ -0,0 +1,17 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayWebApplicationFirewallConfiguration struct { + DisabledRuleGroups *[]ApplicationGatewayFirewallDisabledRuleGroup `json:"disabledRuleGroups,omitempty"` + Enabled bool `json:"enabled"` + Exclusions *[]ApplicationGatewayFirewallExclusion `json:"exclusions,omitempty"` + FileUploadLimitInMb *int64 `json:"fileUploadLimitInMb,omitempty"` + FirewallMode ApplicationGatewayFirewallMode `json:"firewallMode"` + MaxRequestBodySize *int64 `json:"maxRequestBodySize,omitempty"` + MaxRequestBodySizeInKb *int64 `json:"maxRequestBodySizeInKb,omitempty"` + RequestBodyCheck *bool `json:"requestBodyCheck,omitempty"` + RuleSetType string `json:"ruleSetType"` + RuleSetVersion string `json:"ruleSetVersion"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..71e4f60a5a0 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..c8593cff776 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_backendaddresspool.go b/resource-manager/network/2024-01-01/applicationgateways/model_backendaddresspool.go new file mode 100644 index 00000000000..1a7d2037c67 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_backendaddresspool.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_backendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_backendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..74aca7bc73d --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_backendaddresspoolpropertiesformat.go @@ -0,0 +1,19 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPoolPropertiesFormat struct { + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + DrainPeriodInSeconds *int64 `json:"drainPeriodInSeconds,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancerBackendAddresses *[]LoadBalancerBackendAddress `json:"loadBalancerBackendAddresses,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + Location *string `json:"location,omitempty"` + OutboundRule *SubResource `json:"outboundRule,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SyncMode *SyncMode `json:"syncMode,omitempty"` + TunnelInterfaces *[]GatewayLoadBalancerTunnelInterface `json:"tunnelInterfaces,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_customdnsconfigpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_customdnsconfigpropertiesformat.go new file mode 100644 index 00000000000..821207ea54b --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_customdnsconfigpropertiesformat.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomDnsConfigPropertiesFormat struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_ddossettings.go b/resource-manager/network/2024-01-01/applicationgateways/model_ddossettings.go new file mode 100644 index 00000000000..afe28edd8fc --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_ddossettings.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettings struct { + DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"` + ProtectionMode *DdosSettingsProtectionMode `json:"protectionMode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_delegation.go b/resource-manager/network/2024-01-01/applicationgateways/model_delegation.go new file mode 100644 index 00000000000..dde48e048ee --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_delegation.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Delegation struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceDelegationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_flowlog.go b/resource-manager/network/2024-01-01/applicationgateways/model_flowlog.go new file mode 100644 index 00000000000..af3968a2f68 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_flowlog.go @@ -0,0 +1,19 @@ +package applicationgateways + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLog struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FlowLogPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/applicationgateways/model_flowlogformatparameters.go new file mode 100644 index 00000000000..79d541b9318 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_flowlogpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_flowlogpropertiesformat.go new file mode 100644 index 00000000000..666f7fd230f --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_flowlogpropertiesformat.go @@ -0,0 +1,15 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogPropertiesFormat struct { + Enabled *bool `json:"enabled,omitempty"` + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` + TargetResourceGuid *string `json:"targetResourceGuid,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_frontendipconfiguration.go b/resource-manager/network/2024-01-01/applicationgateways/model_frontendipconfiguration.go new file mode 100644 index 00000000000..6af1ef34991 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_frontendipconfiguration.go @@ -0,0 +1,17 @@ +package applicationgateways + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_frontendipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_frontendipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..dfcbf3e5aca --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_frontendipconfigurationpropertiesformat.go @@ -0,0 +1,19 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfigurationPropertiesFormat struct { + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + InboundNatPools *[]SubResource `json:"inboundNatPools,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_gatewayloadbalancertunnelinterface.go b/resource-manager/network/2024-01-01/applicationgateways/model_gatewayloadbalancertunnelinterface.go new file mode 100644 index 00000000000..81f73592309 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_gatewayloadbalancertunnelinterface.go @@ -0,0 +1,11 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayLoadBalancerTunnelInterface struct { + Identifier *int64 `json:"identifier,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *GatewayLoadBalancerTunnelProtocol `json:"protocol,omitempty"` + Type *GatewayLoadBalancerTunnelInterfaceType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_headervaluematcher.go b/resource-manager/network/2024-01-01/applicationgateways/model_headervaluematcher.go new file mode 100644 index 00000000000..5c2f77f54e2 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_headervaluematcher.go @@ -0,0 +1,10 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HeaderValueMatcher struct { + IgnoreCase *bool `json:"ignoreCase,omitempty"` + Negate *bool `json:"negate,omitempty"` + Pattern *string `json:"pattern,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_inboundnatrule.go b/resource-manager/network/2024-01-01/applicationgateways/model_inboundnatrule.go new file mode 100644 index 00000000000..e8326d63cdd --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_inboundnatrule.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundNatRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_inboundnatrulepropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_inboundnatrulepropertiesformat.go new file mode 100644 index 00000000000..e68b37342b3 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_inboundnatrulepropertiesformat.go @@ -0,0 +1,19 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendIPConfiguration *NetworkInterfaceIPConfiguration `json:"backendIPConfiguration,omitempty"` + BackendPort *int64 `json:"backendPort,omitempty"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + FrontendPortRangeEnd *int64 `json:"frontendPortRangeEnd,omitempty"` + FrontendPortRangeStart *int64 `json:"frontendPortRangeStart,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol *TransportProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_ipconfiguration.go b/resource-manager/network/2024-01-01/applicationgateways/model_ipconfiguration.go new file mode 100644 index 00000000000..3035f84c596 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_ipconfiguration.go @@ -0,0 +1,11 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_ipconfigurationprofile.go b/resource-manager/network/2024-01-01/applicationgateways/model_ipconfigurationprofile.go new file mode 100644 index 00000000000..edb884d2718 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_ipconfigurationprofile.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationProfilePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_ipconfigurationprofilepropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_ipconfigurationprofilepropertiesformat.go new file mode 100644 index 00000000000..1c6df0dcda2 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_ipconfigurationprofilepropertiesformat.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfilePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_ipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_ipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..5de8de82f9e --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_ipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_iptag.go b/resource-manager/network/2024-01-01/applicationgateways/model_iptag.go new file mode 100644 index 00000000000..e423a8c0593 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_iptag.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPTag struct { + IPTagType *string `json:"ipTagType,omitempty"` + Tag *string `json:"tag,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_loadbalancerbackendaddress.go b/resource-manager/network/2024-01-01/applicationgateways/model_loadbalancerbackendaddress.go new file mode 100644 index 00000000000..a4bb848daa5 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_loadbalancerbackendaddress.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddress struct { + Name *string `json:"name,omitempty"` + Properties *LoadBalancerBackendAddressPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_loadbalancerbackendaddresspropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_loadbalancerbackendaddresspropertiesformat.go new file mode 100644 index 00000000000..ab1822cd6b6 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_loadbalancerbackendaddresspropertiesformat.go @@ -0,0 +1,14 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPropertiesFormat struct { + AdminState *LoadBalancerBackendAddressAdminState `json:"adminState,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + InboundNatRulesPortMapping *[]NatRulePortMapping `json:"inboundNatRulesPortMapping,omitempty"` + LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIPConfiguration,omitempty"` + NetworkInterfaceIPConfiguration *SubResource `json:"networkInterfaceIPConfiguration,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_natgateway.go b/resource-manager/network/2024-01-01/applicationgateways/model_natgateway.go new file mode 100644 index 00000000000..eb51b102cad --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_natgateway.go @@ -0,0 +1,20 @@ +package applicationgateways + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"` + Sku *NatGatewaySku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_natgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_natgatewaypropertiesformat.go new file mode 100644 index 00000000000..21ac8a2eca2 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_natgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayPropertiesFormat struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]SubResource `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_natgatewaysku.go b/resource-manager/network/2024-01-01/applicationgateways/model_natgatewaysku.go new file mode 100644 index 00000000000..54ee08d2498 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_natgatewaysku.go @@ -0,0 +1,8 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySku struct { + Name *NatGatewaySkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_natruleportmapping.go b/resource-manager/network/2024-01-01/applicationgateways/model_natruleportmapping.go new file mode 100644 index 00000000000..1ca2ef21443 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_natruleportmapping.go @@ -0,0 +1,10 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulePortMapping struct { + BackendPort *int64 `json:"backendPort,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + InboundNatRuleName *string `json:"inboundNatRuleName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_networkinterface.go b/resource-manager/network/2024-01-01/applicationgateways/model_networkinterface.go new file mode 100644 index 00000000000..73b1cb41a52 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_networkinterface.go @@ -0,0 +1,19 @@ +package applicationgateways + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterface struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfacePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_networkinterfacednssettings.go b/resource-manager/network/2024-01-01/applicationgateways/model_networkinterfacednssettings.go new file mode 100644 index 00000000000..92961ce7d04 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_networkinterfacednssettings.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceDnsSettings struct { + AppliedDnsServers *[]string `json:"appliedDnsServers,omitempty"` + DnsServers *[]string `json:"dnsServers,omitempty"` + InternalDnsNameLabel *string `json:"internalDnsNameLabel,omitempty"` + InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty"` + InternalFqdn *string `json:"internalFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_networkinterfaceipconfiguration.go b/resource-manager/network/2024-01-01/applicationgateways/model_networkinterfaceipconfiguration.go new file mode 100644 index 00000000000..1be55bfe469 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_networkinterfaceipconfiguration.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go b/resource-manager/network/2024-01-01/applicationgateways/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go new file mode 100644 index 00000000000..fed49bbe9de --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go @@ -0,0 +1,10 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties struct { + Fqdns *[]string `json:"fqdns,omitempty"` + GroupId *string `json:"groupId,omitempty"` + RequiredMemberName *string `json:"requiredMemberName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_networkinterfaceipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_networkinterfaceipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..452ec816a20 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_networkinterfaceipconfigurationpropertiesformat.go @@ -0,0 +1,22 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPropertiesFormat struct { + ApplicationGatewayBackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"applicationGatewayBackendAddressPools,omitempty"` + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + LoadBalancerBackendAddressPools *[]BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"` + LoadBalancerInboundNatRules *[]InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressPrefixLength *int64 `json:"privateIPAddressPrefixLength,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + PrivateLinkConnectionProperties *NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties `json:"privateLinkConnectionProperties,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` + VirtualNetworkTaps *[]VirtualNetworkTap `json:"virtualNetworkTaps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_networkinterfacepropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_networkinterfacepropertiesformat.go new file mode 100644 index 00000000000..302d4c3283d --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_networkinterfacepropertiesformat.go @@ -0,0 +1,29 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfacePropertiesFormat struct { + AuxiliaryMode *NetworkInterfaceAuxiliaryMode `json:"auxiliaryMode,omitempty"` + AuxiliarySku *NetworkInterfaceAuxiliarySku `json:"auxiliarySku,omitempty"` + DisableTcpStateTracking *bool `json:"disableTcpStateTracking,omitempty"` + DnsSettings *NetworkInterfaceDnsSettings `json:"dnsSettings,omitempty"` + DscpConfiguration *SubResource `json:"dscpConfiguration,omitempty"` + EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"` + EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"` + HostedWorkloads *[]string `json:"hostedWorkloads,omitempty"` + IPConfigurations *[]NetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + MacAddress *string `json:"macAddress,omitempty"` + MigrationPhase *NetworkInterfaceMigrationPhase `json:"migrationPhase,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + NicType *NetworkInterfaceNicType `json:"nicType,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkService *PrivateLinkService `json:"privateLinkService,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + TapConfigurations *[]NetworkInterfaceTapConfiguration `json:"tapConfigurations,omitempty"` + VirtualMachine *SubResource `json:"virtualMachine,omitempty"` + VnetEncryptionSupported *bool `json:"vnetEncryptionSupported,omitempty"` + WorkloadType *string `json:"workloadType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_networkinterfacetapconfiguration.go b/resource-manager/network/2024-01-01/applicationgateways/model_networkinterfacetapconfiguration.go new file mode 100644 index 00000000000..8dc17186426 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_networkinterfacetapconfiguration.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceTapConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_networkinterfacetapconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_networkinterfacetapconfigurationpropertiesformat.go new file mode 100644 index 00000000000..199c278ace0 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_networkinterfacetapconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualNetworkTap *VirtualNetworkTap `json:"virtualNetworkTap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_networksecuritygroup.go b/resource-manager/network/2024-01-01/applicationgateways/model_networksecuritygroup.go new file mode 100644 index 00000000000..14268c44ed0 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_networksecuritygroup.go @@ -0,0 +1,14 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_networksecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_networksecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..e16fb5f6fb3 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_networksecuritygrouppropertiesformat.go @@ -0,0 +1,15 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupPropertiesFormat struct { + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + FlowLogs *[]FlowLog `json:"flowLogs,omitempty"` + FlushConnection *bool `json:"flushConnection,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_privateendpoint.go b/resource-manager/network/2024-01-01/applicationgateways/model_privateendpoint.go new file mode 100644 index 00000000000..4ec26559664 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_privateendpoint.go @@ -0,0 +1,19 @@ +package applicationgateways + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpoint struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_privateendpointconnection.go b/resource-manager/network/2024-01-01/applicationgateways/model_privateendpointconnection.go new file mode 100644 index 00000000000..72911c666f8 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_privateendpointconnection.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_privateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/applicationgateways/model_privateendpointconnectionproperties.go new file mode 100644 index 00000000000..baec08812d8 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_privateendpointconnectionproperties.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateEndpointLocation *string `json:"privateEndpointLocation,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_privateendpointipconfiguration.go b/resource-manager/network/2024-01-01/applicationgateways/model_privateendpointipconfiguration.go new file mode 100644 index 00000000000..7cae9c3cf71 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_privateendpointipconfiguration.go @@ -0,0 +1,11 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_privateendpointipconfigurationproperties.go b/resource-manager/network/2024-01-01/applicationgateways/model_privateendpointipconfigurationproperties.go new file mode 100644 index 00000000000..f1f5adead63 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_privateendpointipconfigurationproperties.go @@ -0,0 +1,10 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfigurationProperties struct { + GroupId *string `json:"groupId,omitempty"` + MemberName *string `json:"memberName,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_privateendpointproperties.go b/resource-manager/network/2024-01-01/applicationgateways/model_privateendpointproperties.go new file mode 100644 index 00000000000..832b7f18a5d --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_privateendpointproperties.go @@ -0,0 +1,16 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointProperties struct { + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + CustomDnsConfigs *[]CustomDnsConfigPropertiesFormat `json:"customDnsConfigs,omitempty"` + CustomNetworkInterfaceName *string `json:"customNetworkInterfaceName,omitempty"` + IPConfigurations *[]PrivateEndpointIPConfiguration `json:"ipConfigurations,omitempty"` + ManualPrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"manualPrivateLinkServiceConnections,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"privateLinkServiceConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_privatelinkservice.go b/resource-manager/network/2024-01-01/applicationgateways/model_privatelinkservice.go new file mode 100644 index 00000000000..238c6ee31c6 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_privatelinkservice.go @@ -0,0 +1,19 @@ +package applicationgateways + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkService struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_privatelinkserviceconnection.go b/resource-manager/network/2024-01-01/applicationgateways/model_privatelinkserviceconnection.go new file mode 100644 index 00000000000..ee88d81eb06 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_privatelinkserviceconnection.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_privatelinkserviceconnectionproperties.go b/resource-manager/network/2024-01-01/applicationgateways/model_privatelinkserviceconnectionproperties.go new file mode 100644 index 00000000000..26b1b21ad32 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_privatelinkserviceconnectionproperties.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionProperties struct { + GroupIds *[]string `json:"groupIds,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + PrivateLinkServiceId *string `json:"privateLinkServiceId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestMessage *string `json:"requestMessage,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_privatelinkserviceconnectionstate.go b/resource-manager/network/2024-01-01/applicationgateways/model_privatelinkserviceconnectionstate.go new file mode 100644 index 00000000000..2d2970905b0 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_privatelinkserviceconnectionstate.go @@ -0,0 +1,10 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionState struct { + ActionsRequired *string `json:"actionsRequired,omitempty"` + Description *string `json:"description,omitempty"` + Status *string `json:"status,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_privatelinkserviceipconfiguration.go b/resource-manager/network/2024-01-01/applicationgateways/model_privatelinkserviceipconfiguration.go new file mode 100644 index 00000000000..18d6fcdf24d --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_privatelinkserviceipconfiguration.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_privatelinkserviceipconfigurationproperties.go b/resource-manager/network/2024-01-01/applicationgateways/model_privatelinkserviceipconfigurationproperties.go new file mode 100644 index 00000000000..02fc04bab97 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_privatelinkserviceipconfigurationproperties.go @@ -0,0 +1,13 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_privatelinkserviceproperties.go b/resource-manager/network/2024-01-01/applicationgateways/model_privatelinkserviceproperties.go new file mode 100644 index 00000000000..eb543330122 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_privatelinkserviceproperties.go @@ -0,0 +1,17 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceProperties struct { + Alias *string `json:"alias,omitempty"` + AutoApproval *ResourceSet `json:"autoApproval,omitempty"` + EnableProxyProtocol *bool `json:"enableProxyProtocol,omitempty"` + Fqdns *[]string `json:"fqdns,omitempty"` + IPConfigurations *[]PrivateLinkServiceIPConfiguration `json:"ipConfigurations,omitempty"` + LoadBalancerFrontendIPConfigurations *[]FrontendIPConfiguration `json:"loadBalancerFrontendIpConfigurations,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Visibility *ResourceSet `json:"visibility,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_publicipaddress.go b/resource-manager/network/2024-01-01/applicationgateways/model_publicipaddress.go new file mode 100644 index 00000000000..c17efae3e57 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_publicipaddress.go @@ -0,0 +1,22 @@ +package applicationgateways + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddress struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PublicIPAddressPropertiesFormat `json:"properties,omitempty"` + Sku *PublicIPAddressSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_publicipaddressdnssettings.go b/resource-manager/network/2024-01-01/applicationgateways/model_publicipaddressdnssettings.go new file mode 100644 index 00000000000..4aeba6f0581 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_publicipaddressdnssettings.go @@ -0,0 +1,11 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressDnsSettings struct { + DomainNameLabel *string `json:"domainNameLabel,omitempty"` + DomainNameLabelScope *PublicIPAddressDnsSettingsDomainNameLabelScope `json:"domainNameLabelScope,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + ReverseFqdn *string `json:"reverseFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_publicipaddresspropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_publicipaddresspropertiesformat.go new file mode 100644 index 00000000000..d714bdf3daa --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_publicipaddresspropertiesformat.go @@ -0,0 +1,23 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressPropertiesFormat struct { + DdosSettings *DdosSettings `json:"ddosSettings,omitempty"` + DeleteOption *DeleteOptions `json:"deleteOption,omitempty"` + DnsSettings *PublicIPAddressDnsSettings `json:"dnsSettings,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty"` + IPTags *[]IPTag `json:"ipTags,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + LinkedPublicIPAddress *PublicIPAddress `json:"linkedPublicIPAddress,omitempty"` + MigrationPhase *PublicIPAddressMigrationPhase `json:"migrationPhase,omitempty"` + NatGateway *NatGateway `json:"natGateway,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"` + PublicIPAllocationMethod *IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServicePublicIPAddress *PublicIPAddress `json:"servicePublicIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_publicipaddresssku.go b/resource-manager/network/2024-01-01/applicationgateways/model_publicipaddresssku.go new file mode 100644 index 00000000000..976ba6d175a --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_publicipaddresssku.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressSku struct { + Name *PublicIPAddressSkuName `json:"name,omitempty"` + Tier *PublicIPAddressSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_resourcenavigationlink.go b/resource-manager/network/2024-01-01/applicationgateways/model_resourcenavigationlink.go new file mode 100644 index 00000000000..0aeedfe5241 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_resourcenavigationlink.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ResourceNavigationLinkFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_resourcenavigationlinkformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_resourcenavigationlinkformat.go new file mode 100644 index 00000000000..540e9b96c41 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_resourcenavigationlinkformat.go @@ -0,0 +1,10 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLinkFormat struct { + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_resourceset.go b/resource-manager/network/2024-01-01/applicationgateways/model_resourceset.go new file mode 100644 index 00000000000..05c6f87a097 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_resourceset.go @@ -0,0 +1,8 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceSet struct { + Subscriptions *[]string `json:"subscriptions,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/applicationgateways/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..aed6889cbab --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_route.go b/resource-manager/network/2024-01-01/applicationgateways/model_route.go new file mode 100644 index 00000000000..8b16e63b0d4 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_route.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Route struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RoutePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_routepropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_routepropertiesformat.go new file mode 100644 index 00000000000..e5c5f698874 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_routepropertiesformat.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutePropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + HasBgpOverride *bool `json:"hasBgpOverride,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + NextHopType RouteNextHopType `json:"nextHopType"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_routetable.go b/resource-manager/network/2024-01-01/applicationgateways/model_routetable.go new file mode 100644 index 00000000000..6b3d63e8b6c --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_routetable.go @@ -0,0 +1,14 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTable struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteTablePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_routetablepropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_routetablepropertiesformat.go new file mode 100644 index 00000000000..af2c694b5db --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_routetablepropertiesformat.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTablePropertiesFormat struct { + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Routes *[]Route `json:"routes,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_securityrule.go b/resource-manager/network/2024-01-01/applicationgateways/model_securityrule.go new file mode 100644 index 00000000000..ef187da7432 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_securityrule.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_securityrulepropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_securityrulepropertiesformat.go new file mode 100644 index 00000000000..c96607c5d20 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_securityrulepropertiesformat.go @@ -0,0 +1,23 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulePropertiesFormat struct { + Access SecurityRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction SecurityRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_serviceassociationlink.go b/resource-manager/network/2024-01-01/applicationgateways/model_serviceassociationlink.go new file mode 100644 index 00000000000..fcd770e8b43 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_serviceassociationlink.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceAssociationLinkPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_serviceassociationlinkpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_serviceassociationlinkpropertiesformat.go new file mode 100644 index 00000000000..74146988caf --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_serviceassociationlinkpropertiesformat.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLinkPropertiesFormat struct { + AllowDelete *bool `json:"allowDelete,omitempty"` + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + Locations *[]string `json:"locations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_servicedelegationpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_servicedelegationpropertiesformat.go new file mode 100644 index 00000000000..508b02893d3 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_servicedelegationpropertiesformat.go @@ -0,0 +1,10 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceDelegationPropertiesFormat struct { + Actions *[]string `json:"actions,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_serviceendpointpolicy.go b/resource-manager/network/2024-01-01/applicationgateways/model_serviceendpointpolicy.go new file mode 100644 index 00000000000..3c9d04af717 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_serviceendpointpolicy.go @@ -0,0 +1,15 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Kind *string `json:"kind,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_serviceendpointpolicydefinition.go b/resource-manager/network/2024-01-01/applicationgateways/model_serviceendpointpolicydefinition.go new file mode 100644 index 00000000000..3c52f56e9ea --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_serviceendpointpolicydefinition.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinition struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_serviceendpointpolicydefinitionpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_serviceendpointpolicydefinitionpropertiesformat.go new file mode 100644 index 00000000000..0ccd3a839f3 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_serviceendpointpolicydefinitionpropertiesformat.go @@ -0,0 +1,11 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionPropertiesFormat struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` + ServiceResources *[]string `json:"serviceResources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_serviceendpointpolicypropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_serviceendpointpolicypropertiesformat.go new file mode 100644 index 00000000000..edd49bd36a4 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_serviceendpointpolicypropertiesformat.go @@ -0,0 +1,13 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyPropertiesFormat struct { + ContextualServiceEndpointPolicies *[]string `json:"contextualServiceEndpointPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServiceAlias *string `json:"serviceAlias,omitempty"` + ServiceEndpointPolicyDefinitions *[]ServiceEndpointPolicyDefinition `json:"serviceEndpointPolicyDefinitions,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_serviceendpointpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_serviceendpointpropertiesformat.go new file mode 100644 index 00000000000..651b33530e8 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_serviceendpointpropertiesformat.go @@ -0,0 +1,11 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPropertiesFormat struct { + Locations *[]string `json:"locations,omitempty"` + NetworkIdentifier *SubResource `json:"networkIdentifier,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_subnet.go b/resource-manager/network/2024-01-01/applicationgateways/model_subnet.go new file mode 100644 index 00000000000..9bad3a3150c --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_subnet.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Subnet struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SubnetPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_subnetpropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_subnetpropertiesformat.go new file mode 100644 index 00000000000..d252ccc3e8c --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_subnetpropertiesformat.go @@ -0,0 +1,28 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + ApplicationGatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"applicationGatewayIPConfigurations,omitempty"` + DefaultOutboundAccess *bool `json:"defaultOutboundAccess,omitempty"` + Delegations *[]Delegation `json:"delegations,omitempty"` + IPAllocations *[]SubResource `json:"ipAllocations,omitempty"` + IPConfigurationProfiles *[]IPConfigurationProfile `json:"ipConfigurationProfiles,omitempty"` + IPConfigurations *[]IPConfiguration `json:"ipConfigurations,omitempty"` + NatGateway *SubResource `json:"natGateway,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + PrivateEndpointNetworkPolicies *VirtualNetworkPrivateEndpointNetworkPolicies `json:"privateEndpointNetworkPolicies,omitempty"` + PrivateEndpoints *[]PrivateEndpoint `json:"privateEndpoints,omitempty"` + PrivateLinkServiceNetworkPolicies *VirtualNetworkPrivateLinkServiceNetworkPolicies `json:"privateLinkServiceNetworkPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Purpose *string `json:"purpose,omitempty"` + ResourceNavigationLinks *[]ResourceNavigationLink `json:"resourceNavigationLinks,omitempty"` + RouteTable *RouteTable `json:"routeTable,omitempty"` + ServiceAssociationLinks *[]ServiceAssociationLink `json:"serviceAssociationLinks,omitempty"` + ServiceEndpointPolicies *[]ServiceEndpointPolicy `json:"serviceEndpointPolicies,omitempty"` + ServiceEndpoints *[]ServiceEndpointPropertiesFormat `json:"serviceEndpoints,omitempty"` + SharingScope *SharingScope `json:"sharingScope,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_subresource.go b/resource-manager/network/2024-01-01/applicationgateways/model_subresource.go new file mode 100644 index 00000000000..5e7297f22b2 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_subresource.go @@ -0,0 +1,8 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_tagsobject.go b/resource-manager/network/2024-01-01/applicationgateways/model_tagsobject.go new file mode 100644 index 00000000000..d5962ed5647 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_tagsobject.go @@ -0,0 +1,8 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/applicationgateways/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..65767115778 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/applicationgateways/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..b9b39e7b346 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_virtualnetworktap.go b/resource-manager/network/2024-01-01/applicationgateways/model_virtualnetworktap.go new file mode 100644 index 00000000000..610065f3a8a --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_virtualnetworktap.go @@ -0,0 +1,14 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkTapPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/model_virtualnetworktappropertiesformat.go b/resource-manager/network/2024-01-01/applicationgateways/model_virtualnetworktappropertiesformat.go new file mode 100644 index 00000000000..a7db53f1629 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/model_virtualnetworktappropertiesformat.go @@ -0,0 +1,13 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapPropertiesFormat struct { + DestinationLoadBalancerFrontEndIPConfiguration *FrontendIPConfiguration `json:"destinationLoadBalancerFrontEndIPConfiguration,omitempty"` + DestinationNetworkInterfaceIPConfiguration *NetworkInterfaceIPConfiguration `json:"destinationNetworkInterfaceIPConfiguration,omitempty"` + DestinationPort *int64 `json:"destinationPort,omitempty"` + NetworkInterfaceTapConfigurations *[]NetworkInterfaceTapConfiguration `json:"networkInterfaceTapConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/predicates.go b/resource-manager/network/2024-01-01/applicationgateways/predicates.go new file mode 100644 index 00000000000..c51e6f7b000 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/predicates.go @@ -0,0 +1,55 @@ +package applicationgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p ApplicationGatewayOperationPredicate) Matches(input ApplicationGateway) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type ApplicationGatewaySslPredefinedPolicyOperationPredicate struct { + Id *string + Name *string +} + +func (p ApplicationGatewaySslPredefinedPolicyOperationPredicate) Matches(input ApplicationGatewaySslPredefinedPolicy) bool { + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/applicationgateways/version.go b/resource-manager/network/2024-01-01/applicationgateways/version.go new file mode 100644 index 00000000000..17a7b506485 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgateways/version.go @@ -0,0 +1,12 @@ +package applicationgateways + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/applicationgateways/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/README.md b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/README.md new file mode 100644 index 00000000000..a048998d642 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/README.md @@ -0,0 +1,53 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests` Documentation + +The `applicationgatewaywafdynamicmanifests` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests" +``` + + +### Client Initialization + +```go +client := applicationgatewaywafdynamicmanifests.NewApplicationGatewayWafDynamicManifestsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ApplicationGatewayWafDynamicManifestsClient.DefaultGet` + +```go +ctx := context.TODO() +id := applicationgatewaywafdynamicmanifests.NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue") + +read, err := client.DefaultGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ApplicationGatewayWafDynamicManifestsClient.Get` + +```go +ctx := context.TODO() +id := applicationgatewaywafdynamicmanifests.NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue") + +// alternatively `client.Get(ctx, id)` can be used to do batched pagination +items, err := client.GetComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/client.go b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/client.go new file mode 100644 index 00000000000..507d8e55929 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/client.go @@ -0,0 +1,26 @@ +package applicationgatewaywafdynamicmanifests + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayWafDynamicManifestsClient struct { + Client *resourcemanager.Client +} + +func NewApplicationGatewayWafDynamicManifestsClientWithBaseURI(sdkApi sdkEnv.Api) (*ApplicationGatewayWafDynamicManifestsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "applicationgatewaywafdynamicmanifests", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ApplicationGatewayWafDynamicManifestsClient: %+v", err) + } + + return &ApplicationGatewayWafDynamicManifestsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/constants.go b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/constants.go new file mode 100644 index 00000000000..0d7db7ea47d --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/constants.go @@ -0,0 +1,195 @@ +package applicationgatewaywafdynamicmanifests + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayRuleSetStatusOptions string + +const ( + ApplicationGatewayRuleSetStatusOptionsDeprecated ApplicationGatewayRuleSetStatusOptions = "Deprecated" + ApplicationGatewayRuleSetStatusOptionsGA ApplicationGatewayRuleSetStatusOptions = "GA" + ApplicationGatewayRuleSetStatusOptionsPreview ApplicationGatewayRuleSetStatusOptions = "Preview" + ApplicationGatewayRuleSetStatusOptionsSupported ApplicationGatewayRuleSetStatusOptions = "Supported" +) + +func PossibleValuesForApplicationGatewayRuleSetStatusOptions() []string { + return []string{ + string(ApplicationGatewayRuleSetStatusOptionsDeprecated), + string(ApplicationGatewayRuleSetStatusOptionsGA), + string(ApplicationGatewayRuleSetStatusOptionsPreview), + string(ApplicationGatewayRuleSetStatusOptionsSupported), + } +} + +func (s *ApplicationGatewayRuleSetStatusOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayRuleSetStatusOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayRuleSetStatusOptions(input string) (*ApplicationGatewayRuleSetStatusOptions, error) { + vals := map[string]ApplicationGatewayRuleSetStatusOptions{ + "deprecated": ApplicationGatewayRuleSetStatusOptionsDeprecated, + "ga": ApplicationGatewayRuleSetStatusOptionsGA, + "preview": ApplicationGatewayRuleSetStatusOptionsPreview, + "supported": ApplicationGatewayRuleSetStatusOptionsSupported, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayRuleSetStatusOptions(input) + return &out, nil +} + +type ApplicationGatewayTierTypes string + +const ( + ApplicationGatewayTierTypesStandard ApplicationGatewayTierTypes = "Standard" + ApplicationGatewayTierTypesStandardVTwo ApplicationGatewayTierTypes = "Standard_v2" + ApplicationGatewayTierTypesWAF ApplicationGatewayTierTypes = "WAF" + ApplicationGatewayTierTypesWAFVTwo ApplicationGatewayTierTypes = "WAF_v2" +) + +func PossibleValuesForApplicationGatewayTierTypes() []string { + return []string{ + string(ApplicationGatewayTierTypesStandard), + string(ApplicationGatewayTierTypesStandardVTwo), + string(ApplicationGatewayTierTypesWAF), + string(ApplicationGatewayTierTypesWAFVTwo), + } +} + +func (s *ApplicationGatewayTierTypes) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayTierTypes(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayTierTypes(input string) (*ApplicationGatewayTierTypes, error) { + vals := map[string]ApplicationGatewayTierTypes{ + "standard": ApplicationGatewayTierTypesStandard, + "standard_v2": ApplicationGatewayTierTypesStandardVTwo, + "waf": ApplicationGatewayTierTypesWAF, + "waf_v2": ApplicationGatewayTierTypesWAFVTwo, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayTierTypes(input) + return &out, nil +} + +type ApplicationGatewayWafRuleActionTypes string + +const ( + ApplicationGatewayWafRuleActionTypesAllow ApplicationGatewayWafRuleActionTypes = "Allow" + ApplicationGatewayWafRuleActionTypesAnomalyScoring ApplicationGatewayWafRuleActionTypes = "AnomalyScoring" + ApplicationGatewayWafRuleActionTypesBlock ApplicationGatewayWafRuleActionTypes = "Block" + ApplicationGatewayWafRuleActionTypesLog ApplicationGatewayWafRuleActionTypes = "Log" + ApplicationGatewayWafRuleActionTypesNone ApplicationGatewayWafRuleActionTypes = "None" +) + +func PossibleValuesForApplicationGatewayWafRuleActionTypes() []string { + return []string{ + string(ApplicationGatewayWafRuleActionTypesAllow), + string(ApplicationGatewayWafRuleActionTypesAnomalyScoring), + string(ApplicationGatewayWafRuleActionTypesBlock), + string(ApplicationGatewayWafRuleActionTypesLog), + string(ApplicationGatewayWafRuleActionTypesNone), + } +} + +func (s *ApplicationGatewayWafRuleActionTypes) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayWafRuleActionTypes(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayWafRuleActionTypes(input string) (*ApplicationGatewayWafRuleActionTypes, error) { + vals := map[string]ApplicationGatewayWafRuleActionTypes{ + "allow": ApplicationGatewayWafRuleActionTypesAllow, + "anomalyscoring": ApplicationGatewayWafRuleActionTypesAnomalyScoring, + "block": ApplicationGatewayWafRuleActionTypesBlock, + "log": ApplicationGatewayWafRuleActionTypesLog, + "none": ApplicationGatewayWafRuleActionTypesNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayWafRuleActionTypes(input) + return &out, nil +} + +type ApplicationGatewayWafRuleStateTypes string + +const ( + ApplicationGatewayWafRuleStateTypesDisabled ApplicationGatewayWafRuleStateTypes = "Disabled" + ApplicationGatewayWafRuleStateTypesEnabled ApplicationGatewayWafRuleStateTypes = "Enabled" +) + +func PossibleValuesForApplicationGatewayWafRuleStateTypes() []string { + return []string{ + string(ApplicationGatewayWafRuleStateTypesDisabled), + string(ApplicationGatewayWafRuleStateTypesEnabled), + } +} + +func (s *ApplicationGatewayWafRuleStateTypes) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayWafRuleStateTypes(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayWafRuleStateTypes(input string) (*ApplicationGatewayWafRuleStateTypes, error) { + vals := map[string]ApplicationGatewayWafRuleStateTypes{ + "disabled": ApplicationGatewayWafRuleStateTypesDisabled, + "enabled": ApplicationGatewayWafRuleStateTypesEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayWafRuleStateTypes(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/id_location.go b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/id_location.go new file mode 100644 index 00000000000..03b931e4e2f --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/id_location.go @@ -0,0 +1,121 @@ +package applicationgatewaywafdynamicmanifests + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&LocationId{}) +} + +var _ resourceids.ResourceId = &LocationId{} + +// LocationId is a struct representing the Resource ID for a Location +type LocationId struct { + SubscriptionId string + LocationName string +} + +// NewLocationID returns a new LocationId struct +func NewLocationID(subscriptionId string, locationName string) LocationId { + return LocationId{ + SubscriptionId: subscriptionId, + LocationName: locationName, + } +} + +// ParseLocationID parses 'input' into a LocationId +func ParseLocationID(input string) (*LocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&LocationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseLocationIDInsensitively parses 'input' case-insensitively into a LocationId +// note: this method should only be used for API response data and not user input +func ParseLocationIDInsensitively(input string) (*LocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&LocationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *LocationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.LocationName, ok = input.Parsed["locationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "locationName", input) + } + + return nil +} + +// ValidateLocationID checks that 'input' can be parsed as a Location ID +func ValidateLocationID(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 := ParseLocationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Location ID +func (id LocationId) ID() string { + fmtString := "/subscriptions/%s/providers/Microsoft.Network/locations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.LocationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Location ID +func (id LocationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLocations", "locations", "locations"), + resourceids.UserSpecifiedSegment("locationName", "locationValue"), + } +} + +// String returns a human-readable description of this Location ID +func (id LocationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Location Name: %q", id.LocationName), + } + return fmt.Sprintf("Location (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/id_location_test.go b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/id_location_test.go new file mode 100644 index 00000000000..e88af2f1854 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/id_location_test.go @@ -0,0 +1,237 @@ +package applicationgatewaywafdynamicmanifests + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &LocationId{} + +func TestNewLocationID(t *testing.T) { + id := NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.LocationName != "locationValue" { + t.Fatalf("Expected %q but got %q for Segment 'LocationName'", id.LocationName, "locationValue") + } +} + +func TestFormatLocationID(t *testing.T) { + actual := NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseLocationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLocationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestParseLocationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "lOcAtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLocationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestSegmentsForLocationId(t *testing.T) { + segments := LocationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("LocationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/method_defaultget.go b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/method_defaultget.go new file mode 100644 index 00000000000..0a6682174de --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/method_defaultget.go @@ -0,0 +1,55 @@ +package applicationgatewaywafdynamicmanifests + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DefaultGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ApplicationGatewayWafDynamicManifestResult +} + +// DefaultGet ... +func (c ApplicationGatewayWafDynamicManifestsClient) DefaultGet(ctx context.Context, id LocationId) (result DefaultGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/applicationGatewayWafDynamicManifests/dafault", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ApplicationGatewayWafDynamicManifestResult + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/method_get.go b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/method_get.go new file mode 100644 index 00000000000..d07f9b4e97b --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/method_get.go @@ -0,0 +1,92 @@ +package applicationgatewaywafdynamicmanifests + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ApplicationGatewayWafDynamicManifestResult +} + +type GetCompleteResult struct { + LatestHttpResponse *http.Response + Items []ApplicationGatewayWafDynamicManifestResult +} + +// Get ... +func (c ApplicationGatewayWafDynamicManifestsClient) Get(ctx context.Context, id LocationId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/applicationGatewayWafDynamicManifests", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ApplicationGatewayWafDynamicManifestResult `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// GetComplete retrieves all the results into a single object +func (c ApplicationGatewayWafDynamicManifestsClient) GetComplete(ctx context.Context, id LocationId) (GetCompleteResult, error) { + return c.GetCompleteMatchingPredicate(ctx, id, ApplicationGatewayWafDynamicManifestResultOperationPredicate{}) +} + +// GetCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ApplicationGatewayWafDynamicManifestsClient) GetCompleteMatchingPredicate(ctx context.Context, id LocationId, predicate ApplicationGatewayWafDynamicManifestResultOperationPredicate) (result GetCompleteResult, err error) { + items := make([]ApplicationGatewayWafDynamicManifestResult, 0) + + resp, err := c.Get(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = GetCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/model_applicationgatewayfirewallmanifestruleset.go b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/model_applicationgatewayfirewallmanifestruleset.go new file mode 100644 index 00000000000..401a87a86a8 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/model_applicationgatewayfirewallmanifestruleset.go @@ -0,0 +1,12 @@ +package applicationgatewaywafdynamicmanifests + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayFirewallManifestRuleSet struct { + RuleGroups []ApplicationGatewayFirewallRuleGroup `json:"ruleGroups"` + RuleSetType string `json:"ruleSetType"` + RuleSetVersion string `json:"ruleSetVersion"` + Status *ApplicationGatewayRuleSetStatusOptions `json:"status,omitempty"` + Tiers *[]ApplicationGatewayTierTypes `json:"tiers,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/model_applicationgatewayfirewallrule.go b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/model_applicationgatewayfirewallrule.go new file mode 100644 index 00000000000..723193ddc36 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/model_applicationgatewayfirewallrule.go @@ -0,0 +1,12 @@ +package applicationgatewaywafdynamicmanifests + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayFirewallRule struct { + Action *ApplicationGatewayWafRuleActionTypes `json:"action,omitempty"` + Description *string `json:"description,omitempty"` + RuleId int64 `json:"ruleId"` + RuleIdString *string `json:"ruleIdString,omitempty"` + State *ApplicationGatewayWafRuleStateTypes `json:"state,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/model_applicationgatewayfirewallrulegroup.go b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/model_applicationgatewayfirewallrulegroup.go new file mode 100644 index 00000000000..f9aefdfc147 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/model_applicationgatewayfirewallrulegroup.go @@ -0,0 +1,10 @@ +package applicationgatewaywafdynamicmanifests + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayFirewallRuleGroup struct { + Description *string `json:"description,omitempty"` + RuleGroupName string `json:"ruleGroupName"` + Rules []ApplicationGatewayFirewallRule `json:"rules"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/model_applicationgatewaywafdynamicmanifestpropertiesresult.go b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/model_applicationgatewaywafdynamicmanifestpropertiesresult.go new file mode 100644 index 00000000000..d68d61add58 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/model_applicationgatewaywafdynamicmanifestpropertiesresult.go @@ -0,0 +1,9 @@ +package applicationgatewaywafdynamicmanifests + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayWafDynamicManifestPropertiesResult struct { + AvailableRuleSets *[]ApplicationGatewayFirewallManifestRuleSet `json:"availableRuleSets,omitempty"` + DefaultRuleSet *DefaultRuleSetPropertyFormat `json:"defaultRuleSet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/model_applicationgatewaywafdynamicmanifestresult.go b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/model_applicationgatewaywafdynamicmanifestresult.go new file mode 100644 index 00000000000..763ec4aad23 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/model_applicationgatewaywafdynamicmanifestresult.go @@ -0,0 +1,11 @@ +package applicationgatewaywafdynamicmanifests + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayWafDynamicManifestResult struct { + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayWafDynamicManifestPropertiesResult `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/model_defaultrulesetpropertyformat.go b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/model_defaultrulesetpropertyformat.go new file mode 100644 index 00000000000..b69c307217f --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/model_defaultrulesetpropertyformat.go @@ -0,0 +1,9 @@ +package applicationgatewaywafdynamicmanifests + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DefaultRuleSetPropertyFormat struct { + RuleSetType *string `json:"ruleSetType,omitempty"` + RuleSetVersion *string `json:"ruleSetVersion,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/predicates.go b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/predicates.go new file mode 100644 index 00000000000..9714d21637e --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/predicates.go @@ -0,0 +1,27 @@ +package applicationgatewaywafdynamicmanifests + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayWafDynamicManifestResultOperationPredicate struct { + Id *string + Name *string + Type *string +} + +func (p ApplicationGatewayWafDynamicManifestResultOperationPredicate) Matches(input ApplicationGatewayWafDynamicManifestResult) bool { + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/version.go b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/version.go new file mode 100644 index 00000000000..e8409c7c508 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests/version.go @@ -0,0 +1,12 @@ +package applicationgatewaywafdynamicmanifests + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/applicationgatewaywafdynamicmanifests/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/applicationsecuritygroups/README.md b/resource-manager/network/2024-01-01/applicationsecuritygroups/README.md new file mode 100644 index 00000000000..8217a8fd7f9 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationsecuritygroups/README.md @@ -0,0 +1,121 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/applicationsecuritygroups` Documentation + +The `applicationsecuritygroups` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/applicationsecuritygroups" +``` + + +### Client Initialization + +```go +client := applicationsecuritygroups.NewApplicationSecurityGroupsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ApplicationSecurityGroupsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := applicationsecuritygroups.NewApplicationSecurityGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationSecurityGroupValue") + +payload := applicationsecuritygroups.ApplicationSecurityGroup{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `ApplicationSecurityGroupsClient.Delete` + +```go +ctx := context.TODO() +id := applicationsecuritygroups.NewApplicationSecurityGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationSecurityGroupValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `ApplicationSecurityGroupsClient.Get` + +```go +ctx := context.TODO() +id := applicationsecuritygroups.NewApplicationSecurityGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationSecurityGroupValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ApplicationSecurityGroupsClient.List` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `ApplicationSecurityGroupsClient.ListAll` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.ListAll(ctx, id)` can be used to do batched pagination +items, err := client.ListAllComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `ApplicationSecurityGroupsClient.UpdateTags` + +```go +ctx := context.TODO() +id := applicationsecuritygroups.NewApplicationSecurityGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationSecurityGroupValue") + +payload := applicationsecuritygroups.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/applicationsecuritygroups/client.go b/resource-manager/network/2024-01-01/applicationsecuritygroups/client.go new file mode 100644 index 00000000000..e607d64a7d3 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationsecuritygroups/client.go @@ -0,0 +1,26 @@ +package applicationsecuritygroups + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupsClient struct { + Client *resourcemanager.Client +} + +func NewApplicationSecurityGroupsClientWithBaseURI(sdkApi sdkEnv.Api) (*ApplicationSecurityGroupsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "applicationsecuritygroups", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ApplicationSecurityGroupsClient: %+v", err) + } + + return &ApplicationSecurityGroupsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/applicationsecuritygroups/constants.go b/resource-manager/network/2024-01-01/applicationsecuritygroups/constants.go new file mode 100644 index 00000000000..a226eb6274e --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationsecuritygroups/constants.go @@ -0,0 +1,57 @@ +package applicationsecuritygroups + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/applicationsecuritygroups/id_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/applicationsecuritygroups/id_applicationsecuritygroup.go new file mode 100644 index 00000000000..a776d455c05 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationsecuritygroups/id_applicationsecuritygroup.go @@ -0,0 +1,130 @@ +package applicationsecuritygroups + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ApplicationSecurityGroupId{}) +} + +var _ resourceids.ResourceId = &ApplicationSecurityGroupId{} + +// ApplicationSecurityGroupId is a struct representing the Resource ID for a Application Security Group +type ApplicationSecurityGroupId struct { + SubscriptionId string + ResourceGroupName string + ApplicationSecurityGroupName string +} + +// NewApplicationSecurityGroupID returns a new ApplicationSecurityGroupId struct +func NewApplicationSecurityGroupID(subscriptionId string, resourceGroupName string, applicationSecurityGroupName string) ApplicationSecurityGroupId { + return ApplicationSecurityGroupId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ApplicationSecurityGroupName: applicationSecurityGroupName, + } +} + +// ParseApplicationSecurityGroupID parses 'input' into a ApplicationSecurityGroupId +func ParseApplicationSecurityGroupID(input string) (*ApplicationSecurityGroupId, error) { + parser := resourceids.NewParserFromResourceIdType(&ApplicationSecurityGroupId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ApplicationSecurityGroupId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseApplicationSecurityGroupIDInsensitively parses 'input' case-insensitively into a ApplicationSecurityGroupId +// note: this method should only be used for API response data and not user input +func ParseApplicationSecurityGroupIDInsensitively(input string) (*ApplicationSecurityGroupId, error) { + parser := resourceids.NewParserFromResourceIdType(&ApplicationSecurityGroupId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ApplicationSecurityGroupId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ApplicationSecurityGroupId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ApplicationSecurityGroupName, ok = input.Parsed["applicationSecurityGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "applicationSecurityGroupName", input) + } + + return nil +} + +// ValidateApplicationSecurityGroupID checks that 'input' can be parsed as a Application Security Group ID +func ValidateApplicationSecurityGroupID(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 := ParseApplicationSecurityGroupID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Application Security Group ID +func (id ApplicationSecurityGroupId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/applicationSecurityGroups/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ApplicationSecurityGroupName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Application Security Group ID +func (id ApplicationSecurityGroupId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticApplicationSecurityGroups", "applicationSecurityGroups", "applicationSecurityGroups"), + resourceids.UserSpecifiedSegment("applicationSecurityGroupName", "applicationSecurityGroupValue"), + } +} + +// String returns a human-readable description of this Application Security Group ID +func (id ApplicationSecurityGroupId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Application Security Group Name: %q", id.ApplicationSecurityGroupName), + } + return fmt.Sprintf("Application Security Group (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/applicationsecuritygroups/id_applicationsecuritygroup_test.go b/resource-manager/network/2024-01-01/applicationsecuritygroups/id_applicationsecuritygroup_test.go new file mode 100644 index 00000000000..88b1a241a83 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationsecuritygroups/id_applicationsecuritygroup_test.go @@ -0,0 +1,282 @@ +package applicationsecuritygroups + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ApplicationSecurityGroupId{} + +func TestNewApplicationSecurityGroupID(t *testing.T) { + id := NewApplicationSecurityGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationSecurityGroupValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ApplicationSecurityGroupName != "applicationSecurityGroupValue" { + t.Fatalf("Expected %q but got %q for Segment 'ApplicationSecurityGroupName'", id.ApplicationSecurityGroupName, "applicationSecurityGroupValue") + } +} + +func TestFormatApplicationSecurityGroupID(t *testing.T) { + actual := NewApplicationSecurityGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationSecurityGroupValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationSecurityGroups/applicationSecurityGroupValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseApplicationSecurityGroupID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ApplicationSecurityGroupId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationSecurityGroups", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationSecurityGroups/applicationSecurityGroupValue", + Expected: &ApplicationSecurityGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ApplicationSecurityGroupName: "applicationSecurityGroupValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationSecurityGroups/applicationSecurityGroupValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseApplicationSecurityGroupID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ApplicationSecurityGroupName != v.Expected.ApplicationSecurityGroupName { + t.Fatalf("Expected %q but got %q for ApplicationSecurityGroupName", v.Expected.ApplicationSecurityGroupName, actual.ApplicationSecurityGroupName) + } + + } +} + +func TestParseApplicationSecurityGroupIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ApplicationSecurityGroupId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationSecurityGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnSeCuRiTyGrOuPs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationSecurityGroups/applicationSecurityGroupValue", + Expected: &ApplicationSecurityGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ApplicationSecurityGroupName: "applicationSecurityGroupValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationSecurityGroups/applicationSecurityGroupValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnSeCuRiTyGrOuPs/aPpLiCaTiOnSeCuRiTyGrOuPvAlUe", + Expected: &ApplicationSecurityGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ApplicationSecurityGroupName: "aPpLiCaTiOnSeCuRiTyGrOuPvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnSeCuRiTyGrOuPs/aPpLiCaTiOnSeCuRiTyGrOuPvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseApplicationSecurityGroupIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ApplicationSecurityGroupName != v.Expected.ApplicationSecurityGroupName { + t.Fatalf("Expected %q but got %q for ApplicationSecurityGroupName", v.Expected.ApplicationSecurityGroupName, actual.ApplicationSecurityGroupName) + } + + } +} + +func TestSegmentsForApplicationSecurityGroupId(t *testing.T) { + segments := ApplicationSecurityGroupId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ApplicationSecurityGroupId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/applicationsecuritygroups/method_createorupdate.go b/resource-manager/network/2024-01-01/applicationsecuritygroups/method_createorupdate.go new file mode 100644 index 00000000000..f2b60b46a6a --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationsecuritygroups/method_createorupdate.go @@ -0,0 +1,75 @@ +package applicationsecuritygroups + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *ApplicationSecurityGroup +} + +// CreateOrUpdate ... +func (c ApplicationSecurityGroupsClient) CreateOrUpdate(ctx context.Context, id ApplicationSecurityGroupId, input ApplicationSecurityGroup) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c ApplicationSecurityGroupsClient) CreateOrUpdateThenPoll(ctx context.Context, id ApplicationSecurityGroupId, input ApplicationSecurityGroup) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/applicationsecuritygroups/method_delete.go b/resource-manager/network/2024-01-01/applicationsecuritygroups/method_delete.go new file mode 100644 index 00000000000..6d16cb628e3 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationsecuritygroups/method_delete.go @@ -0,0 +1,71 @@ +package applicationsecuritygroups + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c ApplicationSecurityGroupsClient) Delete(ctx context.Context, id ApplicationSecurityGroupId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c ApplicationSecurityGroupsClient) DeleteThenPoll(ctx context.Context, id ApplicationSecurityGroupId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/applicationsecuritygroups/method_get.go b/resource-manager/network/2024-01-01/applicationsecuritygroups/method_get.go new file mode 100644 index 00000000000..5990e4033ff --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationsecuritygroups/method_get.go @@ -0,0 +1,54 @@ +package applicationsecuritygroups + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ApplicationSecurityGroup +} + +// Get ... +func (c ApplicationSecurityGroupsClient) Get(ctx context.Context, id ApplicationSecurityGroupId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ApplicationSecurityGroup + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/applicationsecuritygroups/method_list.go b/resource-manager/network/2024-01-01/applicationsecuritygroups/method_list.go new file mode 100644 index 00000000000..424c65a5cec --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationsecuritygroups/method_list.go @@ -0,0 +1,93 @@ +package applicationsecuritygroups + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ApplicationSecurityGroup +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []ApplicationSecurityGroup +} + +// List ... +func (c ApplicationSecurityGroupsClient) List(ctx context.Context, id commonids.ResourceGroupId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/applicationSecurityGroups", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ApplicationSecurityGroup `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c ApplicationSecurityGroupsClient) ListComplete(ctx context.Context, id commonids.ResourceGroupId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, ApplicationSecurityGroupOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ApplicationSecurityGroupsClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate ApplicationSecurityGroupOperationPredicate) (result ListCompleteResult, err error) { + items := make([]ApplicationSecurityGroup, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/applicationsecuritygroups/method_listall.go b/resource-manager/network/2024-01-01/applicationsecuritygroups/method_listall.go new file mode 100644 index 00000000000..38c5c8dc37f --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationsecuritygroups/method_listall.go @@ -0,0 +1,93 @@ +package applicationsecuritygroups + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAllOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ApplicationSecurityGroup +} + +type ListAllCompleteResult struct { + LatestHttpResponse *http.Response + Items []ApplicationSecurityGroup +} + +// ListAll ... +func (c ApplicationSecurityGroupsClient) ListAll(ctx context.Context, id commonids.SubscriptionId) (result ListAllOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/applicationSecurityGroups", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ApplicationSecurityGroup `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListAllComplete retrieves all the results into a single object +func (c ApplicationSecurityGroupsClient) ListAllComplete(ctx context.Context, id commonids.SubscriptionId) (ListAllCompleteResult, error) { + return c.ListAllCompleteMatchingPredicate(ctx, id, ApplicationSecurityGroupOperationPredicate{}) +} + +// ListAllCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ApplicationSecurityGroupsClient) ListAllCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate ApplicationSecurityGroupOperationPredicate) (result ListAllCompleteResult, err error) { + items := make([]ApplicationSecurityGroup, 0) + + resp, err := c.ListAll(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListAllCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/applicationsecuritygroups/method_updatetags.go b/resource-manager/network/2024-01-01/applicationsecuritygroups/method_updatetags.go new file mode 100644 index 00000000000..0343cea5693 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationsecuritygroups/method_updatetags.go @@ -0,0 +1,58 @@ +package applicationsecuritygroups + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ApplicationSecurityGroup +} + +// UpdateTags ... +func (c ApplicationSecurityGroupsClient) UpdateTags(ctx context.Context, id ApplicationSecurityGroupId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ApplicationSecurityGroup + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/applicationsecuritygroups/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/applicationsecuritygroups/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..56c89e2151e --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationsecuritygroups/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package applicationsecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationsecuritygroups/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/applicationsecuritygroups/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..c54772935da --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationsecuritygroups/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package applicationsecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationsecuritygroups/model_tagsobject.go b/resource-manager/network/2024-01-01/applicationsecuritygroups/model_tagsobject.go new file mode 100644 index 00000000000..b945e6c9cdf --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationsecuritygroups/model_tagsobject.go @@ -0,0 +1,8 @@ +package applicationsecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/applicationsecuritygroups/predicates.go b/resource-manager/network/2024-01-01/applicationsecuritygroups/predicates.go new file mode 100644 index 00000000000..6ea534ecd89 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationsecuritygroups/predicates.go @@ -0,0 +1,37 @@ +package applicationsecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p ApplicationSecurityGroupOperationPredicate) Matches(input ApplicationSecurityGroup) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/applicationsecuritygroups/version.go b/resource-manager/network/2024-01-01/applicationsecuritygroups/version.go new file mode 100644 index 00000000000..e7b435550b4 --- /dev/null +++ b/resource-manager/network/2024-01-01/applicationsecuritygroups/version.go @@ -0,0 +1,12 @@ +package applicationsecuritygroups + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/applicationsecuritygroups/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/availabledelegations/README.md b/resource-manager/network/2024-01-01/availabledelegations/README.md new file mode 100644 index 00000000000..cf6ee41af86 --- /dev/null +++ b/resource-manager/network/2024-01-01/availabledelegations/README.md @@ -0,0 +1,54 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/availabledelegations` Documentation + +The `availabledelegations` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/availabledelegations" +``` + + +### Client Initialization + +```go +client := availabledelegations.NewAvailableDelegationsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `AvailableDelegationsClient.AvailableDelegationsList` + +```go +ctx := context.TODO() +id := availabledelegations.NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue") + +// alternatively `client.AvailableDelegationsList(ctx, id)` can be used to do batched pagination +items, err := client.AvailableDelegationsListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `AvailableDelegationsClient.AvailableResourceGroupDelegationsList` + +```go +ctx := context.TODO() +id := availabledelegations.NewProviderLocationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "locationValue") + +// alternatively `client.AvailableResourceGroupDelegationsList(ctx, id)` can be used to do batched pagination +items, err := client.AvailableResourceGroupDelegationsListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/availabledelegations/client.go b/resource-manager/network/2024-01-01/availabledelegations/client.go new file mode 100644 index 00000000000..ff6ff754bce --- /dev/null +++ b/resource-manager/network/2024-01-01/availabledelegations/client.go @@ -0,0 +1,26 @@ +package availabledelegations + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AvailableDelegationsClient struct { + Client *resourcemanager.Client +} + +func NewAvailableDelegationsClientWithBaseURI(sdkApi sdkEnv.Api) (*AvailableDelegationsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "availabledelegations", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating AvailableDelegationsClient: %+v", err) + } + + return &AvailableDelegationsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/availabledelegations/id_location.go b/resource-manager/network/2024-01-01/availabledelegations/id_location.go new file mode 100644 index 00000000000..411da010546 --- /dev/null +++ b/resource-manager/network/2024-01-01/availabledelegations/id_location.go @@ -0,0 +1,121 @@ +package availabledelegations + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&LocationId{}) +} + +var _ resourceids.ResourceId = &LocationId{} + +// LocationId is a struct representing the Resource ID for a Location +type LocationId struct { + SubscriptionId string + LocationName string +} + +// NewLocationID returns a new LocationId struct +func NewLocationID(subscriptionId string, locationName string) LocationId { + return LocationId{ + SubscriptionId: subscriptionId, + LocationName: locationName, + } +} + +// ParseLocationID parses 'input' into a LocationId +func ParseLocationID(input string) (*LocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&LocationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseLocationIDInsensitively parses 'input' case-insensitively into a LocationId +// note: this method should only be used for API response data and not user input +func ParseLocationIDInsensitively(input string) (*LocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&LocationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *LocationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.LocationName, ok = input.Parsed["locationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "locationName", input) + } + + return nil +} + +// ValidateLocationID checks that 'input' can be parsed as a Location ID +func ValidateLocationID(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 := ParseLocationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Location ID +func (id LocationId) ID() string { + fmtString := "/subscriptions/%s/providers/Microsoft.Network/locations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.LocationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Location ID +func (id LocationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLocations", "locations", "locations"), + resourceids.UserSpecifiedSegment("locationName", "locationValue"), + } +} + +// String returns a human-readable description of this Location ID +func (id LocationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Location Name: %q", id.LocationName), + } + return fmt.Sprintf("Location (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/availabledelegations/id_location_test.go b/resource-manager/network/2024-01-01/availabledelegations/id_location_test.go new file mode 100644 index 00000000000..c8a4e105cc4 --- /dev/null +++ b/resource-manager/network/2024-01-01/availabledelegations/id_location_test.go @@ -0,0 +1,237 @@ +package availabledelegations + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &LocationId{} + +func TestNewLocationID(t *testing.T) { + id := NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.LocationName != "locationValue" { + t.Fatalf("Expected %q but got %q for Segment 'LocationName'", id.LocationName, "locationValue") + } +} + +func TestFormatLocationID(t *testing.T) { + actual := NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseLocationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLocationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestParseLocationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "lOcAtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLocationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestSegmentsForLocationId(t *testing.T) { + segments := LocationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("LocationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/availabledelegations/id_providerlocation.go b/resource-manager/network/2024-01-01/availabledelegations/id_providerlocation.go new file mode 100644 index 00000000000..18b359986fc --- /dev/null +++ b/resource-manager/network/2024-01-01/availabledelegations/id_providerlocation.go @@ -0,0 +1,130 @@ +package availabledelegations + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ProviderLocationId{}) +} + +var _ resourceids.ResourceId = &ProviderLocationId{} + +// ProviderLocationId is a struct representing the Resource ID for a Provider Location +type ProviderLocationId struct { + SubscriptionId string + ResourceGroupName string + LocationName string +} + +// NewProviderLocationID returns a new ProviderLocationId struct +func NewProviderLocationID(subscriptionId string, resourceGroupName string, locationName string) ProviderLocationId { + return ProviderLocationId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + LocationName: locationName, + } +} + +// ParseProviderLocationID parses 'input' into a ProviderLocationId +func ParseProviderLocationID(input string) (*ProviderLocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&ProviderLocationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ProviderLocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseProviderLocationIDInsensitively parses 'input' case-insensitively into a ProviderLocationId +// note: this method should only be used for API response data and not user input +func ParseProviderLocationIDInsensitively(input string) (*ProviderLocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&ProviderLocationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ProviderLocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ProviderLocationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.LocationName, ok = input.Parsed["locationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "locationName", input) + } + + return nil +} + +// ValidateProviderLocationID checks that 'input' can be parsed as a Provider Location ID +func ValidateProviderLocationID(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 := ParseProviderLocationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Provider Location ID +func (id ProviderLocationId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/locations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.LocationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Provider Location ID +func (id ProviderLocationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLocations", "locations", "locations"), + resourceids.UserSpecifiedSegment("locationName", "locationValue"), + } +} + +// String returns a human-readable description of this Provider Location ID +func (id ProviderLocationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Location Name: %q", id.LocationName), + } + return fmt.Sprintf("Provider Location (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/availabledelegations/id_providerlocation_test.go b/resource-manager/network/2024-01-01/availabledelegations/id_providerlocation_test.go new file mode 100644 index 00000000000..71efff5776b --- /dev/null +++ b/resource-manager/network/2024-01-01/availabledelegations/id_providerlocation_test.go @@ -0,0 +1,282 @@ +package availabledelegations + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ProviderLocationId{} + +func TestNewProviderLocationID(t *testing.T) { + id := NewProviderLocationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "locationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.LocationName != "locationValue" { + t.Fatalf("Expected %q but got %q for Segment 'LocationName'", id.LocationName, "locationValue") + } +} + +func TestFormatProviderLocationID(t *testing.T) { + actual := NewProviderLocationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "locationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations/locationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseProviderLocationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ProviderLocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations/locationValue", + Expected: &ProviderLocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseProviderLocationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestParseProviderLocationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ProviderLocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations/locationValue", + Expected: &ProviderLocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe", + Expected: &ProviderLocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + LocationName: "lOcAtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseProviderLocationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestSegmentsForProviderLocationId(t *testing.T) { + segments := ProviderLocationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ProviderLocationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/availabledelegations/method_availabledelegationslist.go b/resource-manager/network/2024-01-01/availabledelegations/method_availabledelegationslist.go new file mode 100644 index 00000000000..45c22a5af12 --- /dev/null +++ b/resource-manager/network/2024-01-01/availabledelegations/method_availabledelegationslist.go @@ -0,0 +1,92 @@ +package availabledelegations + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AvailableDelegationsListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]AvailableDelegation +} + +type AvailableDelegationsListCompleteResult struct { + LatestHttpResponse *http.Response + Items []AvailableDelegation +} + +// AvailableDelegationsList ... +func (c AvailableDelegationsClient) AvailableDelegationsList(ctx context.Context, id LocationId) (result AvailableDelegationsListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/availableDelegations", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]AvailableDelegation `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// AvailableDelegationsListComplete retrieves all the results into a single object +func (c AvailableDelegationsClient) AvailableDelegationsListComplete(ctx context.Context, id LocationId) (AvailableDelegationsListCompleteResult, error) { + return c.AvailableDelegationsListCompleteMatchingPredicate(ctx, id, AvailableDelegationOperationPredicate{}) +} + +// AvailableDelegationsListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c AvailableDelegationsClient) AvailableDelegationsListCompleteMatchingPredicate(ctx context.Context, id LocationId, predicate AvailableDelegationOperationPredicate) (result AvailableDelegationsListCompleteResult, err error) { + items := make([]AvailableDelegation, 0) + + resp, err := c.AvailableDelegationsList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = AvailableDelegationsListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/availabledelegations/method_availableresourcegroupdelegationslist.go b/resource-manager/network/2024-01-01/availabledelegations/method_availableresourcegroupdelegationslist.go new file mode 100644 index 00000000000..c507cd333ea --- /dev/null +++ b/resource-manager/network/2024-01-01/availabledelegations/method_availableresourcegroupdelegationslist.go @@ -0,0 +1,92 @@ +package availabledelegations + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AvailableResourceGroupDelegationsListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]AvailableDelegation +} + +type AvailableResourceGroupDelegationsListCompleteResult struct { + LatestHttpResponse *http.Response + Items []AvailableDelegation +} + +// AvailableResourceGroupDelegationsList ... +func (c AvailableDelegationsClient) AvailableResourceGroupDelegationsList(ctx context.Context, id ProviderLocationId) (result AvailableResourceGroupDelegationsListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/availableDelegations", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]AvailableDelegation `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// AvailableResourceGroupDelegationsListComplete retrieves all the results into a single object +func (c AvailableDelegationsClient) AvailableResourceGroupDelegationsListComplete(ctx context.Context, id ProviderLocationId) (AvailableResourceGroupDelegationsListCompleteResult, error) { + return c.AvailableResourceGroupDelegationsListCompleteMatchingPredicate(ctx, id, AvailableDelegationOperationPredicate{}) +} + +// AvailableResourceGroupDelegationsListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c AvailableDelegationsClient) AvailableResourceGroupDelegationsListCompleteMatchingPredicate(ctx context.Context, id ProviderLocationId, predicate AvailableDelegationOperationPredicate) (result AvailableResourceGroupDelegationsListCompleteResult, err error) { + items := make([]AvailableDelegation, 0) + + resp, err := c.AvailableResourceGroupDelegationsList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = AvailableResourceGroupDelegationsListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/availabledelegations/model_availabledelegation.go b/resource-manager/network/2024-01-01/availabledelegations/model_availabledelegation.go new file mode 100644 index 00000000000..0fa5dba60d1 --- /dev/null +++ b/resource-manager/network/2024-01-01/availabledelegations/model_availabledelegation.go @@ -0,0 +1,12 @@ +package availabledelegations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AvailableDelegation struct { + Actions *[]string `json:"actions,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/availabledelegations/predicates.go b/resource-manager/network/2024-01-01/availabledelegations/predicates.go new file mode 100644 index 00000000000..caf6b904077 --- /dev/null +++ b/resource-manager/network/2024-01-01/availabledelegations/predicates.go @@ -0,0 +1,32 @@ +package availabledelegations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AvailableDelegationOperationPredicate struct { + Id *string + Name *string + ServiceName *string + Type *string +} + +func (p AvailableDelegationOperationPredicate) Matches(input AvailableDelegation) bool { + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.ServiceName != nil && (input.ServiceName == nil || *p.ServiceName != *input.ServiceName) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/availabledelegations/version.go b/resource-manager/network/2024-01-01/availabledelegations/version.go new file mode 100644 index 00000000000..d6dc14522e8 --- /dev/null +++ b/resource-manager/network/2024-01-01/availabledelegations/version.go @@ -0,0 +1,12 @@ +package availabledelegations + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/availabledelegations/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/availableservicealiases/README.md b/resource-manager/network/2024-01-01/availableservicealiases/README.md new file mode 100644 index 00000000000..97b60073f00 --- /dev/null +++ b/resource-manager/network/2024-01-01/availableservicealiases/README.md @@ -0,0 +1,54 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/availableservicealiases` Documentation + +The `availableservicealiases` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/availableservicealiases" +``` + + +### Client Initialization + +```go +client := availableservicealiases.NewAvailableServiceAliasesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `AvailableServiceAliasesClient.List` + +```go +ctx := context.TODO() +id := availableservicealiases.NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `AvailableServiceAliasesClient.ListByResourceGroup` + +```go +ctx := context.TODO() +id := availableservicealiases.NewProviderLocationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "locationValue") + +// alternatively `client.ListByResourceGroup(ctx, id)` can be used to do batched pagination +items, err := client.ListByResourceGroupComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/availableservicealiases/client.go b/resource-manager/network/2024-01-01/availableservicealiases/client.go new file mode 100644 index 00000000000..383e80f6061 --- /dev/null +++ b/resource-manager/network/2024-01-01/availableservicealiases/client.go @@ -0,0 +1,26 @@ +package availableservicealiases + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AvailableServiceAliasesClient struct { + Client *resourcemanager.Client +} + +func NewAvailableServiceAliasesClientWithBaseURI(sdkApi sdkEnv.Api) (*AvailableServiceAliasesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "availableservicealiases", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating AvailableServiceAliasesClient: %+v", err) + } + + return &AvailableServiceAliasesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/availableservicealiases/id_location.go b/resource-manager/network/2024-01-01/availableservicealiases/id_location.go new file mode 100644 index 00000000000..5bff2b43759 --- /dev/null +++ b/resource-manager/network/2024-01-01/availableservicealiases/id_location.go @@ -0,0 +1,121 @@ +package availableservicealiases + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&LocationId{}) +} + +var _ resourceids.ResourceId = &LocationId{} + +// LocationId is a struct representing the Resource ID for a Location +type LocationId struct { + SubscriptionId string + LocationName string +} + +// NewLocationID returns a new LocationId struct +func NewLocationID(subscriptionId string, locationName string) LocationId { + return LocationId{ + SubscriptionId: subscriptionId, + LocationName: locationName, + } +} + +// ParseLocationID parses 'input' into a LocationId +func ParseLocationID(input string) (*LocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&LocationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseLocationIDInsensitively parses 'input' case-insensitively into a LocationId +// note: this method should only be used for API response data and not user input +func ParseLocationIDInsensitively(input string) (*LocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&LocationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *LocationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.LocationName, ok = input.Parsed["locationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "locationName", input) + } + + return nil +} + +// ValidateLocationID checks that 'input' can be parsed as a Location ID +func ValidateLocationID(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 := ParseLocationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Location ID +func (id LocationId) ID() string { + fmtString := "/subscriptions/%s/providers/Microsoft.Network/locations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.LocationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Location ID +func (id LocationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLocations", "locations", "locations"), + resourceids.UserSpecifiedSegment("locationName", "locationValue"), + } +} + +// String returns a human-readable description of this Location ID +func (id LocationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Location Name: %q", id.LocationName), + } + return fmt.Sprintf("Location (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/availableservicealiases/id_location_test.go b/resource-manager/network/2024-01-01/availableservicealiases/id_location_test.go new file mode 100644 index 00000000000..d04df9ce9ca --- /dev/null +++ b/resource-manager/network/2024-01-01/availableservicealiases/id_location_test.go @@ -0,0 +1,237 @@ +package availableservicealiases + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &LocationId{} + +func TestNewLocationID(t *testing.T) { + id := NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.LocationName != "locationValue" { + t.Fatalf("Expected %q but got %q for Segment 'LocationName'", id.LocationName, "locationValue") + } +} + +func TestFormatLocationID(t *testing.T) { + actual := NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseLocationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLocationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestParseLocationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "lOcAtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLocationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestSegmentsForLocationId(t *testing.T) { + segments := LocationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("LocationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/availableservicealiases/id_providerlocation.go b/resource-manager/network/2024-01-01/availableservicealiases/id_providerlocation.go new file mode 100644 index 00000000000..7ec8519458c --- /dev/null +++ b/resource-manager/network/2024-01-01/availableservicealiases/id_providerlocation.go @@ -0,0 +1,130 @@ +package availableservicealiases + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ProviderLocationId{}) +} + +var _ resourceids.ResourceId = &ProviderLocationId{} + +// ProviderLocationId is a struct representing the Resource ID for a Provider Location +type ProviderLocationId struct { + SubscriptionId string + ResourceGroupName string + LocationName string +} + +// NewProviderLocationID returns a new ProviderLocationId struct +func NewProviderLocationID(subscriptionId string, resourceGroupName string, locationName string) ProviderLocationId { + return ProviderLocationId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + LocationName: locationName, + } +} + +// ParseProviderLocationID parses 'input' into a ProviderLocationId +func ParseProviderLocationID(input string) (*ProviderLocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&ProviderLocationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ProviderLocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseProviderLocationIDInsensitively parses 'input' case-insensitively into a ProviderLocationId +// note: this method should only be used for API response data and not user input +func ParseProviderLocationIDInsensitively(input string) (*ProviderLocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&ProviderLocationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ProviderLocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ProviderLocationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.LocationName, ok = input.Parsed["locationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "locationName", input) + } + + return nil +} + +// ValidateProviderLocationID checks that 'input' can be parsed as a Provider Location ID +func ValidateProviderLocationID(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 := ParseProviderLocationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Provider Location ID +func (id ProviderLocationId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/locations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.LocationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Provider Location ID +func (id ProviderLocationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLocations", "locations", "locations"), + resourceids.UserSpecifiedSegment("locationName", "locationValue"), + } +} + +// String returns a human-readable description of this Provider Location ID +func (id ProviderLocationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Location Name: %q", id.LocationName), + } + return fmt.Sprintf("Provider Location (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/availableservicealiases/id_providerlocation_test.go b/resource-manager/network/2024-01-01/availableservicealiases/id_providerlocation_test.go new file mode 100644 index 00000000000..07702c8432c --- /dev/null +++ b/resource-manager/network/2024-01-01/availableservicealiases/id_providerlocation_test.go @@ -0,0 +1,282 @@ +package availableservicealiases + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ProviderLocationId{} + +func TestNewProviderLocationID(t *testing.T) { + id := NewProviderLocationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "locationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.LocationName != "locationValue" { + t.Fatalf("Expected %q but got %q for Segment 'LocationName'", id.LocationName, "locationValue") + } +} + +func TestFormatProviderLocationID(t *testing.T) { + actual := NewProviderLocationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "locationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations/locationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseProviderLocationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ProviderLocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations/locationValue", + Expected: &ProviderLocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseProviderLocationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestParseProviderLocationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ProviderLocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations/locationValue", + Expected: &ProviderLocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe", + Expected: &ProviderLocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + LocationName: "lOcAtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseProviderLocationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestSegmentsForProviderLocationId(t *testing.T) { + segments := ProviderLocationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ProviderLocationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/availableservicealiases/method_list.go b/resource-manager/network/2024-01-01/availableservicealiases/method_list.go new file mode 100644 index 00000000000..f5cd7f6b9a3 --- /dev/null +++ b/resource-manager/network/2024-01-01/availableservicealiases/method_list.go @@ -0,0 +1,92 @@ +package availableservicealiases + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]AvailableServiceAlias +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []AvailableServiceAlias +} + +// List ... +func (c AvailableServiceAliasesClient) List(ctx context.Context, id LocationId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/availableServiceAliases", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]AvailableServiceAlias `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c AvailableServiceAliasesClient) ListComplete(ctx context.Context, id LocationId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, AvailableServiceAliasOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c AvailableServiceAliasesClient) ListCompleteMatchingPredicate(ctx context.Context, id LocationId, predicate AvailableServiceAliasOperationPredicate) (result ListCompleteResult, err error) { + items := make([]AvailableServiceAlias, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/availableservicealiases/method_listbyresourcegroup.go b/resource-manager/network/2024-01-01/availableservicealiases/method_listbyresourcegroup.go new file mode 100644 index 00000000000..dedb4883d49 --- /dev/null +++ b/resource-manager/network/2024-01-01/availableservicealiases/method_listbyresourcegroup.go @@ -0,0 +1,92 @@ +package availableservicealiases + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListByResourceGroupOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]AvailableServiceAlias +} + +type ListByResourceGroupCompleteResult struct { + LatestHttpResponse *http.Response + Items []AvailableServiceAlias +} + +// ListByResourceGroup ... +func (c AvailableServiceAliasesClient) ListByResourceGroup(ctx context.Context, id ProviderLocationId) (result ListByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/availableServiceAliases", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]AvailableServiceAlias `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListByResourceGroupComplete retrieves all the results into a single object +func (c AvailableServiceAliasesClient) ListByResourceGroupComplete(ctx context.Context, id ProviderLocationId) (ListByResourceGroupCompleteResult, error) { + return c.ListByResourceGroupCompleteMatchingPredicate(ctx, id, AvailableServiceAliasOperationPredicate{}) +} + +// ListByResourceGroupCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c AvailableServiceAliasesClient) ListByResourceGroupCompleteMatchingPredicate(ctx context.Context, id ProviderLocationId, predicate AvailableServiceAliasOperationPredicate) (result ListByResourceGroupCompleteResult, err error) { + items := make([]AvailableServiceAlias, 0) + + resp, err := c.ListByResourceGroup(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListByResourceGroupCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/availableservicealiases/model_availableservicealias.go b/resource-manager/network/2024-01-01/availableservicealiases/model_availableservicealias.go new file mode 100644 index 00000000000..b5f6cfd263b --- /dev/null +++ b/resource-manager/network/2024-01-01/availableservicealiases/model_availableservicealias.go @@ -0,0 +1,11 @@ +package availableservicealiases + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AvailableServiceAlias struct { + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + ResourceName *string `json:"resourceName,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/availableservicealiases/predicates.go b/resource-manager/network/2024-01-01/availableservicealiases/predicates.go new file mode 100644 index 00000000000..afe2abff9ab --- /dev/null +++ b/resource-manager/network/2024-01-01/availableservicealiases/predicates.go @@ -0,0 +1,32 @@ +package availableservicealiases + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AvailableServiceAliasOperationPredicate struct { + Id *string + Name *string + ResourceName *string + Type *string +} + +func (p AvailableServiceAliasOperationPredicate) Matches(input AvailableServiceAlias) bool { + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.ResourceName != nil && (input.ResourceName == nil || *p.ResourceName != *input.ResourceName) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/availableservicealiases/version.go b/resource-manager/network/2024-01-01/availableservicealiases/version.go new file mode 100644 index 00000000000..13066a6403c --- /dev/null +++ b/resource-manager/network/2024-01-01/availableservicealiases/version.go @@ -0,0 +1,12 @@ +package availableservicealiases + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/availableservicealiases/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/README.md b/resource-manager/network/2024-01-01/azurefirewalls/README.md new file mode 100644 index 00000000000..4d35f87fb73 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/README.md @@ -0,0 +1,146 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/azurefirewalls` Documentation + +The `azurefirewalls` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/azurefirewalls" +``` + + +### Client Initialization + +```go +client := azurefirewalls.NewAzureFirewallsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `AzureFirewallsClient.AzureFirewallsListLearnedPrefixes` + +```go +ctx := context.TODO() +id := azurefirewalls.NewAzureFirewallID("12345678-1234-9876-4563-123456789012", "example-resource-group", "azureFirewallValue") + +if err := client.AzureFirewallsListLearnedPrefixesThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `AzureFirewallsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := azurefirewalls.NewAzureFirewallID("12345678-1234-9876-4563-123456789012", "example-resource-group", "azureFirewallValue") + +payload := azurefirewalls.AzureFirewall{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `AzureFirewallsClient.Delete` + +```go +ctx := context.TODO() +id := azurefirewalls.NewAzureFirewallID("12345678-1234-9876-4563-123456789012", "example-resource-group", "azureFirewallValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `AzureFirewallsClient.Get` + +```go +ctx := context.TODO() +id := azurefirewalls.NewAzureFirewallID("12345678-1234-9876-4563-123456789012", "example-resource-group", "azureFirewallValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `AzureFirewallsClient.List` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `AzureFirewallsClient.ListAll` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.ListAll(ctx, id)` can be used to do batched pagination +items, err := client.ListAllComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `AzureFirewallsClient.PacketCapture` + +```go +ctx := context.TODO() +id := azurefirewalls.NewAzureFirewallID("12345678-1234-9876-4563-123456789012", "example-resource-group", "azureFirewallValue") + +payload := azurefirewalls.FirewallPacketCaptureParameters{ + // ... +} + + +if err := client.PacketCaptureThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `AzureFirewallsClient.UpdateTags` + +```go +ctx := context.TODO() +id := azurefirewalls.NewAzureFirewallID("12345678-1234-9876-4563-123456789012", "example-resource-group", "azureFirewallValue") + +payload := azurefirewalls.TagsObject{ + // ... +} + + +if err := client.UpdateTagsThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` diff --git a/resource-manager/network/2024-01-01/azurefirewalls/client.go b/resource-manager/network/2024-01-01/azurefirewalls/client.go new file mode 100644 index 00000000000..e1119aea925 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/client.go @@ -0,0 +1,26 @@ +package azurefirewalls + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallsClient struct { + Client *resourcemanager.Client +} + +func NewAzureFirewallsClientWithBaseURI(sdkApi sdkEnv.Api) (*AzureFirewallsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "azurefirewalls", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating AzureFirewallsClient: %+v", err) + } + + return &AzureFirewallsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/constants.go b/resource-manager/network/2024-01-01/azurefirewalls/constants.go new file mode 100644 index 00000000000..d7a3af8fb71 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/constants.go @@ -0,0 +1,412 @@ +package azurefirewalls + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallApplicationRuleProtocolType string + +const ( + AzureFirewallApplicationRuleProtocolTypeHTTP AzureFirewallApplicationRuleProtocolType = "Http" + AzureFirewallApplicationRuleProtocolTypeHTTPS AzureFirewallApplicationRuleProtocolType = "Https" + AzureFirewallApplicationRuleProtocolTypeMssql AzureFirewallApplicationRuleProtocolType = "Mssql" +) + +func PossibleValuesForAzureFirewallApplicationRuleProtocolType() []string { + return []string{ + string(AzureFirewallApplicationRuleProtocolTypeHTTP), + string(AzureFirewallApplicationRuleProtocolTypeHTTPS), + string(AzureFirewallApplicationRuleProtocolTypeMssql), + } +} + +func (s *AzureFirewallApplicationRuleProtocolType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAzureFirewallApplicationRuleProtocolType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAzureFirewallApplicationRuleProtocolType(input string) (*AzureFirewallApplicationRuleProtocolType, error) { + vals := map[string]AzureFirewallApplicationRuleProtocolType{ + "http": AzureFirewallApplicationRuleProtocolTypeHTTP, + "https": AzureFirewallApplicationRuleProtocolTypeHTTPS, + "mssql": AzureFirewallApplicationRuleProtocolTypeMssql, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := AzureFirewallApplicationRuleProtocolType(input) + return &out, nil +} + +type AzureFirewallNatRCActionType string + +const ( + AzureFirewallNatRCActionTypeDnat AzureFirewallNatRCActionType = "Dnat" + AzureFirewallNatRCActionTypeSnat AzureFirewallNatRCActionType = "Snat" +) + +func PossibleValuesForAzureFirewallNatRCActionType() []string { + return []string{ + string(AzureFirewallNatRCActionTypeDnat), + string(AzureFirewallNatRCActionTypeSnat), + } +} + +func (s *AzureFirewallNatRCActionType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAzureFirewallNatRCActionType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAzureFirewallNatRCActionType(input string) (*AzureFirewallNatRCActionType, error) { + vals := map[string]AzureFirewallNatRCActionType{ + "dnat": AzureFirewallNatRCActionTypeDnat, + "snat": AzureFirewallNatRCActionTypeSnat, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := AzureFirewallNatRCActionType(input) + return &out, nil +} + +type AzureFirewallNetworkRuleProtocol string + +const ( + AzureFirewallNetworkRuleProtocolAny AzureFirewallNetworkRuleProtocol = "Any" + AzureFirewallNetworkRuleProtocolICMP AzureFirewallNetworkRuleProtocol = "ICMP" + AzureFirewallNetworkRuleProtocolTCP AzureFirewallNetworkRuleProtocol = "TCP" + AzureFirewallNetworkRuleProtocolUDP AzureFirewallNetworkRuleProtocol = "UDP" +) + +func PossibleValuesForAzureFirewallNetworkRuleProtocol() []string { + return []string{ + string(AzureFirewallNetworkRuleProtocolAny), + string(AzureFirewallNetworkRuleProtocolICMP), + string(AzureFirewallNetworkRuleProtocolTCP), + string(AzureFirewallNetworkRuleProtocolUDP), + } +} + +func (s *AzureFirewallNetworkRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAzureFirewallNetworkRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAzureFirewallNetworkRuleProtocol(input string) (*AzureFirewallNetworkRuleProtocol, error) { + vals := map[string]AzureFirewallNetworkRuleProtocol{ + "any": AzureFirewallNetworkRuleProtocolAny, + "icmp": AzureFirewallNetworkRuleProtocolICMP, + "tcp": AzureFirewallNetworkRuleProtocolTCP, + "udp": AzureFirewallNetworkRuleProtocolUDP, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := AzureFirewallNetworkRuleProtocol(input) + return &out, nil +} + +type AzureFirewallPacketCaptureFlagsType string + +const ( + AzureFirewallPacketCaptureFlagsTypeAck AzureFirewallPacketCaptureFlagsType = "ack" + AzureFirewallPacketCaptureFlagsTypeFin AzureFirewallPacketCaptureFlagsType = "fin" + AzureFirewallPacketCaptureFlagsTypePush AzureFirewallPacketCaptureFlagsType = "push" + AzureFirewallPacketCaptureFlagsTypeRst AzureFirewallPacketCaptureFlagsType = "rst" + AzureFirewallPacketCaptureFlagsTypeSyn AzureFirewallPacketCaptureFlagsType = "syn" + AzureFirewallPacketCaptureFlagsTypeUrg AzureFirewallPacketCaptureFlagsType = "urg" +) + +func PossibleValuesForAzureFirewallPacketCaptureFlagsType() []string { + return []string{ + string(AzureFirewallPacketCaptureFlagsTypeAck), + string(AzureFirewallPacketCaptureFlagsTypeFin), + string(AzureFirewallPacketCaptureFlagsTypePush), + string(AzureFirewallPacketCaptureFlagsTypeRst), + string(AzureFirewallPacketCaptureFlagsTypeSyn), + string(AzureFirewallPacketCaptureFlagsTypeUrg), + } +} + +func (s *AzureFirewallPacketCaptureFlagsType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAzureFirewallPacketCaptureFlagsType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAzureFirewallPacketCaptureFlagsType(input string) (*AzureFirewallPacketCaptureFlagsType, error) { + vals := map[string]AzureFirewallPacketCaptureFlagsType{ + "ack": AzureFirewallPacketCaptureFlagsTypeAck, + "fin": AzureFirewallPacketCaptureFlagsTypeFin, + "push": AzureFirewallPacketCaptureFlagsTypePush, + "rst": AzureFirewallPacketCaptureFlagsTypeRst, + "syn": AzureFirewallPacketCaptureFlagsTypeSyn, + "urg": AzureFirewallPacketCaptureFlagsTypeUrg, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := AzureFirewallPacketCaptureFlagsType(input) + return &out, nil +} + +type AzureFirewallRCActionType string + +const ( + AzureFirewallRCActionTypeAllow AzureFirewallRCActionType = "Allow" + AzureFirewallRCActionTypeDeny AzureFirewallRCActionType = "Deny" +) + +func PossibleValuesForAzureFirewallRCActionType() []string { + return []string{ + string(AzureFirewallRCActionTypeAllow), + string(AzureFirewallRCActionTypeDeny), + } +} + +func (s *AzureFirewallRCActionType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAzureFirewallRCActionType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAzureFirewallRCActionType(input string) (*AzureFirewallRCActionType, error) { + vals := map[string]AzureFirewallRCActionType{ + "allow": AzureFirewallRCActionTypeAllow, + "deny": AzureFirewallRCActionTypeDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := AzureFirewallRCActionType(input) + return &out, nil +} + +type AzureFirewallSkuName string + +const ( + AzureFirewallSkuNameAZFWHub AzureFirewallSkuName = "AZFW_Hub" + AzureFirewallSkuNameAZFWVNet AzureFirewallSkuName = "AZFW_VNet" +) + +func PossibleValuesForAzureFirewallSkuName() []string { + return []string{ + string(AzureFirewallSkuNameAZFWHub), + string(AzureFirewallSkuNameAZFWVNet), + } +} + +func (s *AzureFirewallSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAzureFirewallSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAzureFirewallSkuName(input string) (*AzureFirewallSkuName, error) { + vals := map[string]AzureFirewallSkuName{ + "azfw_hub": AzureFirewallSkuNameAZFWHub, + "azfw_vnet": AzureFirewallSkuNameAZFWVNet, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := AzureFirewallSkuName(input) + return &out, nil +} + +type AzureFirewallSkuTier string + +const ( + AzureFirewallSkuTierBasic AzureFirewallSkuTier = "Basic" + AzureFirewallSkuTierPremium AzureFirewallSkuTier = "Premium" + AzureFirewallSkuTierStandard AzureFirewallSkuTier = "Standard" +) + +func PossibleValuesForAzureFirewallSkuTier() []string { + return []string{ + string(AzureFirewallSkuTierBasic), + string(AzureFirewallSkuTierPremium), + string(AzureFirewallSkuTierStandard), + } +} + +func (s *AzureFirewallSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAzureFirewallSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAzureFirewallSkuTier(input string) (*AzureFirewallSkuTier, error) { + vals := map[string]AzureFirewallSkuTier{ + "basic": AzureFirewallSkuTierBasic, + "premium": AzureFirewallSkuTierPremium, + "standard": AzureFirewallSkuTierStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := AzureFirewallSkuTier(input) + return &out, nil +} + +type AzureFirewallThreatIntelMode string + +const ( + AzureFirewallThreatIntelModeAlert AzureFirewallThreatIntelMode = "Alert" + AzureFirewallThreatIntelModeDeny AzureFirewallThreatIntelMode = "Deny" + AzureFirewallThreatIntelModeOff AzureFirewallThreatIntelMode = "Off" +) + +func PossibleValuesForAzureFirewallThreatIntelMode() []string { + return []string{ + string(AzureFirewallThreatIntelModeAlert), + string(AzureFirewallThreatIntelModeDeny), + string(AzureFirewallThreatIntelModeOff), + } +} + +func (s *AzureFirewallThreatIntelMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAzureFirewallThreatIntelMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAzureFirewallThreatIntelMode(input string) (*AzureFirewallThreatIntelMode, error) { + vals := map[string]AzureFirewallThreatIntelMode{ + "alert": AzureFirewallThreatIntelModeAlert, + "deny": AzureFirewallThreatIntelModeDeny, + "off": AzureFirewallThreatIntelModeOff, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := AzureFirewallThreatIntelMode(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/id_azurefirewall.go b/resource-manager/network/2024-01-01/azurefirewalls/id_azurefirewall.go new file mode 100644 index 00000000000..20ab073f448 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/id_azurefirewall.go @@ -0,0 +1,130 @@ +package azurefirewalls + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&AzureFirewallId{}) +} + +var _ resourceids.ResourceId = &AzureFirewallId{} + +// AzureFirewallId is a struct representing the Resource ID for a Azure Firewall +type AzureFirewallId struct { + SubscriptionId string + ResourceGroupName string + AzureFirewallName string +} + +// NewAzureFirewallID returns a new AzureFirewallId struct +func NewAzureFirewallID(subscriptionId string, resourceGroupName string, azureFirewallName string) AzureFirewallId { + return AzureFirewallId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + AzureFirewallName: azureFirewallName, + } +} + +// ParseAzureFirewallID parses 'input' into a AzureFirewallId +func ParseAzureFirewallID(input string) (*AzureFirewallId, error) { + parser := resourceids.NewParserFromResourceIdType(&AzureFirewallId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := AzureFirewallId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseAzureFirewallIDInsensitively parses 'input' case-insensitively into a AzureFirewallId +// note: this method should only be used for API response data and not user input +func ParseAzureFirewallIDInsensitively(input string) (*AzureFirewallId, error) { + parser := resourceids.NewParserFromResourceIdType(&AzureFirewallId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := AzureFirewallId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *AzureFirewallId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.AzureFirewallName, ok = input.Parsed["azureFirewallName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "azureFirewallName", input) + } + + return nil +} + +// ValidateAzureFirewallID checks that 'input' can be parsed as a Azure Firewall ID +func ValidateAzureFirewallID(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 := ParseAzureFirewallID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Azure Firewall ID +func (id AzureFirewallId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/azureFirewalls/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.AzureFirewallName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Azure Firewall ID +func (id AzureFirewallId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticAzureFirewalls", "azureFirewalls", "azureFirewalls"), + resourceids.UserSpecifiedSegment("azureFirewallName", "azureFirewallValue"), + } +} + +// String returns a human-readable description of this Azure Firewall ID +func (id AzureFirewallId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Azure Firewall Name: %q", id.AzureFirewallName), + } + return fmt.Sprintf("Azure Firewall (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/id_azurefirewall_test.go b/resource-manager/network/2024-01-01/azurefirewalls/id_azurefirewall_test.go new file mode 100644 index 00000000000..9819b454d9e --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/id_azurefirewall_test.go @@ -0,0 +1,282 @@ +package azurefirewalls + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &AzureFirewallId{} + +func TestNewAzureFirewallID(t *testing.T) { + id := NewAzureFirewallID("12345678-1234-9876-4563-123456789012", "example-resource-group", "azureFirewallValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.AzureFirewallName != "azureFirewallValue" { + t.Fatalf("Expected %q but got %q for Segment 'AzureFirewallName'", id.AzureFirewallName, "azureFirewallValue") + } +} + +func TestFormatAzureFirewallID(t *testing.T) { + actual := NewAzureFirewallID("12345678-1234-9876-4563-123456789012", "example-resource-group", "azureFirewallValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/azureFirewalls/azureFirewallValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseAzureFirewallID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *AzureFirewallId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/azureFirewalls", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/azureFirewalls/azureFirewallValue", + Expected: &AzureFirewallId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + AzureFirewallName: "azureFirewallValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/azureFirewalls/azureFirewallValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseAzureFirewallID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.AzureFirewallName != v.Expected.AzureFirewallName { + t.Fatalf("Expected %q but got %q for AzureFirewallName", v.Expected.AzureFirewallName, actual.AzureFirewallName) + } + + } +} + +func TestParseAzureFirewallIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *AzureFirewallId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/azureFirewalls", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/aZuReFiReWaLlS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/azureFirewalls/azureFirewallValue", + Expected: &AzureFirewallId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + AzureFirewallName: "azureFirewallValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/azureFirewalls/azureFirewallValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/aZuReFiReWaLlS/aZuReFiReWaLlVaLuE", + Expected: &AzureFirewallId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + AzureFirewallName: "aZuReFiReWaLlVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/aZuReFiReWaLlS/aZuReFiReWaLlVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseAzureFirewallIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.AzureFirewallName != v.Expected.AzureFirewallName { + t.Fatalf("Expected %q but got %q for AzureFirewallName", v.Expected.AzureFirewallName, actual.AzureFirewallName) + } + + } +} + +func TestSegmentsForAzureFirewallId(t *testing.T) { + segments := AzureFirewallId{}.Segments() + if len(segments) == 0 { + t.Fatalf("AzureFirewallId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/method_azurefirewallslistlearnedprefixes.go b/resource-manager/network/2024-01-01/azurefirewalls/method_azurefirewallslistlearnedprefixes.go new file mode 100644 index 00000000000..79c6c0ccfd6 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/method_azurefirewallslistlearnedprefixes.go @@ -0,0 +1,71 @@ +package azurefirewalls + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallsListLearnedPrefixesOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *IPPrefixesList +} + +// AzureFirewallsListLearnedPrefixes ... +func (c AzureFirewallsClient) AzureFirewallsListLearnedPrefixes(ctx context.Context, id AzureFirewallId) (result AzureFirewallsListLearnedPrefixesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/learnedIPPrefixes", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// AzureFirewallsListLearnedPrefixesThenPoll performs AzureFirewallsListLearnedPrefixes then polls until it's completed +func (c AzureFirewallsClient) AzureFirewallsListLearnedPrefixesThenPoll(ctx context.Context, id AzureFirewallId) error { + result, err := c.AzureFirewallsListLearnedPrefixes(ctx, id) + if err != nil { + return fmt.Errorf("performing AzureFirewallsListLearnedPrefixes: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after AzureFirewallsListLearnedPrefixes: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/method_createorupdate.go b/resource-manager/network/2024-01-01/azurefirewalls/method_createorupdate.go new file mode 100644 index 00000000000..fdd7520026c --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/method_createorupdate.go @@ -0,0 +1,75 @@ +package azurefirewalls + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *AzureFirewall +} + +// CreateOrUpdate ... +func (c AzureFirewallsClient) CreateOrUpdate(ctx context.Context, id AzureFirewallId, input AzureFirewall) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c AzureFirewallsClient) CreateOrUpdateThenPoll(ctx context.Context, id AzureFirewallId, input AzureFirewall) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/method_delete.go b/resource-manager/network/2024-01-01/azurefirewalls/method_delete.go new file mode 100644 index 00000000000..04fddc41723 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/method_delete.go @@ -0,0 +1,71 @@ +package azurefirewalls + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c AzureFirewallsClient) Delete(ctx context.Context, id AzureFirewallId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c AzureFirewallsClient) DeleteThenPoll(ctx context.Context, id AzureFirewallId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/method_get.go b/resource-manager/network/2024-01-01/azurefirewalls/method_get.go new file mode 100644 index 00000000000..7fa6155aa4a --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/method_get.go @@ -0,0 +1,54 @@ +package azurefirewalls + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *AzureFirewall +} + +// Get ... +func (c AzureFirewallsClient) Get(ctx context.Context, id AzureFirewallId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model AzureFirewall + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/method_list.go b/resource-manager/network/2024-01-01/azurefirewalls/method_list.go new file mode 100644 index 00000000000..ffbf3c167c9 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/method_list.go @@ -0,0 +1,93 @@ +package azurefirewalls + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]AzureFirewall +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []AzureFirewall +} + +// List ... +func (c AzureFirewallsClient) List(ctx context.Context, id commonids.ResourceGroupId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/azureFirewalls", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]AzureFirewall `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c AzureFirewallsClient) ListComplete(ctx context.Context, id commonids.ResourceGroupId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, AzureFirewallOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c AzureFirewallsClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate AzureFirewallOperationPredicate) (result ListCompleteResult, err error) { + items := make([]AzureFirewall, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/method_listall.go b/resource-manager/network/2024-01-01/azurefirewalls/method_listall.go new file mode 100644 index 00000000000..c688f48f1de --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/method_listall.go @@ -0,0 +1,93 @@ +package azurefirewalls + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAllOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]AzureFirewall +} + +type ListAllCompleteResult struct { + LatestHttpResponse *http.Response + Items []AzureFirewall +} + +// ListAll ... +func (c AzureFirewallsClient) ListAll(ctx context.Context, id commonids.SubscriptionId) (result ListAllOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/azureFirewalls", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]AzureFirewall `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListAllComplete retrieves all the results into a single object +func (c AzureFirewallsClient) ListAllComplete(ctx context.Context, id commonids.SubscriptionId) (ListAllCompleteResult, error) { + return c.ListAllCompleteMatchingPredicate(ctx, id, AzureFirewallOperationPredicate{}) +} + +// ListAllCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c AzureFirewallsClient) ListAllCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate AzureFirewallOperationPredicate) (result ListAllCompleteResult, err error) { + items := make([]AzureFirewall, 0) + + resp, err := c.ListAll(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListAllCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/method_packetcapture.go b/resource-manager/network/2024-01-01/azurefirewalls/method_packetcapture.go new file mode 100644 index 00000000000..a2b211da6c7 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/method_packetcapture.go @@ -0,0 +1,73 @@ +package azurefirewalls + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PacketCaptureOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// PacketCapture ... +func (c AzureFirewallsClient) PacketCapture(ctx context.Context, id AzureFirewallId, input FirewallPacketCaptureParameters) (result PacketCaptureOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/packetCapture", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// PacketCaptureThenPoll performs PacketCapture then polls until it's completed +func (c AzureFirewallsClient) PacketCaptureThenPoll(ctx context.Context, id AzureFirewallId, input FirewallPacketCaptureParameters) error { + result, err := c.PacketCapture(ctx, id, input) + if err != nil { + return fmt.Errorf("performing PacketCapture: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after PacketCapture: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/method_updatetags.go b/resource-manager/network/2024-01-01/azurefirewalls/method_updatetags.go new file mode 100644 index 00000000000..1d404977af9 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/method_updatetags.go @@ -0,0 +1,75 @@ +package azurefirewalls + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *AzureFirewall +} + +// UpdateTags ... +func (c AzureFirewallsClient) UpdateTags(ctx context.Context, id AzureFirewallId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// UpdateTagsThenPoll performs UpdateTags then polls until it's completed +func (c AzureFirewallsClient) UpdateTagsThenPoll(ctx context.Context, id AzureFirewallId, input TagsObject) error { + result, err := c.UpdateTags(ctx, id, input) + if err != nil { + return fmt.Errorf("performing UpdateTags: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after UpdateTags: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewall.go b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewall.go new file mode 100644 index 00000000000..da4d4ccf5f7 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewall.go @@ -0,0 +1,19 @@ +package azurefirewalls + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewall struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *AzureFirewallPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallapplicationrule.go b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallapplicationrule.go new file mode 100644 index 00000000000..c74f6235d09 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallapplicationrule.go @@ -0,0 +1,14 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallApplicationRule struct { + Description *string `json:"description,omitempty"` + FqdnTags *[]string `json:"fqdnTags,omitempty"` + Name *string `json:"name,omitempty"` + Protocols *[]AzureFirewallApplicationRuleProtocol `json:"protocols,omitempty"` + SourceAddresses *[]string `json:"sourceAddresses,omitempty"` + SourceIPGroups *[]string `json:"sourceIpGroups,omitempty"` + TargetFqdns *[]string `json:"targetFqdns,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallapplicationrulecollection.go b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallapplicationrulecollection.go new file mode 100644 index 00000000000..0307e6e7b33 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallapplicationrulecollection.go @@ -0,0 +1,11 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallApplicationRuleCollection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *AzureFirewallApplicationRuleCollectionPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallapplicationrulecollectionpropertiesformat.go b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallapplicationrulecollectionpropertiesformat.go new file mode 100644 index 00000000000..bd5d09f330d --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallapplicationrulecollectionpropertiesformat.go @@ -0,0 +1,11 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallApplicationRuleCollectionPropertiesFormat struct { + Action *AzureFirewallRCAction `json:"action,omitempty"` + Priority *int64 `json:"priority,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Rules *[]AzureFirewallApplicationRule `json:"rules,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallapplicationruleprotocol.go b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallapplicationruleprotocol.go new file mode 100644 index 00000000000..8ea63b2ef92 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallapplicationruleprotocol.go @@ -0,0 +1,9 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallApplicationRuleProtocol struct { + Port *int64 `json:"port,omitempty"` + ProtocolType *AzureFirewallApplicationRuleProtocolType `json:"protocolType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallipconfiguration.go b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallipconfiguration.go new file mode 100644 index 00000000000..3456ba0b1ad --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallipconfiguration.go @@ -0,0 +1,12 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *AzureFirewallIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..cca79069337 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallipconfigurationpropertiesformat.go @@ -0,0 +1,11 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallIPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *SubResource `json:"publicIPAddress,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallipgroups.go b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallipgroups.go new file mode 100644 index 00000000000..e26c8540a65 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallipgroups.go @@ -0,0 +1,9 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallIPGroups struct { + ChangeNumber *string `json:"changeNumber,omitempty"` + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallnatrcaction.go b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallnatrcaction.go new file mode 100644 index 00000000000..9c9250aef39 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallnatrcaction.go @@ -0,0 +1,8 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallNatRCAction struct { + Type *AzureFirewallNatRCActionType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallnatrule.go b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallnatrule.go new file mode 100644 index 00000000000..70c0d009eab --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallnatrule.go @@ -0,0 +1,17 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallNatRule struct { + Description *string `json:"description,omitempty"` + DestinationAddresses *[]string `json:"destinationAddresses,omitempty"` + DestinationPorts *[]string `json:"destinationPorts,omitempty"` + Name *string `json:"name,omitempty"` + Protocols *[]AzureFirewallNetworkRuleProtocol `json:"protocols,omitempty"` + SourceAddresses *[]string `json:"sourceAddresses,omitempty"` + SourceIPGroups *[]string `json:"sourceIpGroups,omitempty"` + TranslatedAddress *string `json:"translatedAddress,omitempty"` + TranslatedFqdn *string `json:"translatedFqdn,omitempty"` + TranslatedPort *string `json:"translatedPort,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallnatrulecollection.go b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallnatrulecollection.go new file mode 100644 index 00000000000..d06cf19e359 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallnatrulecollection.go @@ -0,0 +1,11 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallNatRuleCollection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *AzureFirewallNatRuleCollectionProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallnatrulecollectionproperties.go b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallnatrulecollectionproperties.go new file mode 100644 index 00000000000..774ac6902bc --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallnatrulecollectionproperties.go @@ -0,0 +1,11 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallNatRuleCollectionProperties struct { + Action *AzureFirewallNatRCAction `json:"action,omitempty"` + Priority *int64 `json:"priority,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Rules *[]AzureFirewallNatRule `json:"rules,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallnetworkrule.go b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallnetworkrule.go new file mode 100644 index 00000000000..6833c1f7509 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallnetworkrule.go @@ -0,0 +1,16 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallNetworkRule struct { + Description *string `json:"description,omitempty"` + DestinationAddresses *[]string `json:"destinationAddresses,omitempty"` + DestinationFqdns *[]string `json:"destinationFqdns,omitempty"` + DestinationIPGroups *[]string `json:"destinationIpGroups,omitempty"` + DestinationPorts *[]string `json:"destinationPorts,omitempty"` + Name *string `json:"name,omitempty"` + Protocols *[]AzureFirewallNetworkRuleProtocol `json:"protocols,omitempty"` + SourceAddresses *[]string `json:"sourceAddresses,omitempty"` + SourceIPGroups *[]string `json:"sourceIpGroups,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallnetworkrulecollection.go b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallnetworkrulecollection.go new file mode 100644 index 00000000000..ea5f2ba0d2b --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallnetworkrulecollection.go @@ -0,0 +1,11 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallNetworkRuleCollection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *AzureFirewallNetworkRuleCollectionPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallnetworkrulecollectionpropertiesformat.go b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallnetworkrulecollectionpropertiesformat.go new file mode 100644 index 00000000000..be71e063370 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallnetworkrulecollectionpropertiesformat.go @@ -0,0 +1,11 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallNetworkRuleCollectionPropertiesFormat struct { + Action *AzureFirewallRCAction `json:"action,omitempty"` + Priority *int64 `json:"priority,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Rules *[]AzureFirewallNetworkRule `json:"rules,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallpacketcaptureflags.go b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallpacketcaptureflags.go new file mode 100644 index 00000000000..edcc08e5590 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallpacketcaptureflags.go @@ -0,0 +1,8 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallPacketCaptureFlags struct { + Type *AzureFirewallPacketCaptureFlagsType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallpacketcapturerule.go b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallpacketcapturerule.go new file mode 100644 index 00000000000..4d9921e3243 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallpacketcapturerule.go @@ -0,0 +1,10 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallPacketCaptureRule struct { + DestinationPorts *[]string `json:"destinationPorts,omitempty"` + Destinations *[]string `json:"destinations,omitempty"` + Sources *[]string `json:"sources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallpropertiesformat.go b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallpropertiesformat.go new file mode 100644 index 00000000000..0e8c463423f --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallpropertiesformat.go @@ -0,0 +1,20 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallPropertiesFormat struct { + AdditionalProperties *map[string]string `json:"additionalProperties,omitempty"` + ApplicationRuleCollections *[]AzureFirewallApplicationRuleCollection `json:"applicationRuleCollections,omitempty"` + FirewallPolicy *SubResource `json:"firewallPolicy,omitempty"` + HubIPAddresses *HubIPAddresses `json:"hubIPAddresses,omitempty"` + IPConfigurations *[]AzureFirewallIPConfiguration `json:"ipConfigurations,omitempty"` + IPGroups *[]AzureFirewallIPGroups `json:"ipGroups,omitempty"` + ManagementIPConfiguration *AzureFirewallIPConfiguration `json:"managementIpConfiguration,omitempty"` + NatRuleCollections *[]AzureFirewallNatRuleCollection `json:"natRuleCollections,omitempty"` + NetworkRuleCollections *[]AzureFirewallNetworkRuleCollection `json:"networkRuleCollections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Sku *AzureFirewallSku `json:"sku,omitempty"` + ThreatIntelMode *AzureFirewallThreatIntelMode `json:"threatIntelMode,omitempty"` + VirtualHub *SubResource `json:"virtualHub,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallpublicipaddress.go b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallpublicipaddress.go new file mode 100644 index 00000000000..c5dff4f3fff --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallpublicipaddress.go @@ -0,0 +1,8 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallPublicIPAddress struct { + Address *string `json:"address,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallrcaction.go b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallrcaction.go new file mode 100644 index 00000000000..752c166b62b --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallrcaction.go @@ -0,0 +1,8 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallRCAction struct { + Type *AzureFirewallRCActionType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallsku.go b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallsku.go new file mode 100644 index 00000000000..46f81c15dbc --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_azurefirewallsku.go @@ -0,0 +1,9 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallSku struct { + Name *AzureFirewallSkuName `json:"name,omitempty"` + Tier *AzureFirewallSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_firewallpacketcaptureparameters.go b/resource-manager/network/2024-01-01/azurefirewalls/model_firewallpacketcaptureparameters.go new file mode 100644 index 00000000000..258aca5b011 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_firewallpacketcaptureparameters.go @@ -0,0 +1,9 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPacketCaptureParameters struct { + Id *string `json:"id,omitempty"` + Properties *FirewallPacketCaptureParametersFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_firewallpacketcaptureparametersformat.go b/resource-manager/network/2024-01-01/azurefirewalls/model_firewallpacketcaptureparametersformat.go new file mode 100644 index 00000000000..c0c639f2390 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_firewallpacketcaptureparametersformat.go @@ -0,0 +1,14 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPacketCaptureParametersFormat struct { + DurationInSeconds *int64 `json:"durationInSeconds,omitempty"` + FileName *string `json:"fileName,omitempty"` + Filters *[]AzureFirewallPacketCaptureRule `json:"filters,omitempty"` + Flags *[]AzureFirewallPacketCaptureFlags `json:"flags,omitempty"` + NumberOfPacketsToCapture *int64 `json:"numberOfPacketsToCapture,omitempty"` + Protocol *AzureFirewallNetworkRuleProtocol `json:"protocol,omitempty"` + SasUrl *string `json:"sasUrl,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_hubipaddresses.go b/resource-manager/network/2024-01-01/azurefirewalls/model_hubipaddresses.go new file mode 100644 index 00000000000..2fa8e41de6b --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_hubipaddresses.go @@ -0,0 +1,9 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HubIPAddresses struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PublicIPs *HubPublicIPAddresses `json:"publicIPs,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_hubpublicipaddresses.go b/resource-manager/network/2024-01-01/azurefirewalls/model_hubpublicipaddresses.go new file mode 100644 index 00000000000..48ee3132846 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_hubpublicipaddresses.go @@ -0,0 +1,9 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HubPublicIPAddresses struct { + Addresses *[]AzureFirewallPublicIPAddress `json:"addresses,omitempty"` + Count *int64 `json:"count,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_ipprefixeslist.go b/resource-manager/network/2024-01-01/azurefirewalls/model_ipprefixeslist.go new file mode 100644 index 00000000000..3d2ea0d9a9e --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_ipprefixeslist.go @@ -0,0 +1,8 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPPrefixesList struct { + IPPrefixes *[]string `json:"ipPrefixes,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_subresource.go b/resource-manager/network/2024-01-01/azurefirewalls/model_subresource.go new file mode 100644 index 00000000000..3a39f2458c4 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_subresource.go @@ -0,0 +1,8 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/model_tagsobject.go b/resource-manager/network/2024-01-01/azurefirewalls/model_tagsobject.go new file mode 100644 index 00000000000..3b70ce55bcd --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/model_tagsobject.go @@ -0,0 +1,8 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/predicates.go b/resource-manager/network/2024-01-01/azurefirewalls/predicates.go new file mode 100644 index 00000000000..68ca8da5623 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/predicates.go @@ -0,0 +1,37 @@ +package azurefirewalls + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureFirewallOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p AzureFirewallOperationPredicate) Matches(input AzureFirewall) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/azurefirewalls/version.go b/resource-manager/network/2024-01-01/azurefirewalls/version.go new file mode 100644 index 00000000000..692c8d229a7 --- /dev/null +++ b/resource-manager/network/2024-01-01/azurefirewalls/version.go @@ -0,0 +1,12 @@ +package azurefirewalls + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/azurefirewalls/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/README.md b/resource-manager/network/2024-01-01/bastionhosts/README.md new file mode 100644 index 00000000000..88400c89ff9 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/README.md @@ -0,0 +1,234 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/bastionhosts` Documentation + +The `bastionhosts` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/bastionhosts" +``` + + +### Client Initialization + +```go +client := bastionhosts.NewBastionHostsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `BastionHostsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := bastionhosts.NewBastionHostID("12345678-1234-9876-4563-123456789012", "example-resource-group", "bastionHostValue") + +payload := bastionhosts.BastionHost{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `BastionHostsClient.Delete` + +```go +ctx := context.TODO() +id := bastionhosts.NewBastionHostID("12345678-1234-9876-4563-123456789012", "example-resource-group", "bastionHostValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `BastionHostsClient.DeleteBastionShareableLink` + +```go +ctx := context.TODO() +id := bastionhosts.NewBastionHostID("12345678-1234-9876-4563-123456789012", "example-resource-group", "bastionHostValue") + +payload := bastionhosts.BastionShareableLinkListRequest{ + // ... +} + + +if err := client.DeleteBastionShareableLinkThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `BastionHostsClient.DeleteBastionShareableLinkByToken` + +```go +ctx := context.TODO() +id := bastionhosts.NewBastionHostID("12345678-1234-9876-4563-123456789012", "example-resource-group", "bastionHostValue") + +payload := bastionhosts.BastionShareableLinkTokenListRequest{ + // ... +} + + +if err := client.DeleteBastionShareableLinkByTokenThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `BastionHostsClient.DisconnectActiveSessions` + +```go +ctx := context.TODO() +id := bastionhosts.NewBastionHostID("12345678-1234-9876-4563-123456789012", "example-resource-group", "bastionHostValue") + +payload := bastionhosts.SessionIds{ + // ... +} + + +// alternatively `client.DisconnectActiveSessions(ctx, id, payload)` can be used to do batched pagination +items, err := client.DisconnectActiveSessionsComplete(ctx, id, payload) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `BastionHostsClient.Get` + +```go +ctx := context.TODO() +id := bastionhosts.NewBastionHostID("12345678-1234-9876-4563-123456789012", "example-resource-group", "bastionHostValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `BastionHostsClient.GetActiveSessions` + +```go +ctx := context.TODO() +id := bastionhosts.NewBastionHostID("12345678-1234-9876-4563-123456789012", "example-resource-group", "bastionHostValue") + +// alternatively `client.GetActiveSessions(ctx, id)` can be used to do batched pagination +items, err := client.GetActiveSessionsComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `BastionHostsClient.GetBastionShareableLink` + +```go +ctx := context.TODO() +id := bastionhosts.NewBastionHostID("12345678-1234-9876-4563-123456789012", "example-resource-group", "bastionHostValue") + +payload := bastionhosts.BastionShareableLinkListRequest{ + // ... +} + + +// alternatively `client.GetBastionShareableLink(ctx, id, payload)` can be used to do batched pagination +items, err := client.GetBastionShareableLinkComplete(ctx, id, payload) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `BastionHostsClient.List` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `BastionHostsClient.ListByResourceGroup` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.ListByResourceGroup(ctx, id)` can be used to do batched pagination +items, err := client.ListByResourceGroupComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `BastionHostsClient.PutBastionShareableLink` + +```go +ctx := context.TODO() +id := bastionhosts.NewBastionHostID("12345678-1234-9876-4563-123456789012", "example-resource-group", "bastionHostValue") + +payload := bastionhosts.BastionShareableLinkListRequest{ + // ... +} + + +// alternatively `client.PutBastionShareableLink(ctx, id, payload)` can be used to do batched pagination +items, err := client.PutBastionShareableLinkComplete(ctx, id, payload) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `BastionHostsClient.UpdateTags` + +```go +ctx := context.TODO() +id := bastionhosts.NewBastionHostID("12345678-1234-9876-4563-123456789012", "example-resource-group", "bastionHostValue") + +payload := bastionhosts.TagsObject{ + // ... +} + + +if err := client.UpdateTagsThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` diff --git a/resource-manager/network/2024-01-01/bastionhosts/client.go b/resource-manager/network/2024-01-01/bastionhosts/client.go new file mode 100644 index 00000000000..95e06c7f523 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/client.go @@ -0,0 +1,26 @@ +package bastionhosts + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BastionHostsClient struct { + Client *resourcemanager.Client +} + +func NewBastionHostsClientWithBaseURI(sdkApi sdkEnv.Api) (*BastionHostsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "bastionhosts", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating BastionHostsClient: %+v", err) + } + + return &BastionHostsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/constants.go b/resource-manager/network/2024-01-01/bastionhosts/constants.go new file mode 100644 index 00000000000..3822668195b --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/constants.go @@ -0,0 +1,186 @@ +package bastionhosts + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BastionConnectProtocol string + +const ( + BastionConnectProtocolRDP BastionConnectProtocol = "RDP" + BastionConnectProtocolSSH BastionConnectProtocol = "SSH" +) + +func PossibleValuesForBastionConnectProtocol() []string { + return []string{ + string(BastionConnectProtocolRDP), + string(BastionConnectProtocolSSH), + } +} + +func (s *BastionConnectProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseBastionConnectProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseBastionConnectProtocol(input string) (*BastionConnectProtocol, error) { + vals := map[string]BastionConnectProtocol{ + "rdp": BastionConnectProtocolRDP, + "ssh": BastionConnectProtocolSSH, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := BastionConnectProtocol(input) + return &out, nil +} + +type BastionHostSkuName string + +const ( + BastionHostSkuNameBasic BastionHostSkuName = "Basic" + BastionHostSkuNameDeveloper BastionHostSkuName = "Developer" + BastionHostSkuNamePremium BastionHostSkuName = "Premium" + BastionHostSkuNameStandard BastionHostSkuName = "Standard" +) + +func PossibleValuesForBastionHostSkuName() []string { + return []string{ + string(BastionHostSkuNameBasic), + string(BastionHostSkuNameDeveloper), + string(BastionHostSkuNamePremium), + string(BastionHostSkuNameStandard), + } +} + +func (s *BastionHostSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseBastionHostSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseBastionHostSkuName(input string) (*BastionHostSkuName, error) { + vals := map[string]BastionHostSkuName{ + "basic": BastionHostSkuNameBasic, + "developer": BastionHostSkuNameDeveloper, + "premium": BastionHostSkuNamePremium, + "standard": BastionHostSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := BastionHostSkuName(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/id_bastionhost.go b/resource-manager/network/2024-01-01/bastionhosts/id_bastionhost.go new file mode 100644 index 00000000000..66012e2eda5 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/id_bastionhost.go @@ -0,0 +1,130 @@ +package bastionhosts + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&BastionHostId{}) +} + +var _ resourceids.ResourceId = &BastionHostId{} + +// BastionHostId is a struct representing the Resource ID for a Bastion Host +type BastionHostId struct { + SubscriptionId string + ResourceGroupName string + BastionHostName string +} + +// NewBastionHostID returns a new BastionHostId struct +func NewBastionHostID(subscriptionId string, resourceGroupName string, bastionHostName string) BastionHostId { + return BastionHostId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + BastionHostName: bastionHostName, + } +} + +// ParseBastionHostID parses 'input' into a BastionHostId +func ParseBastionHostID(input string) (*BastionHostId, error) { + parser := resourceids.NewParserFromResourceIdType(&BastionHostId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := BastionHostId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseBastionHostIDInsensitively parses 'input' case-insensitively into a BastionHostId +// note: this method should only be used for API response data and not user input +func ParseBastionHostIDInsensitively(input string) (*BastionHostId, error) { + parser := resourceids.NewParserFromResourceIdType(&BastionHostId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := BastionHostId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *BastionHostId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.BastionHostName, ok = input.Parsed["bastionHostName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "bastionHostName", input) + } + + return nil +} + +// ValidateBastionHostID checks that 'input' can be parsed as a Bastion Host ID +func ValidateBastionHostID(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 := ParseBastionHostID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Bastion Host ID +func (id BastionHostId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/bastionHosts/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.BastionHostName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Bastion Host ID +func (id BastionHostId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticBastionHosts", "bastionHosts", "bastionHosts"), + resourceids.UserSpecifiedSegment("bastionHostName", "bastionHostValue"), + } +} + +// String returns a human-readable description of this Bastion Host ID +func (id BastionHostId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Bastion Host Name: %q", id.BastionHostName), + } + return fmt.Sprintf("Bastion Host (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/id_bastionhost_test.go b/resource-manager/network/2024-01-01/bastionhosts/id_bastionhost_test.go new file mode 100644 index 00000000000..025eba0aa75 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/id_bastionhost_test.go @@ -0,0 +1,282 @@ +package bastionhosts + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &BastionHostId{} + +func TestNewBastionHostID(t *testing.T) { + id := NewBastionHostID("12345678-1234-9876-4563-123456789012", "example-resource-group", "bastionHostValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.BastionHostName != "bastionHostValue" { + t.Fatalf("Expected %q but got %q for Segment 'BastionHostName'", id.BastionHostName, "bastionHostValue") + } +} + +func TestFormatBastionHostID(t *testing.T) { + actual := NewBastionHostID("12345678-1234-9876-4563-123456789012", "example-resource-group", "bastionHostValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/bastionHosts/bastionHostValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseBastionHostID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *BastionHostId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/bastionHosts", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/bastionHosts/bastionHostValue", + Expected: &BastionHostId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + BastionHostName: "bastionHostValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/bastionHosts/bastionHostValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseBastionHostID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.BastionHostName != v.Expected.BastionHostName { + t.Fatalf("Expected %q but got %q for BastionHostName", v.Expected.BastionHostName, actual.BastionHostName) + } + + } +} + +func TestParseBastionHostIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *BastionHostId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/bastionHosts", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/bAsTiOnHoStS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/bastionHosts/bastionHostValue", + Expected: &BastionHostId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + BastionHostName: "bastionHostValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/bastionHosts/bastionHostValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/bAsTiOnHoStS/bAsTiOnHoStVaLuE", + Expected: &BastionHostId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + BastionHostName: "bAsTiOnHoStVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/bAsTiOnHoStS/bAsTiOnHoStVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseBastionHostIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.BastionHostName != v.Expected.BastionHostName { + t.Fatalf("Expected %q but got %q for BastionHostName", v.Expected.BastionHostName, actual.BastionHostName) + } + + } +} + +func TestSegmentsForBastionHostId(t *testing.T) { + segments := BastionHostId{}.Segments() + if len(segments) == 0 { + t.Fatalf("BastionHostId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/method_createorupdate.go b/resource-manager/network/2024-01-01/bastionhosts/method_createorupdate.go new file mode 100644 index 00000000000..fe735012d1f --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/method_createorupdate.go @@ -0,0 +1,75 @@ +package bastionhosts + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *BastionHost +} + +// CreateOrUpdate ... +func (c BastionHostsClient) CreateOrUpdate(ctx context.Context, id BastionHostId, input BastionHost) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c BastionHostsClient) CreateOrUpdateThenPoll(ctx context.Context, id BastionHostId, input BastionHost) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/method_delete.go b/resource-manager/network/2024-01-01/bastionhosts/method_delete.go new file mode 100644 index 00000000000..5eebbeeeed3 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/method_delete.go @@ -0,0 +1,71 @@ +package bastionhosts + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c BastionHostsClient) Delete(ctx context.Context, id BastionHostId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c BastionHostsClient) DeleteThenPoll(ctx context.Context, id BastionHostId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/method_deletebastionshareablelink.go b/resource-manager/network/2024-01-01/bastionhosts/method_deletebastionshareablelink.go new file mode 100644 index 00000000000..24694223a11 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/method_deletebastionshareablelink.go @@ -0,0 +1,74 @@ +package bastionhosts + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteBastionShareableLinkOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// DeleteBastionShareableLink ... +func (c BastionHostsClient) DeleteBastionShareableLink(ctx context.Context, id BastionHostId, input BastionShareableLinkListRequest) (result DeleteBastionShareableLinkOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/deleteShareableLinks", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteBastionShareableLinkThenPoll performs DeleteBastionShareableLink then polls until it's completed +func (c BastionHostsClient) DeleteBastionShareableLinkThenPoll(ctx context.Context, id BastionHostId, input BastionShareableLinkListRequest) error { + result, err := c.DeleteBastionShareableLink(ctx, id, input) + if err != nil { + return fmt.Errorf("performing DeleteBastionShareableLink: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after DeleteBastionShareableLink: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/method_deletebastionshareablelinkbytoken.go b/resource-manager/network/2024-01-01/bastionhosts/method_deletebastionshareablelinkbytoken.go new file mode 100644 index 00000000000..dd4a99222c9 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/method_deletebastionshareablelinkbytoken.go @@ -0,0 +1,73 @@ +package bastionhosts + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteBastionShareableLinkByTokenOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// DeleteBastionShareableLinkByToken ... +func (c BastionHostsClient) DeleteBastionShareableLinkByToken(ctx context.Context, id BastionHostId, input BastionShareableLinkTokenListRequest) (result DeleteBastionShareableLinkByTokenOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/deleteShareableLinksByToken", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteBastionShareableLinkByTokenThenPoll performs DeleteBastionShareableLinkByToken then polls until it's completed +func (c BastionHostsClient) DeleteBastionShareableLinkByTokenThenPoll(ctx context.Context, id BastionHostId, input BastionShareableLinkTokenListRequest) error { + result, err := c.DeleteBastionShareableLinkByToken(ctx, id, input) + if err != nil { + return fmt.Errorf("performing DeleteBastionShareableLinkByToken: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after DeleteBastionShareableLinkByToken: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/method_disconnectactivesessions.go b/resource-manager/network/2024-01-01/bastionhosts/method_disconnectactivesessions.go new file mode 100644 index 00000000000..c0aac609fe0 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/method_disconnectactivesessions.go @@ -0,0 +1,92 @@ +package bastionhosts + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DisconnectActiveSessionsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]BastionSessionState +} + +type DisconnectActiveSessionsCompleteResult struct { + LatestHttpResponse *http.Response + Items []BastionSessionState +} + +// DisconnectActiveSessions ... +func (c BastionHostsClient) DisconnectActiveSessions(ctx context.Context, id BastionHostId, input SessionIds) (result DisconnectActiveSessionsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/disconnectActiveSessions", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]BastionSessionState `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// DisconnectActiveSessionsComplete retrieves all the results into a single object +func (c BastionHostsClient) DisconnectActiveSessionsComplete(ctx context.Context, id BastionHostId, input SessionIds) (DisconnectActiveSessionsCompleteResult, error) { + return c.DisconnectActiveSessionsCompleteMatchingPredicate(ctx, id, input, BastionSessionStateOperationPredicate{}) +} + +// DisconnectActiveSessionsCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c BastionHostsClient) DisconnectActiveSessionsCompleteMatchingPredicate(ctx context.Context, id BastionHostId, input SessionIds, predicate BastionSessionStateOperationPredicate) (result DisconnectActiveSessionsCompleteResult, err error) { + items := make([]BastionSessionState, 0) + + resp, err := c.DisconnectActiveSessions(ctx, id, input) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = DisconnectActiveSessionsCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/method_get.go b/resource-manager/network/2024-01-01/bastionhosts/method_get.go new file mode 100644 index 00000000000..71b1a85a45f --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/method_get.go @@ -0,0 +1,54 @@ +package bastionhosts + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *BastionHost +} + +// Get ... +func (c BastionHostsClient) Get(ctx context.Context, id BastionHostId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model BastionHost + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/method_getactivesessions.go b/resource-manager/network/2024-01-01/bastionhosts/method_getactivesessions.go new file mode 100644 index 00000000000..bc50f38fc50 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/method_getactivesessions.go @@ -0,0 +1,76 @@ +package bastionhosts + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetActiveSessionsOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *[]BastionActiveSession +} + +type GetActiveSessionsCompleteResult struct { + LatestHttpResponse *http.Response + Items []BastionActiveSession +} + +// GetActiveSessions ... +func (c BastionHostsClient) GetActiveSessions(ctx context.Context, id BastionHostId) (result GetActiveSessionsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/getActiveSessions", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// GetActiveSessionsThenPoll performs GetActiveSessions then polls until it's completed +func (c BastionHostsClient) GetActiveSessionsThenPoll(ctx context.Context, id BastionHostId) error { + result, err := c.GetActiveSessions(ctx, id) + if err != nil { + return fmt.Errorf("performing GetActiveSessions: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after GetActiveSessions: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/method_getbastionshareablelink.go b/resource-manager/network/2024-01-01/bastionhosts/method_getbastionshareablelink.go new file mode 100644 index 00000000000..e97537890ad --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/method_getbastionshareablelink.go @@ -0,0 +1,92 @@ +package bastionhosts + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetBastionShareableLinkOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]BastionShareableLink +} + +type GetBastionShareableLinkCompleteResult struct { + LatestHttpResponse *http.Response + Items []BastionShareableLink +} + +// GetBastionShareableLink ... +func (c BastionHostsClient) GetBastionShareableLink(ctx context.Context, id BastionHostId, input BastionShareableLinkListRequest) (result GetBastionShareableLinkOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/getShareableLinks", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]BastionShareableLink `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// GetBastionShareableLinkComplete retrieves all the results into a single object +func (c BastionHostsClient) GetBastionShareableLinkComplete(ctx context.Context, id BastionHostId, input BastionShareableLinkListRequest) (GetBastionShareableLinkCompleteResult, error) { + return c.GetBastionShareableLinkCompleteMatchingPredicate(ctx, id, input, BastionShareableLinkOperationPredicate{}) +} + +// GetBastionShareableLinkCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c BastionHostsClient) GetBastionShareableLinkCompleteMatchingPredicate(ctx context.Context, id BastionHostId, input BastionShareableLinkListRequest, predicate BastionShareableLinkOperationPredicate) (result GetBastionShareableLinkCompleteResult, err error) { + items := make([]BastionShareableLink, 0) + + resp, err := c.GetBastionShareableLink(ctx, id, input) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = GetBastionShareableLinkCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/method_list.go b/resource-manager/network/2024-01-01/bastionhosts/method_list.go new file mode 100644 index 00000000000..e73d8601569 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/method_list.go @@ -0,0 +1,93 @@ +package bastionhosts + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]BastionHost +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []BastionHost +} + +// List ... +func (c BastionHostsClient) List(ctx context.Context, id commonids.SubscriptionId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/bastionHosts", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]BastionHost `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c BastionHostsClient) ListComplete(ctx context.Context, id commonids.SubscriptionId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, BastionHostOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c BastionHostsClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate BastionHostOperationPredicate) (result ListCompleteResult, err error) { + items := make([]BastionHost, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/method_listbyresourcegroup.go b/resource-manager/network/2024-01-01/bastionhosts/method_listbyresourcegroup.go new file mode 100644 index 00000000000..5a80cf6aed5 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/method_listbyresourcegroup.go @@ -0,0 +1,93 @@ +package bastionhosts + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListByResourceGroupOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]BastionHost +} + +type ListByResourceGroupCompleteResult struct { + LatestHttpResponse *http.Response + Items []BastionHost +} + +// ListByResourceGroup ... +func (c BastionHostsClient) ListByResourceGroup(ctx context.Context, id commonids.ResourceGroupId) (result ListByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/bastionHosts", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]BastionHost `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListByResourceGroupComplete retrieves all the results into a single object +func (c BastionHostsClient) ListByResourceGroupComplete(ctx context.Context, id commonids.ResourceGroupId) (ListByResourceGroupCompleteResult, error) { + return c.ListByResourceGroupCompleteMatchingPredicate(ctx, id, BastionHostOperationPredicate{}) +} + +// ListByResourceGroupCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c BastionHostsClient) ListByResourceGroupCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate BastionHostOperationPredicate) (result ListByResourceGroupCompleteResult, err error) { + items := make([]BastionHost, 0) + + resp, err := c.ListByResourceGroup(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListByResourceGroupCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/method_putbastionshareablelink.go b/resource-manager/network/2024-01-01/bastionhosts/method_putbastionshareablelink.go new file mode 100644 index 00000000000..5f6e7438551 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/method_putbastionshareablelink.go @@ -0,0 +1,80 @@ +package bastionhosts + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PutBastionShareableLinkOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *[]BastionShareableLink +} + +type PutBastionShareableLinkCompleteResult struct { + LatestHttpResponse *http.Response + Items []BastionShareableLink +} + +// PutBastionShareableLink ... +func (c BastionHostsClient) PutBastionShareableLink(ctx context.Context, id BastionHostId, input BastionShareableLinkListRequest) (result PutBastionShareableLinkOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/createShareableLinks", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// PutBastionShareableLinkThenPoll performs PutBastionShareableLink then polls until it's completed +func (c BastionHostsClient) PutBastionShareableLinkThenPoll(ctx context.Context, id BastionHostId, input BastionShareableLinkListRequest) error { + result, err := c.PutBastionShareableLink(ctx, id, input) + if err != nil { + return fmt.Errorf("performing PutBastionShareableLink: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after PutBastionShareableLink: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/method_updatetags.go b/resource-manager/network/2024-01-01/bastionhosts/method_updatetags.go new file mode 100644 index 00000000000..697efefb0c8 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/method_updatetags.go @@ -0,0 +1,75 @@ +package bastionhosts + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *BastionHost +} + +// UpdateTags ... +func (c BastionHostsClient) UpdateTags(ctx context.Context, id BastionHostId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// UpdateTagsThenPoll performs UpdateTags then polls until it's completed +func (c BastionHostsClient) UpdateTagsThenPoll(ctx context.Context, id BastionHostId, input TagsObject) error { + result, err := c.UpdateTags(ctx, id, input) + if err != nil { + return fmt.Errorf("performing UpdateTags: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after UpdateTags: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/model_bastionactivesession.go b/resource-manager/network/2024-01-01/bastionhosts/model_bastionactivesession.go new file mode 100644 index 00000000000..4f5fe8c844e --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/model_bastionactivesession.go @@ -0,0 +1,18 @@ +package bastionhosts + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BastionActiveSession struct { + Protocol *BastionConnectProtocol `json:"protocol,omitempty"` + ResourceType *string `json:"resourceType,omitempty"` + SessionDurationInMins *float64 `json:"sessionDurationInMins,omitempty"` + SessionId *string `json:"sessionId,omitempty"` + StartTime *interface{} `json:"startTime,omitempty"` + TargetHostName *string `json:"targetHostName,omitempty"` + TargetIPAddress *string `json:"targetIpAddress,omitempty"` + TargetResourceGroup *string `json:"targetResourceGroup,omitempty"` + TargetResourceId *string `json:"targetResourceId,omitempty"` + TargetSubscriptionId *string `json:"targetSubscriptionId,omitempty"` + UserName *string `json:"userName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/model_bastionhost.go b/resource-manager/network/2024-01-01/bastionhosts/model_bastionhost.go new file mode 100644 index 00000000000..cdd1feb92cf --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/model_bastionhost.go @@ -0,0 +1,20 @@ +package bastionhosts + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BastionHost struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BastionHostPropertiesFormat `json:"properties,omitempty"` + Sku *Sku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/model_bastionhostipconfiguration.go b/resource-manager/network/2024-01-01/bastionhosts/model_bastionhostipconfiguration.go new file mode 100644 index 00000000000..efda704773c --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/model_bastionhostipconfiguration.go @@ -0,0 +1,12 @@ +package bastionhosts + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BastionHostIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BastionHostIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/model_bastionhostipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/bastionhosts/model_bastionhostipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..34d950723a1 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/model_bastionhostipconfigurationpropertiesformat.go @@ -0,0 +1,11 @@ +package bastionhosts + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BastionHostIPConfigurationPropertiesFormat struct { + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress SubResource `json:"publicIPAddress"` + Subnet SubResource `json:"subnet"` +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/model_bastionhostpropertiesformat.go b/resource-manager/network/2024-01-01/bastionhosts/model_bastionhostpropertiesformat.go new file mode 100644 index 00000000000..d45d86671ab --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/model_bastionhostpropertiesformat.go @@ -0,0 +1,20 @@ +package bastionhosts + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BastionHostPropertiesFormat struct { + DisableCopyPaste *bool `json:"disableCopyPaste,omitempty"` + DnsName *string `json:"dnsName,omitempty"` + EnableFileCopy *bool `json:"enableFileCopy,omitempty"` + EnableIPConnect *bool `json:"enableIpConnect,omitempty"` + EnableKerberos *bool `json:"enableKerberos,omitempty"` + EnableSessionRecording *bool `json:"enableSessionRecording,omitempty"` + EnableShareableLink *bool `json:"enableShareableLink,omitempty"` + EnableTunneling *bool `json:"enableTunneling,omitempty"` + IPConfigurations *[]BastionHostIPConfiguration `json:"ipConfigurations,omitempty"` + NetworkAcls *BastionHostPropertiesFormatNetworkAcls `json:"networkAcls,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ScaleUnits *int64 `json:"scaleUnits,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/model_bastionhostpropertiesformatnetworkacls.go b/resource-manager/network/2024-01-01/bastionhosts/model_bastionhostpropertiesformatnetworkacls.go new file mode 100644 index 00000000000..f217ff8d9ae --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/model_bastionhostpropertiesformatnetworkacls.go @@ -0,0 +1,8 @@ +package bastionhosts + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BastionHostPropertiesFormatNetworkAcls struct { + IPRules *[]IPRule `json:"ipRules,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/model_bastionsessionstate.go b/resource-manager/network/2024-01-01/bastionhosts/model_bastionsessionstate.go new file mode 100644 index 00000000000..f60a5f77620 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/model_bastionsessionstate.go @@ -0,0 +1,10 @@ +package bastionhosts + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BastionSessionState struct { + Message *string `json:"message,omitempty"` + SessionId *string `json:"sessionId,omitempty"` + State *string `json:"state,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/model_bastionshareablelink.go b/resource-manager/network/2024-01-01/bastionhosts/model_bastionshareablelink.go new file mode 100644 index 00000000000..4da004b8f53 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/model_bastionshareablelink.go @@ -0,0 +1,11 @@ +package bastionhosts + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BastionShareableLink struct { + Bsl *string `json:"bsl,omitempty"` + CreatedAt *string `json:"createdAt,omitempty"` + Message *string `json:"message,omitempty"` + VM Resource `json:"vm"` +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/model_bastionshareablelinklistrequest.go b/resource-manager/network/2024-01-01/bastionhosts/model_bastionshareablelinklistrequest.go new file mode 100644 index 00000000000..925995fca64 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/model_bastionshareablelinklistrequest.go @@ -0,0 +1,8 @@ +package bastionhosts + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BastionShareableLinkListRequest struct { + VMs *[]BastionShareableLink `json:"vms,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/model_bastionshareablelinktokenlistrequest.go b/resource-manager/network/2024-01-01/bastionhosts/model_bastionshareablelinktokenlistrequest.go new file mode 100644 index 00000000000..0b7aa54ce71 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/model_bastionshareablelinktokenlistrequest.go @@ -0,0 +1,8 @@ +package bastionhosts + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BastionShareableLinkTokenListRequest struct { + Tokens *[]string `json:"tokens,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/model_iprule.go b/resource-manager/network/2024-01-01/bastionhosts/model_iprule.go new file mode 100644 index 00000000000..a54a84aac8e --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/model_iprule.go @@ -0,0 +1,8 @@ +package bastionhosts + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPRule struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/model_resource.go b/resource-manager/network/2024-01-01/bastionhosts/model_resource.go new file mode 100644 index 00000000000..17e7756ce3c --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/model_resource.go @@ -0,0 +1,12 @@ +package bastionhosts + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Resource struct { + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/model_sessionids.go b/resource-manager/network/2024-01-01/bastionhosts/model_sessionids.go new file mode 100644 index 00000000000..a74e44a3ebd --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/model_sessionids.go @@ -0,0 +1,8 @@ +package bastionhosts + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SessionIds struct { + SessionIds *[]string `json:"sessionIds,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/model_sku.go b/resource-manager/network/2024-01-01/bastionhosts/model_sku.go new file mode 100644 index 00000000000..1a8a8749a46 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/model_sku.go @@ -0,0 +1,8 @@ +package bastionhosts + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Sku struct { + Name *BastionHostSkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/model_subresource.go b/resource-manager/network/2024-01-01/bastionhosts/model_subresource.go new file mode 100644 index 00000000000..7a0a23a149a --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/model_subresource.go @@ -0,0 +1,8 @@ +package bastionhosts + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/model_tagsobject.go b/resource-manager/network/2024-01-01/bastionhosts/model_tagsobject.go new file mode 100644 index 00000000000..73566b88f0b --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/model_tagsobject.go @@ -0,0 +1,8 @@ +package bastionhosts + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/predicates.go b/resource-manager/network/2024-01-01/bastionhosts/predicates.go new file mode 100644 index 00000000000..3c3835a32d0 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/predicates.go @@ -0,0 +1,141 @@ +package bastionhosts + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BastionActiveSessionOperationPredicate struct { + ResourceType *string + SessionDurationInMins *float64 + SessionId *string + StartTime *interface{} + TargetHostName *string + TargetIPAddress *string + TargetResourceGroup *string + TargetResourceId *string + TargetSubscriptionId *string + UserName *string +} + +func (p BastionActiveSessionOperationPredicate) Matches(input BastionActiveSession) bool { + + if p.ResourceType != nil && (input.ResourceType == nil || *p.ResourceType != *input.ResourceType) { + return false + } + + if p.SessionDurationInMins != nil && (input.SessionDurationInMins == nil || *p.SessionDurationInMins != *input.SessionDurationInMins) { + return false + } + + if p.SessionId != nil && (input.SessionId == nil || *p.SessionId != *input.SessionId) { + return false + } + + if p.StartTime != nil && (input.StartTime == nil || *p.StartTime != *input.StartTime) { + return false + } + + if p.TargetHostName != nil && (input.TargetHostName == nil || *p.TargetHostName != *input.TargetHostName) { + return false + } + + if p.TargetIPAddress != nil && (input.TargetIPAddress == nil || *p.TargetIPAddress != *input.TargetIPAddress) { + return false + } + + if p.TargetResourceGroup != nil && (input.TargetResourceGroup == nil || *p.TargetResourceGroup != *input.TargetResourceGroup) { + return false + } + + if p.TargetResourceId != nil && (input.TargetResourceId == nil || *p.TargetResourceId != *input.TargetResourceId) { + return false + } + + if p.TargetSubscriptionId != nil && (input.TargetSubscriptionId == nil || *p.TargetSubscriptionId != *input.TargetSubscriptionId) { + return false + } + + if p.UserName != nil && (input.UserName == nil || *p.UserName != *input.UserName) { + return false + } + + return true +} + +type BastionHostOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p BastionHostOperationPredicate) Matches(input BastionHost) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type BastionSessionStateOperationPredicate struct { + Message *string + SessionId *string + State *string +} + +func (p BastionSessionStateOperationPredicate) Matches(input BastionSessionState) bool { + + if p.Message != nil && (input.Message == nil || *p.Message != *input.Message) { + return false + } + + if p.SessionId != nil && (input.SessionId == nil || *p.SessionId != *input.SessionId) { + return false + } + + if p.State != nil && (input.State == nil || *p.State != *input.State) { + return false + } + + return true +} + +type BastionShareableLinkOperationPredicate struct { + Bsl *string + CreatedAt *string + Message *string +} + +func (p BastionShareableLinkOperationPredicate) Matches(input BastionShareableLink) bool { + + if p.Bsl != nil && (input.Bsl == nil || *p.Bsl != *input.Bsl) { + return false + } + + if p.CreatedAt != nil && (input.CreatedAt == nil || *p.CreatedAt != *input.CreatedAt) { + return false + } + + if p.Message != nil && (input.Message == nil || *p.Message != *input.Message) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/bastionhosts/version.go b/resource-manager/network/2024-01-01/bastionhosts/version.go new file mode 100644 index 00000000000..34627770e6d --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionhosts/version.go @@ -0,0 +1,12 @@ +package bastionhosts + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/bastionhosts/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/bastionshareablelink/README.md b/resource-manager/network/2024-01-01/bastionshareablelink/README.md new file mode 100644 index 00000000000..288f4612b1f --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionshareablelink/README.md @@ -0,0 +1,98 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/bastionshareablelink` Documentation + +The `bastionshareablelink` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/bastionshareablelink" +``` + + +### Client Initialization + +```go +client := bastionshareablelink.NewBastionShareableLinkClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `BastionShareableLinkClient.DeleteBastionShareableLink` + +```go +ctx := context.TODO() +id := bastionshareablelink.NewBastionHostID("12345678-1234-9876-4563-123456789012", "example-resource-group", "bastionHostValue") + +payload := bastionshareablelink.BastionShareableLinkListRequest{ + // ... +} + + +if err := client.DeleteBastionShareableLinkThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `BastionShareableLinkClient.DeleteBastionShareableLinkByToken` + +```go +ctx := context.TODO() +id := bastionshareablelink.NewBastionHostID("12345678-1234-9876-4563-123456789012", "example-resource-group", "bastionHostValue") + +payload := bastionshareablelink.BastionShareableLinkTokenListRequest{ + // ... +} + + +if err := client.DeleteBastionShareableLinkByTokenThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `BastionShareableLinkClient.GetBastionShareableLink` + +```go +ctx := context.TODO() +id := bastionshareablelink.NewBastionHostID("12345678-1234-9876-4563-123456789012", "example-resource-group", "bastionHostValue") + +payload := bastionshareablelink.BastionShareableLinkListRequest{ + // ... +} + + +// alternatively `client.GetBastionShareableLink(ctx, id, payload)` can be used to do batched pagination +items, err := client.GetBastionShareableLinkComplete(ctx, id, payload) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `BastionShareableLinkClient.PutBastionShareableLink` + +```go +ctx := context.TODO() +id := bastionshareablelink.NewBastionHostID("12345678-1234-9876-4563-123456789012", "example-resource-group", "bastionHostValue") + +payload := bastionshareablelink.BastionShareableLinkListRequest{ + // ... +} + + +// alternatively `client.PutBastionShareableLink(ctx, id, payload)` can be used to do batched pagination +items, err := client.PutBastionShareableLinkComplete(ctx, id, payload) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/bastionshareablelink/client.go b/resource-manager/network/2024-01-01/bastionshareablelink/client.go new file mode 100644 index 00000000000..9c49b25b52f --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionshareablelink/client.go @@ -0,0 +1,26 @@ +package bastionshareablelink + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BastionShareableLinkClient struct { + Client *resourcemanager.Client +} + +func NewBastionShareableLinkClientWithBaseURI(sdkApi sdkEnv.Api) (*BastionShareableLinkClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "bastionshareablelink", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating BastionShareableLinkClient: %+v", err) + } + + return &BastionShareableLinkClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/bastionshareablelink/id_bastionhost.go b/resource-manager/network/2024-01-01/bastionshareablelink/id_bastionhost.go new file mode 100644 index 00000000000..b2cc2bfc5be --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionshareablelink/id_bastionhost.go @@ -0,0 +1,130 @@ +package bastionshareablelink + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&BastionHostId{}) +} + +var _ resourceids.ResourceId = &BastionHostId{} + +// BastionHostId is a struct representing the Resource ID for a Bastion Host +type BastionHostId struct { + SubscriptionId string + ResourceGroupName string + BastionHostName string +} + +// NewBastionHostID returns a new BastionHostId struct +func NewBastionHostID(subscriptionId string, resourceGroupName string, bastionHostName string) BastionHostId { + return BastionHostId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + BastionHostName: bastionHostName, + } +} + +// ParseBastionHostID parses 'input' into a BastionHostId +func ParseBastionHostID(input string) (*BastionHostId, error) { + parser := resourceids.NewParserFromResourceIdType(&BastionHostId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := BastionHostId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseBastionHostIDInsensitively parses 'input' case-insensitively into a BastionHostId +// note: this method should only be used for API response data and not user input +func ParseBastionHostIDInsensitively(input string) (*BastionHostId, error) { + parser := resourceids.NewParserFromResourceIdType(&BastionHostId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := BastionHostId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *BastionHostId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.BastionHostName, ok = input.Parsed["bastionHostName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "bastionHostName", input) + } + + return nil +} + +// ValidateBastionHostID checks that 'input' can be parsed as a Bastion Host ID +func ValidateBastionHostID(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 := ParseBastionHostID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Bastion Host ID +func (id BastionHostId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/bastionHosts/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.BastionHostName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Bastion Host ID +func (id BastionHostId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticBastionHosts", "bastionHosts", "bastionHosts"), + resourceids.UserSpecifiedSegment("bastionHostName", "bastionHostValue"), + } +} + +// String returns a human-readable description of this Bastion Host ID +func (id BastionHostId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Bastion Host Name: %q", id.BastionHostName), + } + return fmt.Sprintf("Bastion Host (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/bastionshareablelink/id_bastionhost_test.go b/resource-manager/network/2024-01-01/bastionshareablelink/id_bastionhost_test.go new file mode 100644 index 00000000000..ee09527e52f --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionshareablelink/id_bastionhost_test.go @@ -0,0 +1,282 @@ +package bastionshareablelink + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &BastionHostId{} + +func TestNewBastionHostID(t *testing.T) { + id := NewBastionHostID("12345678-1234-9876-4563-123456789012", "example-resource-group", "bastionHostValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.BastionHostName != "bastionHostValue" { + t.Fatalf("Expected %q but got %q for Segment 'BastionHostName'", id.BastionHostName, "bastionHostValue") + } +} + +func TestFormatBastionHostID(t *testing.T) { + actual := NewBastionHostID("12345678-1234-9876-4563-123456789012", "example-resource-group", "bastionHostValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/bastionHosts/bastionHostValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseBastionHostID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *BastionHostId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/bastionHosts", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/bastionHosts/bastionHostValue", + Expected: &BastionHostId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + BastionHostName: "bastionHostValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/bastionHosts/bastionHostValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseBastionHostID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.BastionHostName != v.Expected.BastionHostName { + t.Fatalf("Expected %q but got %q for BastionHostName", v.Expected.BastionHostName, actual.BastionHostName) + } + + } +} + +func TestParseBastionHostIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *BastionHostId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/bastionHosts", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/bAsTiOnHoStS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/bastionHosts/bastionHostValue", + Expected: &BastionHostId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + BastionHostName: "bastionHostValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/bastionHosts/bastionHostValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/bAsTiOnHoStS/bAsTiOnHoStVaLuE", + Expected: &BastionHostId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + BastionHostName: "bAsTiOnHoStVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/bAsTiOnHoStS/bAsTiOnHoStVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseBastionHostIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.BastionHostName != v.Expected.BastionHostName { + t.Fatalf("Expected %q but got %q for BastionHostName", v.Expected.BastionHostName, actual.BastionHostName) + } + + } +} + +func TestSegmentsForBastionHostId(t *testing.T) { + segments := BastionHostId{}.Segments() + if len(segments) == 0 { + t.Fatalf("BastionHostId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/bastionshareablelink/method_deletebastionshareablelink.go b/resource-manager/network/2024-01-01/bastionshareablelink/method_deletebastionshareablelink.go new file mode 100644 index 00000000000..6b46bbc5fea --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionshareablelink/method_deletebastionshareablelink.go @@ -0,0 +1,74 @@ +package bastionshareablelink + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteBastionShareableLinkOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// DeleteBastionShareableLink ... +func (c BastionShareableLinkClient) DeleteBastionShareableLink(ctx context.Context, id BastionHostId, input BastionShareableLinkListRequest) (result DeleteBastionShareableLinkOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/deleteShareableLinks", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteBastionShareableLinkThenPoll performs DeleteBastionShareableLink then polls until it's completed +func (c BastionShareableLinkClient) DeleteBastionShareableLinkThenPoll(ctx context.Context, id BastionHostId, input BastionShareableLinkListRequest) error { + result, err := c.DeleteBastionShareableLink(ctx, id, input) + if err != nil { + return fmt.Errorf("performing DeleteBastionShareableLink: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after DeleteBastionShareableLink: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/bastionshareablelink/method_deletebastionshareablelinkbytoken.go b/resource-manager/network/2024-01-01/bastionshareablelink/method_deletebastionshareablelinkbytoken.go new file mode 100644 index 00000000000..f2973cf1c92 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionshareablelink/method_deletebastionshareablelinkbytoken.go @@ -0,0 +1,73 @@ +package bastionshareablelink + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteBastionShareableLinkByTokenOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// DeleteBastionShareableLinkByToken ... +func (c BastionShareableLinkClient) DeleteBastionShareableLinkByToken(ctx context.Context, id BastionHostId, input BastionShareableLinkTokenListRequest) (result DeleteBastionShareableLinkByTokenOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/deleteShareableLinksByToken", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteBastionShareableLinkByTokenThenPoll performs DeleteBastionShareableLinkByToken then polls until it's completed +func (c BastionShareableLinkClient) DeleteBastionShareableLinkByTokenThenPoll(ctx context.Context, id BastionHostId, input BastionShareableLinkTokenListRequest) error { + result, err := c.DeleteBastionShareableLinkByToken(ctx, id, input) + if err != nil { + return fmt.Errorf("performing DeleteBastionShareableLinkByToken: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after DeleteBastionShareableLinkByToken: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/bastionshareablelink/method_getbastionshareablelink.go b/resource-manager/network/2024-01-01/bastionshareablelink/method_getbastionshareablelink.go new file mode 100644 index 00000000000..d6f683c1ce9 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionshareablelink/method_getbastionshareablelink.go @@ -0,0 +1,92 @@ +package bastionshareablelink + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetBastionShareableLinkOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]BastionShareableLink +} + +type GetBastionShareableLinkCompleteResult struct { + LatestHttpResponse *http.Response + Items []BastionShareableLink +} + +// GetBastionShareableLink ... +func (c BastionShareableLinkClient) GetBastionShareableLink(ctx context.Context, id BastionHostId, input BastionShareableLinkListRequest) (result GetBastionShareableLinkOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/getShareableLinks", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]BastionShareableLink `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// GetBastionShareableLinkComplete retrieves all the results into a single object +func (c BastionShareableLinkClient) GetBastionShareableLinkComplete(ctx context.Context, id BastionHostId, input BastionShareableLinkListRequest) (GetBastionShareableLinkCompleteResult, error) { + return c.GetBastionShareableLinkCompleteMatchingPredicate(ctx, id, input, BastionShareableLinkOperationPredicate{}) +} + +// GetBastionShareableLinkCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c BastionShareableLinkClient) GetBastionShareableLinkCompleteMatchingPredicate(ctx context.Context, id BastionHostId, input BastionShareableLinkListRequest, predicate BastionShareableLinkOperationPredicate) (result GetBastionShareableLinkCompleteResult, err error) { + items := make([]BastionShareableLink, 0) + + resp, err := c.GetBastionShareableLink(ctx, id, input) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = GetBastionShareableLinkCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/bastionshareablelink/method_putbastionshareablelink.go b/resource-manager/network/2024-01-01/bastionshareablelink/method_putbastionshareablelink.go new file mode 100644 index 00000000000..bf85b28ee63 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionshareablelink/method_putbastionshareablelink.go @@ -0,0 +1,80 @@ +package bastionshareablelink + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PutBastionShareableLinkOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *[]BastionShareableLink +} + +type PutBastionShareableLinkCompleteResult struct { + LatestHttpResponse *http.Response + Items []BastionShareableLink +} + +// PutBastionShareableLink ... +func (c BastionShareableLinkClient) PutBastionShareableLink(ctx context.Context, id BastionHostId, input BastionShareableLinkListRequest) (result PutBastionShareableLinkOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/createShareableLinks", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// PutBastionShareableLinkThenPoll performs PutBastionShareableLink then polls until it's completed +func (c BastionShareableLinkClient) PutBastionShareableLinkThenPoll(ctx context.Context, id BastionHostId, input BastionShareableLinkListRequest) error { + result, err := c.PutBastionShareableLink(ctx, id, input) + if err != nil { + return fmt.Errorf("performing PutBastionShareableLink: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after PutBastionShareableLink: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/bastionshareablelink/model_bastionshareablelink.go b/resource-manager/network/2024-01-01/bastionshareablelink/model_bastionshareablelink.go new file mode 100644 index 00000000000..a0bc0647825 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionshareablelink/model_bastionshareablelink.go @@ -0,0 +1,11 @@ +package bastionshareablelink + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BastionShareableLink struct { + Bsl *string `json:"bsl,omitempty"` + CreatedAt *string `json:"createdAt,omitempty"` + Message *string `json:"message,omitempty"` + VM Resource `json:"vm"` +} diff --git a/resource-manager/network/2024-01-01/bastionshareablelink/model_bastionshareablelinklistrequest.go b/resource-manager/network/2024-01-01/bastionshareablelink/model_bastionshareablelinklistrequest.go new file mode 100644 index 00000000000..e41fcb083d8 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionshareablelink/model_bastionshareablelinklistrequest.go @@ -0,0 +1,8 @@ +package bastionshareablelink + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BastionShareableLinkListRequest struct { + VMs *[]BastionShareableLink `json:"vms,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/bastionshareablelink/model_bastionshareablelinktokenlistrequest.go b/resource-manager/network/2024-01-01/bastionshareablelink/model_bastionshareablelinktokenlistrequest.go new file mode 100644 index 00000000000..10d868903d8 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionshareablelink/model_bastionshareablelinktokenlistrequest.go @@ -0,0 +1,8 @@ +package bastionshareablelink + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BastionShareableLinkTokenListRequest struct { + Tokens *[]string `json:"tokens,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/bastionshareablelink/model_resource.go b/resource-manager/network/2024-01-01/bastionshareablelink/model_resource.go new file mode 100644 index 00000000000..31d5ef85703 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionshareablelink/model_resource.go @@ -0,0 +1,12 @@ +package bastionshareablelink + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Resource struct { + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/bastionshareablelink/predicates.go b/resource-manager/network/2024-01-01/bastionshareablelink/predicates.go new file mode 100644 index 00000000000..15f07095262 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionshareablelink/predicates.go @@ -0,0 +1,27 @@ +package bastionshareablelink + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BastionShareableLinkOperationPredicate struct { + Bsl *string + CreatedAt *string + Message *string +} + +func (p BastionShareableLinkOperationPredicate) Matches(input BastionShareableLink) bool { + + if p.Bsl != nil && (input.Bsl == nil || *p.Bsl != *input.Bsl) { + return false + } + + if p.CreatedAt != nil && (input.CreatedAt == nil || *p.CreatedAt != *input.CreatedAt) { + return false + } + + if p.Message != nil && (input.Message == nil || *p.Message != *input.Message) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/bastionshareablelink/version.go b/resource-manager/network/2024-01-01/bastionshareablelink/version.go new file mode 100644 index 00000000000..d402ea51fb7 --- /dev/null +++ b/resource-manager/network/2024-01-01/bastionshareablelink/version.go @@ -0,0 +1,12 @@ +package bastionshareablelink + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/bastionshareablelink/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/bgpservicecommunities/README.md b/resource-manager/network/2024-01-01/bgpservicecommunities/README.md new file mode 100644 index 00000000000..cf776ae5177 --- /dev/null +++ b/resource-manager/network/2024-01-01/bgpservicecommunities/README.md @@ -0,0 +1,38 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/bgpservicecommunities` Documentation + +The `bgpservicecommunities` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/bgpservicecommunities" +``` + + +### Client Initialization + +```go +client := bgpservicecommunities.NewBgpServiceCommunitiesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `BgpServiceCommunitiesClient.List` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/bgpservicecommunities/client.go b/resource-manager/network/2024-01-01/bgpservicecommunities/client.go new file mode 100644 index 00000000000..07cf4f59649 --- /dev/null +++ b/resource-manager/network/2024-01-01/bgpservicecommunities/client.go @@ -0,0 +1,26 @@ +package bgpservicecommunities + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BgpServiceCommunitiesClient struct { + Client *resourcemanager.Client +} + +func NewBgpServiceCommunitiesClientWithBaseURI(sdkApi sdkEnv.Api) (*BgpServiceCommunitiesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "bgpservicecommunities", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating BgpServiceCommunitiesClient: %+v", err) + } + + return &BgpServiceCommunitiesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/bgpservicecommunities/method_list.go b/resource-manager/network/2024-01-01/bgpservicecommunities/method_list.go new file mode 100644 index 00000000000..3d8eb8c593e --- /dev/null +++ b/resource-manager/network/2024-01-01/bgpservicecommunities/method_list.go @@ -0,0 +1,93 @@ +package bgpservicecommunities + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]BgpServiceCommunity +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []BgpServiceCommunity +} + +// List ... +func (c BgpServiceCommunitiesClient) List(ctx context.Context, id commonids.SubscriptionId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/bgpServiceCommunities", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]BgpServiceCommunity `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c BgpServiceCommunitiesClient) ListComplete(ctx context.Context, id commonids.SubscriptionId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, BgpServiceCommunityOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c BgpServiceCommunitiesClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate BgpServiceCommunityOperationPredicate) (result ListCompleteResult, err error) { + items := make([]BgpServiceCommunity, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/bgpservicecommunities/model_bgpcommunity.go b/resource-manager/network/2024-01-01/bgpservicecommunities/model_bgpcommunity.go new file mode 100644 index 00000000000..87cd63647eb --- /dev/null +++ b/resource-manager/network/2024-01-01/bgpservicecommunities/model_bgpcommunity.go @@ -0,0 +1,13 @@ +package bgpservicecommunities + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BGPCommunity struct { + CommunityName *string `json:"communityName,omitempty"` + CommunityPrefixes *[]string `json:"communityPrefixes,omitempty"` + CommunityValue *string `json:"communityValue,omitempty"` + IsAuthorizedToUse *bool `json:"isAuthorizedToUse,omitempty"` + ServiceGroup *string `json:"serviceGroup,omitempty"` + ServiceSupportedRegion *string `json:"serviceSupportedRegion,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/bgpservicecommunities/model_bgpservicecommunity.go b/resource-manager/network/2024-01-01/bgpservicecommunities/model_bgpservicecommunity.go new file mode 100644 index 00000000000..0fad9ca63e5 --- /dev/null +++ b/resource-manager/network/2024-01-01/bgpservicecommunities/model_bgpservicecommunity.go @@ -0,0 +1,13 @@ +package bgpservicecommunities + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BgpServiceCommunity struct { + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BgpServiceCommunityPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/bgpservicecommunities/model_bgpservicecommunitypropertiesformat.go b/resource-manager/network/2024-01-01/bgpservicecommunities/model_bgpservicecommunitypropertiesformat.go new file mode 100644 index 00000000000..5bf2c270ecc --- /dev/null +++ b/resource-manager/network/2024-01-01/bgpservicecommunities/model_bgpservicecommunitypropertiesformat.go @@ -0,0 +1,9 @@ +package bgpservicecommunities + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BgpServiceCommunityPropertiesFormat struct { + BgpCommunities *[]BGPCommunity `json:"bgpCommunities,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/bgpservicecommunities/predicates.go b/resource-manager/network/2024-01-01/bgpservicecommunities/predicates.go new file mode 100644 index 00000000000..2e90f55ae55 --- /dev/null +++ b/resource-manager/network/2024-01-01/bgpservicecommunities/predicates.go @@ -0,0 +1,32 @@ +package bgpservicecommunities + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BgpServiceCommunityOperationPredicate struct { + Id *string + Location *string + Name *string + Type *string +} + +func (p BgpServiceCommunityOperationPredicate) Matches(input BgpServiceCommunity) bool { + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/bgpservicecommunities/version.go b/resource-manager/network/2024-01-01/bgpservicecommunities/version.go new file mode 100644 index 00000000000..d975057c2b0 --- /dev/null +++ b/resource-manager/network/2024-01-01/bgpservicecommunities/version.go @@ -0,0 +1,12 @@ +package bgpservicecommunities + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/bgpservicecommunities/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/checkdnsavailabilities/README.md b/resource-manager/network/2024-01-01/checkdnsavailabilities/README.md new file mode 100644 index 00000000000..5cf6fda9ee7 --- /dev/null +++ b/resource-manager/network/2024-01-01/checkdnsavailabilities/README.md @@ -0,0 +1,36 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/checkdnsavailabilities` Documentation + +The `checkdnsavailabilities` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/checkdnsavailabilities" +``` + + +### Client Initialization + +```go +client := checkdnsavailabilities.NewCheckDnsAvailabilitiesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `CheckDnsAvailabilitiesClient.CheckDnsNameAvailability` + +```go +ctx := context.TODO() +id := checkdnsavailabilities.NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue") + +read, err := client.CheckDnsNameAvailability(ctx, id, checkdnsavailabilities.DefaultCheckDnsNameAvailabilityOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/checkdnsavailabilities/client.go b/resource-manager/network/2024-01-01/checkdnsavailabilities/client.go new file mode 100644 index 00000000000..14eb1a4baa0 --- /dev/null +++ b/resource-manager/network/2024-01-01/checkdnsavailabilities/client.go @@ -0,0 +1,26 @@ +package checkdnsavailabilities + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CheckDnsAvailabilitiesClient struct { + Client *resourcemanager.Client +} + +func NewCheckDnsAvailabilitiesClientWithBaseURI(sdkApi sdkEnv.Api) (*CheckDnsAvailabilitiesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "checkdnsavailabilities", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating CheckDnsAvailabilitiesClient: %+v", err) + } + + return &CheckDnsAvailabilitiesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/checkdnsavailabilities/id_location.go b/resource-manager/network/2024-01-01/checkdnsavailabilities/id_location.go new file mode 100644 index 00000000000..1adf8c560da --- /dev/null +++ b/resource-manager/network/2024-01-01/checkdnsavailabilities/id_location.go @@ -0,0 +1,121 @@ +package checkdnsavailabilities + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&LocationId{}) +} + +var _ resourceids.ResourceId = &LocationId{} + +// LocationId is a struct representing the Resource ID for a Location +type LocationId struct { + SubscriptionId string + LocationName string +} + +// NewLocationID returns a new LocationId struct +func NewLocationID(subscriptionId string, locationName string) LocationId { + return LocationId{ + SubscriptionId: subscriptionId, + LocationName: locationName, + } +} + +// ParseLocationID parses 'input' into a LocationId +func ParseLocationID(input string) (*LocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&LocationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseLocationIDInsensitively parses 'input' case-insensitively into a LocationId +// note: this method should only be used for API response data and not user input +func ParseLocationIDInsensitively(input string) (*LocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&LocationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *LocationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.LocationName, ok = input.Parsed["locationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "locationName", input) + } + + return nil +} + +// ValidateLocationID checks that 'input' can be parsed as a Location ID +func ValidateLocationID(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 := ParseLocationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Location ID +func (id LocationId) ID() string { + fmtString := "/subscriptions/%s/providers/Microsoft.Network/locations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.LocationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Location ID +func (id LocationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLocations", "locations", "locations"), + resourceids.UserSpecifiedSegment("locationName", "locationValue"), + } +} + +// String returns a human-readable description of this Location ID +func (id LocationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Location Name: %q", id.LocationName), + } + return fmt.Sprintf("Location (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/checkdnsavailabilities/id_location_test.go b/resource-manager/network/2024-01-01/checkdnsavailabilities/id_location_test.go new file mode 100644 index 00000000000..17ddce78457 --- /dev/null +++ b/resource-manager/network/2024-01-01/checkdnsavailabilities/id_location_test.go @@ -0,0 +1,237 @@ +package checkdnsavailabilities + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &LocationId{} + +func TestNewLocationID(t *testing.T) { + id := NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.LocationName != "locationValue" { + t.Fatalf("Expected %q but got %q for Segment 'LocationName'", id.LocationName, "locationValue") + } +} + +func TestFormatLocationID(t *testing.T) { + actual := NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseLocationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLocationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestParseLocationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "lOcAtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLocationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestSegmentsForLocationId(t *testing.T) { + segments := LocationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("LocationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/checkdnsavailabilities/method_checkdnsnameavailability.go b/resource-manager/network/2024-01-01/checkdnsavailabilities/method_checkdnsnameavailability.go new file mode 100644 index 00000000000..7a516978d72 --- /dev/null +++ b/resource-manager/network/2024-01-01/checkdnsavailabilities/method_checkdnsnameavailability.go @@ -0,0 +1,83 @@ +package checkdnsavailabilities + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CheckDnsNameAvailabilityOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *DnsNameAvailabilityResult +} + +type CheckDnsNameAvailabilityOperationOptions struct { + DomainNameLabel *string +} + +func DefaultCheckDnsNameAvailabilityOperationOptions() CheckDnsNameAvailabilityOperationOptions { + return CheckDnsNameAvailabilityOperationOptions{} +} + +func (o CheckDnsNameAvailabilityOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o CheckDnsNameAvailabilityOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o CheckDnsNameAvailabilityOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.DomainNameLabel != nil { + out.Append("domainNameLabel", fmt.Sprintf("%v", *o.DomainNameLabel)) + } + return &out +} + +// CheckDnsNameAvailability ... +func (c CheckDnsAvailabilitiesClient) CheckDnsNameAvailability(ctx context.Context, id LocationId, options CheckDnsNameAvailabilityOperationOptions) (result CheckDnsNameAvailabilityOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/checkDnsNameAvailability", id.ID()), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model DnsNameAvailabilityResult + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/checkdnsavailabilities/model_dnsnameavailabilityresult.go b/resource-manager/network/2024-01-01/checkdnsavailabilities/model_dnsnameavailabilityresult.go new file mode 100644 index 00000000000..e12398a149f --- /dev/null +++ b/resource-manager/network/2024-01-01/checkdnsavailabilities/model_dnsnameavailabilityresult.go @@ -0,0 +1,8 @@ +package checkdnsavailabilities + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DnsNameAvailabilityResult struct { + Available *bool `json:"available,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/checkdnsavailabilities/version.go b/resource-manager/network/2024-01-01/checkdnsavailabilities/version.go new file mode 100644 index 00000000000..18dbe7c6909 --- /dev/null +++ b/resource-manager/network/2024-01-01/checkdnsavailabilities/version.go @@ -0,0 +1,12 @@ +package checkdnsavailabilities + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/checkdnsavailabilities/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/client.go b/resource-manager/network/2024-01-01/client.go new file mode 100644 index 00000000000..b14f1989cb0 --- /dev/null +++ b/resource-manager/network/2024-01-01/client.go @@ -0,0 +1,973 @@ +package v2024_01_01 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/adminrulecollections" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/adminrules" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/applicationgatewayprivateendpointconnections" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/applicationgatewayprivatelinkresources" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/applicationgateways" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/applicationgatewaywafdynamicmanifests" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/applicationsecuritygroups" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/availabledelegations" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/availableservicealiases" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/azurefirewalls" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/bastionhosts" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/bastionshareablelink" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/bgpservicecommunities" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/checkdnsavailabilities" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/cloudservicepublicipaddresses" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/connectionmonitors" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/connectivityconfigurations" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/customipprefixes" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/ddoscustompolicies" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/ddosprotectionplans" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/dscpconfiguration" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/dscpconfigurations" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/endpointservices" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuitarptable" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuitauthorizations" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuitconnections" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuitpeerings" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuitroutestable" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuits" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuitstats" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressrouteconnections" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecrossconnections" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutegateways" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutelinks" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressrouteportauthorizations" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressrouteports" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressrouteportslocations" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressrouteproviderports" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressrouteserviceproviders" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/firewallpolicies" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/flowlogs" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/ipallocations" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/ipgroups" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/loadbalancers" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/localnetworkgateways" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/natgateways" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkgroups" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkinterfaces" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkmanageractiveconfigurations" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkmanagerconnections" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkmanagers" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkprofiles" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networksecuritygroups" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkvirtualappliances" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkwatchers" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/p2svpngateways" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/packetcaptures" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/privatednszonegroups" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/privateendpoints" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/privatelinkservices" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/publicipaddresses" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/publicipprefixes" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/routefilterrules" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/routefilters" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/routes" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/routetables" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/scopeconnections" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/securityadminconfigurations" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/securitypartnerproviders" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/securityrules" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/serviceendpointpolicies" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/servicetags" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/staticmembers" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/subnets" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/trafficanalytics" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/usages" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/vipswap" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualappliancesites" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualapplianceskus" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualnetworkgateways" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualnetworkpeerings" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualnetworks" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualnetworktap" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualnetworktaps" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualrouterpeerings" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualrouters" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualwans" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/vmsspublicipaddresses" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/vpngateways" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/vpnlinkconnections" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/vpnserverconfigurations" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/vpnsites" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/webapplicationfirewallpolicies" + "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/webcategories" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +type Client struct { + AdminRuleCollections *adminrulecollections.AdminRuleCollectionsClient + AdminRules *adminrules.AdminRulesClient + ApplicationGatewayPrivateEndpointConnections *applicationgatewayprivateendpointconnections.ApplicationGatewayPrivateEndpointConnectionsClient + ApplicationGatewayPrivateLinkResources *applicationgatewayprivatelinkresources.ApplicationGatewayPrivateLinkResourcesClient + ApplicationGatewayWafDynamicManifests *applicationgatewaywafdynamicmanifests.ApplicationGatewayWafDynamicManifestsClient + ApplicationGateways *applicationgateways.ApplicationGatewaysClient + ApplicationSecurityGroups *applicationsecuritygroups.ApplicationSecurityGroupsClient + AvailableDelegations *availabledelegations.AvailableDelegationsClient + AvailableServiceAliases *availableservicealiases.AvailableServiceAliasesClient + AzureFirewalls *azurefirewalls.AzureFirewallsClient + BastionHosts *bastionhosts.BastionHostsClient + BastionShareableLink *bastionshareablelink.BastionShareableLinkClient + BgpServiceCommunities *bgpservicecommunities.BgpServiceCommunitiesClient + CheckDnsAvailabilities *checkdnsavailabilities.CheckDnsAvailabilitiesClient + CloudServicePublicIPAddresses *cloudservicepublicipaddresses.CloudServicePublicIPAddressesClient + ConnectionMonitors *connectionmonitors.ConnectionMonitorsClient + ConnectivityConfigurations *connectivityconfigurations.ConnectivityConfigurationsClient + CustomIPPrefixes *customipprefixes.CustomIPPrefixesClient + DdosCustomPolicies *ddoscustompolicies.DdosCustomPoliciesClient + DdosProtectionPlans *ddosprotectionplans.DdosProtectionPlansClient + DscpConfiguration *dscpconfiguration.DscpConfigurationClient + DscpConfigurations *dscpconfigurations.DscpConfigurationsClient + EndpointServices *endpointservices.EndpointServicesClient + ExpressRouteCircuitArpTable *expressroutecircuitarptable.ExpressRouteCircuitArpTableClient + ExpressRouteCircuitAuthorizations *expressroutecircuitauthorizations.ExpressRouteCircuitAuthorizationsClient + ExpressRouteCircuitConnections *expressroutecircuitconnections.ExpressRouteCircuitConnectionsClient + ExpressRouteCircuitPeerings *expressroutecircuitpeerings.ExpressRouteCircuitPeeringsClient + ExpressRouteCircuitRoutesTable *expressroutecircuitroutestable.ExpressRouteCircuitRoutesTableClient + ExpressRouteCircuitRoutesTableSummary *expressroutecircuitroutestablesummary.ExpressRouteCircuitRoutesTableSummaryClient + ExpressRouteCircuitStats *expressroutecircuitstats.ExpressRouteCircuitStatsClient + ExpressRouteCircuits *expressroutecircuits.ExpressRouteCircuitsClient + ExpressRouteConnections *expressrouteconnections.ExpressRouteConnectionsClient + ExpressRouteCrossConnectionArpTable *expressroutecrossconnectionarptable.ExpressRouteCrossConnectionArpTableClient + ExpressRouteCrossConnectionPeerings *expressroutecrossconnectionpeerings.ExpressRouteCrossConnectionPeeringsClient + ExpressRouteCrossConnectionRouteTable *expressroutecrossconnectionroutetable.ExpressRouteCrossConnectionRouteTableClient + ExpressRouteCrossConnectionRouteTableSummary *expressroutecrossconnectionroutetablesummary.ExpressRouteCrossConnectionRouteTableSummaryClient + ExpressRouteCrossConnections *expressroutecrossconnections.ExpressRouteCrossConnectionsClient + ExpressRouteGateways *expressroutegateways.ExpressRouteGatewaysClient + ExpressRouteLinks *expressroutelinks.ExpressRouteLinksClient + ExpressRoutePortAuthorizations *expressrouteportauthorizations.ExpressRoutePortAuthorizationsClient + ExpressRoutePorts *expressrouteports.ExpressRoutePortsClient + ExpressRoutePortsLocations *expressrouteportslocations.ExpressRoutePortsLocationsClient + ExpressRouteProviderPorts *expressrouteproviderports.ExpressRouteProviderPortsClient + ExpressRouteServiceProviders *expressrouteserviceproviders.ExpressRouteServiceProvidersClient + FirewallPolicies *firewallpolicies.FirewallPoliciesClient + FirewallPolicyRuleCollectionGroups *firewallpolicyrulecollectiongroups.FirewallPolicyRuleCollectionGroupsClient + FlowLogs *flowlogs.FlowLogsClient + IPAllocations *ipallocations.IPAllocationsClient + IPGroups *ipgroups.IPGroupsClient + LoadBalancers *loadbalancers.LoadBalancersClient + LocalNetworkGateways *localnetworkgateways.LocalNetworkGatewaysClient + NatGateways *natgateways.NatGatewaysClient + NetworkGroups *networkgroups.NetworkGroupsClient + NetworkInterfaces *networkinterfaces.NetworkInterfacesClient + NetworkManagerActiveConfigurations *networkmanageractiveconfigurations.NetworkManagerActiveConfigurationsClient + NetworkManagerActiveConnectivityConfigurations *networkmanageractiveconnectivityconfigurations.NetworkManagerActiveConnectivityConfigurationsClient + NetworkManagerConnections *networkmanagerconnections.NetworkManagerConnectionsClient + NetworkManagerEffectiveConnectivityConfiguration *networkmanagereffectiveconnectivityconfiguration.NetworkManagerEffectiveConnectivityConfigurationClient + NetworkManagerEffectiveSecurityAdminRules *networkmanagereffectivesecurityadminrules.NetworkManagerEffectiveSecurityAdminRulesClient + NetworkManagers *networkmanagers.NetworkManagersClient + NetworkProfiles *networkprofiles.NetworkProfilesClient + NetworkSecurityGroups *networksecuritygroups.NetworkSecurityGroupsClient + NetworkVirtualAppliances *networkvirtualappliances.NetworkVirtualAppliancesClient + NetworkWatchers *networkwatchers.NetworkWatchersClient + P2sVpnGateways *p2svpngateways.P2sVpnGatewaysClient + PacketCaptures *packetcaptures.PacketCapturesClient + PeerExpressRouteCircuitConnections *peerexpressroutecircuitconnections.PeerExpressRouteCircuitConnectionsClient + PrivateDnsZoneGroups *privatednszonegroups.PrivateDnsZoneGroupsClient + PrivateEndpoints *privateendpoints.PrivateEndpointsClient + PrivateLinkServices *privatelinkservices.PrivateLinkServicesClient + PublicIPAddresses *publicipaddresses.PublicIPAddressesClient + PublicIPPrefixes *publicipprefixes.PublicIPPrefixesClient + RouteFilterRules *routefilterrules.RouteFilterRulesClient + RouteFilters *routefilters.RouteFiltersClient + RouteTables *routetables.RouteTablesClient + Routes *routes.RoutesClient + ScopeConnections *scopeconnections.ScopeConnectionsClient + SecurityAdminConfigurations *securityadminconfigurations.SecurityAdminConfigurationsClient + SecurityPartnerProviders *securitypartnerproviders.SecurityPartnerProvidersClient + SecurityRules *securityrules.SecurityRulesClient + ServiceEndpointPolicies *serviceendpointpolicies.ServiceEndpointPoliciesClient + ServiceEndpointPolicyDefinitions *serviceendpointpolicydefinitions.ServiceEndpointPolicyDefinitionsClient + ServiceTags *servicetags.ServiceTagsClient + StaticMembers *staticmembers.StaticMembersClient + Subnets *subnets.SubnetsClient + TrafficAnalytics *trafficanalytics.TrafficAnalyticsClient + Usages *usages.UsagesClient + VMSSPublicIPAddresses *vmsspublicipaddresses.VMSSPublicIPAddressesClient + VipSwap *vipswap.VipSwapClient + VirtualApplianceSites *virtualappliancesites.VirtualApplianceSitesClient + VirtualApplianceSkus *virtualapplianceskus.VirtualApplianceSkusClient + VirtualNetworkGatewayConnections *virtualnetworkgatewayconnections.VirtualNetworkGatewayConnectionsClient + VirtualNetworkGateways *virtualnetworkgateways.VirtualNetworkGatewaysClient + VirtualNetworkPeerings *virtualnetworkpeerings.VirtualNetworkPeeringsClient + VirtualNetworkTap *virtualnetworktap.VirtualNetworkTapClient + VirtualNetworkTaps *virtualnetworktaps.VirtualNetworkTapsClient + VirtualNetworks *virtualnetworks.VirtualNetworksClient + VirtualRouterPeerings *virtualrouterpeerings.VirtualRouterPeeringsClient + VirtualRouters *virtualrouters.VirtualRoutersClient + VirtualWANs *virtualwans.VirtualWANsClient + VpnGateways *vpngateways.VpnGatewaysClient + VpnLinkConnections *vpnlinkconnections.VpnLinkConnectionsClient + VpnServerConfigurations *vpnserverconfigurations.VpnServerConfigurationsClient + VpnSites *vpnsites.VpnSitesClient + WebApplicationFirewallPolicies *webapplicationfirewallpolicies.WebApplicationFirewallPoliciesClient + WebCategories *webcategories.WebCategoriesClient +} + +func NewClientWithBaseURI(sdkApi sdkEnv.Api, configureFunc func(c *resourcemanager.Client)) (*Client, error) { + adminRuleCollectionsClient, err := adminrulecollections.NewAdminRuleCollectionsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building AdminRuleCollections client: %+v", err) + } + configureFunc(adminRuleCollectionsClient.Client) + + adminRulesClient, err := adminrules.NewAdminRulesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building AdminRules client: %+v", err) + } + configureFunc(adminRulesClient.Client) + + applicationGatewayPrivateEndpointConnectionsClient, err := applicationgatewayprivateendpointconnections.NewApplicationGatewayPrivateEndpointConnectionsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ApplicationGatewayPrivateEndpointConnections client: %+v", err) + } + configureFunc(applicationGatewayPrivateEndpointConnectionsClient.Client) + + applicationGatewayPrivateLinkResourcesClient, err := applicationgatewayprivatelinkresources.NewApplicationGatewayPrivateLinkResourcesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ApplicationGatewayPrivateLinkResources client: %+v", err) + } + configureFunc(applicationGatewayPrivateLinkResourcesClient.Client) + + applicationGatewayWafDynamicManifestsClient, err := applicationgatewaywafdynamicmanifests.NewApplicationGatewayWafDynamicManifestsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ApplicationGatewayWafDynamicManifests client: %+v", err) + } + configureFunc(applicationGatewayWafDynamicManifestsClient.Client) + + applicationGatewaysClient, err := applicationgateways.NewApplicationGatewaysClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ApplicationGateways client: %+v", err) + } + configureFunc(applicationGatewaysClient.Client) + + applicationSecurityGroupsClient, err := applicationsecuritygroups.NewApplicationSecurityGroupsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ApplicationSecurityGroups client: %+v", err) + } + configureFunc(applicationSecurityGroupsClient.Client) + + availableDelegationsClient, err := availabledelegations.NewAvailableDelegationsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building AvailableDelegations client: %+v", err) + } + configureFunc(availableDelegationsClient.Client) + + availableServiceAliasesClient, err := availableservicealiases.NewAvailableServiceAliasesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building AvailableServiceAliases client: %+v", err) + } + configureFunc(availableServiceAliasesClient.Client) + + azureFirewallsClient, err := azurefirewalls.NewAzureFirewallsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building AzureFirewalls client: %+v", err) + } + configureFunc(azureFirewallsClient.Client) + + bastionHostsClient, err := bastionhosts.NewBastionHostsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building BastionHosts client: %+v", err) + } + configureFunc(bastionHostsClient.Client) + + bastionShareableLinkClient, err := bastionshareablelink.NewBastionShareableLinkClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building BastionShareableLink client: %+v", err) + } + configureFunc(bastionShareableLinkClient.Client) + + bgpServiceCommunitiesClient, err := bgpservicecommunities.NewBgpServiceCommunitiesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building BgpServiceCommunities client: %+v", err) + } + configureFunc(bgpServiceCommunitiesClient.Client) + + checkDnsAvailabilitiesClient, err := checkdnsavailabilities.NewCheckDnsAvailabilitiesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building CheckDnsAvailabilities client: %+v", err) + } + configureFunc(checkDnsAvailabilitiesClient.Client) + + cloudServicePublicIPAddressesClient, err := cloudservicepublicipaddresses.NewCloudServicePublicIPAddressesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building CloudServicePublicIPAddresses client: %+v", err) + } + configureFunc(cloudServicePublicIPAddressesClient.Client) + + connectionMonitorsClient, err := connectionmonitors.NewConnectionMonitorsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ConnectionMonitors client: %+v", err) + } + configureFunc(connectionMonitorsClient.Client) + + connectivityConfigurationsClient, err := connectivityconfigurations.NewConnectivityConfigurationsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ConnectivityConfigurations client: %+v", err) + } + configureFunc(connectivityConfigurationsClient.Client) + + customIPPrefixesClient, err := customipprefixes.NewCustomIPPrefixesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building CustomIPPrefixes client: %+v", err) + } + configureFunc(customIPPrefixesClient.Client) + + ddosCustomPoliciesClient, err := ddoscustompolicies.NewDdosCustomPoliciesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building DdosCustomPolicies client: %+v", err) + } + configureFunc(ddosCustomPoliciesClient.Client) + + ddosProtectionPlansClient, err := ddosprotectionplans.NewDdosProtectionPlansClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building DdosProtectionPlans client: %+v", err) + } + configureFunc(ddosProtectionPlansClient.Client) + + dscpConfigurationClient, err := dscpconfiguration.NewDscpConfigurationClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building DscpConfiguration client: %+v", err) + } + configureFunc(dscpConfigurationClient.Client) + + dscpConfigurationsClient, err := dscpconfigurations.NewDscpConfigurationsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building DscpConfigurations client: %+v", err) + } + configureFunc(dscpConfigurationsClient.Client) + + endpointServicesClient, err := endpointservices.NewEndpointServicesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building EndpointServices client: %+v", err) + } + configureFunc(endpointServicesClient.Client) + + expressRouteCircuitArpTableClient, err := expressroutecircuitarptable.NewExpressRouteCircuitArpTableClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ExpressRouteCircuitArpTable client: %+v", err) + } + configureFunc(expressRouteCircuitArpTableClient.Client) + + expressRouteCircuitAuthorizationsClient, err := expressroutecircuitauthorizations.NewExpressRouteCircuitAuthorizationsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ExpressRouteCircuitAuthorizations client: %+v", err) + } + configureFunc(expressRouteCircuitAuthorizationsClient.Client) + + expressRouteCircuitConnectionsClient, err := expressroutecircuitconnections.NewExpressRouteCircuitConnectionsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ExpressRouteCircuitConnections client: %+v", err) + } + configureFunc(expressRouteCircuitConnectionsClient.Client) + + expressRouteCircuitPeeringsClient, err := expressroutecircuitpeerings.NewExpressRouteCircuitPeeringsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ExpressRouteCircuitPeerings client: %+v", err) + } + configureFunc(expressRouteCircuitPeeringsClient.Client) + + expressRouteCircuitRoutesTableClient, err := expressroutecircuitroutestable.NewExpressRouteCircuitRoutesTableClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ExpressRouteCircuitRoutesTable client: %+v", err) + } + configureFunc(expressRouteCircuitRoutesTableClient.Client) + + expressRouteCircuitRoutesTableSummaryClient, err := expressroutecircuitroutestablesummary.NewExpressRouteCircuitRoutesTableSummaryClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ExpressRouteCircuitRoutesTableSummary client: %+v", err) + } + configureFunc(expressRouteCircuitRoutesTableSummaryClient.Client) + + expressRouteCircuitStatsClient, err := expressroutecircuitstats.NewExpressRouteCircuitStatsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ExpressRouteCircuitStats client: %+v", err) + } + configureFunc(expressRouteCircuitStatsClient.Client) + + expressRouteCircuitsClient, err := expressroutecircuits.NewExpressRouteCircuitsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ExpressRouteCircuits client: %+v", err) + } + configureFunc(expressRouteCircuitsClient.Client) + + expressRouteConnectionsClient, err := expressrouteconnections.NewExpressRouteConnectionsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ExpressRouteConnections client: %+v", err) + } + configureFunc(expressRouteConnectionsClient.Client) + + expressRouteCrossConnectionArpTableClient, err := expressroutecrossconnectionarptable.NewExpressRouteCrossConnectionArpTableClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ExpressRouteCrossConnectionArpTable client: %+v", err) + } + configureFunc(expressRouteCrossConnectionArpTableClient.Client) + + expressRouteCrossConnectionPeeringsClient, err := expressroutecrossconnectionpeerings.NewExpressRouteCrossConnectionPeeringsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ExpressRouteCrossConnectionPeerings client: %+v", err) + } + configureFunc(expressRouteCrossConnectionPeeringsClient.Client) + + expressRouteCrossConnectionRouteTableClient, err := expressroutecrossconnectionroutetable.NewExpressRouteCrossConnectionRouteTableClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ExpressRouteCrossConnectionRouteTable client: %+v", err) + } + configureFunc(expressRouteCrossConnectionRouteTableClient.Client) + + expressRouteCrossConnectionRouteTableSummaryClient, err := expressroutecrossconnectionroutetablesummary.NewExpressRouteCrossConnectionRouteTableSummaryClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ExpressRouteCrossConnectionRouteTableSummary client: %+v", err) + } + configureFunc(expressRouteCrossConnectionRouteTableSummaryClient.Client) + + expressRouteCrossConnectionsClient, err := expressroutecrossconnections.NewExpressRouteCrossConnectionsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ExpressRouteCrossConnections client: %+v", err) + } + configureFunc(expressRouteCrossConnectionsClient.Client) + + expressRouteGatewaysClient, err := expressroutegateways.NewExpressRouteGatewaysClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ExpressRouteGateways client: %+v", err) + } + configureFunc(expressRouteGatewaysClient.Client) + + expressRouteLinksClient, err := expressroutelinks.NewExpressRouteLinksClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ExpressRouteLinks client: %+v", err) + } + configureFunc(expressRouteLinksClient.Client) + + expressRoutePortAuthorizationsClient, err := expressrouteportauthorizations.NewExpressRoutePortAuthorizationsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ExpressRoutePortAuthorizations client: %+v", err) + } + configureFunc(expressRoutePortAuthorizationsClient.Client) + + expressRoutePortsClient, err := expressrouteports.NewExpressRoutePortsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ExpressRoutePorts client: %+v", err) + } + configureFunc(expressRoutePortsClient.Client) + + expressRoutePortsLocationsClient, err := expressrouteportslocations.NewExpressRoutePortsLocationsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ExpressRoutePortsLocations client: %+v", err) + } + configureFunc(expressRoutePortsLocationsClient.Client) + + expressRouteProviderPortsClient, err := expressrouteproviderports.NewExpressRouteProviderPortsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ExpressRouteProviderPorts client: %+v", err) + } + configureFunc(expressRouteProviderPortsClient.Client) + + expressRouteServiceProvidersClient, err := expressrouteserviceproviders.NewExpressRouteServiceProvidersClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ExpressRouteServiceProviders client: %+v", err) + } + configureFunc(expressRouteServiceProvidersClient.Client) + + firewallPoliciesClient, err := firewallpolicies.NewFirewallPoliciesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building FirewallPolicies client: %+v", err) + } + configureFunc(firewallPoliciesClient.Client) + + firewallPolicyRuleCollectionGroupsClient, err := firewallpolicyrulecollectiongroups.NewFirewallPolicyRuleCollectionGroupsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building FirewallPolicyRuleCollectionGroups client: %+v", err) + } + configureFunc(firewallPolicyRuleCollectionGroupsClient.Client) + + flowLogsClient, err := flowlogs.NewFlowLogsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building FlowLogs client: %+v", err) + } + configureFunc(flowLogsClient.Client) + + iPAllocationsClient, err := ipallocations.NewIPAllocationsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building IPAllocations client: %+v", err) + } + configureFunc(iPAllocationsClient.Client) + + iPGroupsClient, err := ipgroups.NewIPGroupsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building IPGroups client: %+v", err) + } + configureFunc(iPGroupsClient.Client) + + loadBalancersClient, err := loadbalancers.NewLoadBalancersClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building LoadBalancers client: %+v", err) + } + configureFunc(loadBalancersClient.Client) + + localNetworkGatewaysClient, err := localnetworkgateways.NewLocalNetworkGatewaysClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building LocalNetworkGateways client: %+v", err) + } + configureFunc(localNetworkGatewaysClient.Client) + + natGatewaysClient, err := natgateways.NewNatGatewaysClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building NatGateways client: %+v", err) + } + configureFunc(natGatewaysClient.Client) + + networkGroupsClient, err := networkgroups.NewNetworkGroupsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building NetworkGroups client: %+v", err) + } + configureFunc(networkGroupsClient.Client) + + networkInterfacesClient, err := networkinterfaces.NewNetworkInterfacesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building NetworkInterfaces client: %+v", err) + } + configureFunc(networkInterfacesClient.Client) + + networkManagerActiveConfigurationsClient, err := networkmanageractiveconfigurations.NewNetworkManagerActiveConfigurationsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building NetworkManagerActiveConfigurations client: %+v", err) + } + configureFunc(networkManagerActiveConfigurationsClient.Client) + + networkManagerActiveConnectivityConfigurationsClient, err := networkmanageractiveconnectivityconfigurations.NewNetworkManagerActiveConnectivityConfigurationsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building NetworkManagerActiveConnectivityConfigurations client: %+v", err) + } + configureFunc(networkManagerActiveConnectivityConfigurationsClient.Client) + + networkManagerConnectionsClient, err := networkmanagerconnections.NewNetworkManagerConnectionsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building NetworkManagerConnections client: %+v", err) + } + configureFunc(networkManagerConnectionsClient.Client) + + networkManagerEffectiveConnectivityConfigurationClient, err := networkmanagereffectiveconnectivityconfiguration.NewNetworkManagerEffectiveConnectivityConfigurationClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building NetworkManagerEffectiveConnectivityConfiguration client: %+v", err) + } + configureFunc(networkManagerEffectiveConnectivityConfigurationClient.Client) + + networkManagerEffectiveSecurityAdminRulesClient, err := networkmanagereffectivesecurityadminrules.NewNetworkManagerEffectiveSecurityAdminRulesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building NetworkManagerEffectiveSecurityAdminRules client: %+v", err) + } + configureFunc(networkManagerEffectiveSecurityAdminRulesClient.Client) + + networkManagersClient, err := networkmanagers.NewNetworkManagersClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building NetworkManagers client: %+v", err) + } + configureFunc(networkManagersClient.Client) + + networkProfilesClient, err := networkprofiles.NewNetworkProfilesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building NetworkProfiles client: %+v", err) + } + configureFunc(networkProfilesClient.Client) + + networkSecurityGroupsClient, err := networksecuritygroups.NewNetworkSecurityGroupsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building NetworkSecurityGroups client: %+v", err) + } + configureFunc(networkSecurityGroupsClient.Client) + + networkVirtualAppliancesClient, err := networkvirtualappliances.NewNetworkVirtualAppliancesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building NetworkVirtualAppliances client: %+v", err) + } + configureFunc(networkVirtualAppliancesClient.Client) + + networkWatchersClient, err := networkwatchers.NewNetworkWatchersClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building NetworkWatchers client: %+v", err) + } + configureFunc(networkWatchersClient.Client) + + p2sVpnGatewaysClient, err := p2svpngateways.NewP2sVpnGatewaysClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building P2sVpnGateways client: %+v", err) + } + configureFunc(p2sVpnGatewaysClient.Client) + + packetCapturesClient, err := packetcaptures.NewPacketCapturesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building PacketCaptures client: %+v", err) + } + configureFunc(packetCapturesClient.Client) + + peerExpressRouteCircuitConnectionsClient, err := peerexpressroutecircuitconnections.NewPeerExpressRouteCircuitConnectionsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building PeerExpressRouteCircuitConnections client: %+v", err) + } + configureFunc(peerExpressRouteCircuitConnectionsClient.Client) + + privateDnsZoneGroupsClient, err := privatednszonegroups.NewPrivateDnsZoneGroupsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building PrivateDnsZoneGroups client: %+v", err) + } + configureFunc(privateDnsZoneGroupsClient.Client) + + privateEndpointsClient, err := privateendpoints.NewPrivateEndpointsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building PrivateEndpoints client: %+v", err) + } + configureFunc(privateEndpointsClient.Client) + + privateLinkServicesClient, err := privatelinkservices.NewPrivateLinkServicesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building PrivateLinkServices client: %+v", err) + } + configureFunc(privateLinkServicesClient.Client) + + publicIPAddressesClient, err := publicipaddresses.NewPublicIPAddressesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building PublicIPAddresses client: %+v", err) + } + configureFunc(publicIPAddressesClient.Client) + + publicIPPrefixesClient, err := publicipprefixes.NewPublicIPPrefixesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building PublicIPPrefixes client: %+v", err) + } + configureFunc(publicIPPrefixesClient.Client) + + routeFilterRulesClient, err := routefilterrules.NewRouteFilterRulesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building RouteFilterRules client: %+v", err) + } + configureFunc(routeFilterRulesClient.Client) + + routeFiltersClient, err := routefilters.NewRouteFiltersClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building RouteFilters client: %+v", err) + } + configureFunc(routeFiltersClient.Client) + + routeTablesClient, err := routetables.NewRouteTablesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building RouteTables client: %+v", err) + } + configureFunc(routeTablesClient.Client) + + routesClient, err := routes.NewRoutesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building Routes client: %+v", err) + } + configureFunc(routesClient.Client) + + scopeConnectionsClient, err := scopeconnections.NewScopeConnectionsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ScopeConnections client: %+v", err) + } + configureFunc(scopeConnectionsClient.Client) + + securityAdminConfigurationsClient, err := securityadminconfigurations.NewSecurityAdminConfigurationsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building SecurityAdminConfigurations client: %+v", err) + } + configureFunc(securityAdminConfigurationsClient.Client) + + securityPartnerProvidersClient, err := securitypartnerproviders.NewSecurityPartnerProvidersClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building SecurityPartnerProviders client: %+v", err) + } + configureFunc(securityPartnerProvidersClient.Client) + + securityRulesClient, err := securityrules.NewSecurityRulesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building SecurityRules client: %+v", err) + } + configureFunc(securityRulesClient.Client) + + serviceEndpointPoliciesClient, err := serviceendpointpolicies.NewServiceEndpointPoliciesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ServiceEndpointPolicies client: %+v", err) + } + configureFunc(serviceEndpointPoliciesClient.Client) + + serviceEndpointPolicyDefinitionsClient, err := serviceendpointpolicydefinitions.NewServiceEndpointPolicyDefinitionsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ServiceEndpointPolicyDefinitions client: %+v", err) + } + configureFunc(serviceEndpointPolicyDefinitionsClient.Client) + + serviceTagsClient, err := servicetags.NewServiceTagsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building ServiceTags client: %+v", err) + } + configureFunc(serviceTagsClient.Client) + + staticMembersClient, err := staticmembers.NewStaticMembersClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building StaticMembers client: %+v", err) + } + configureFunc(staticMembersClient.Client) + + subnetsClient, err := subnets.NewSubnetsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building Subnets client: %+v", err) + } + configureFunc(subnetsClient.Client) + + trafficAnalyticsClient, err := trafficanalytics.NewTrafficAnalyticsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building TrafficAnalytics client: %+v", err) + } + configureFunc(trafficAnalyticsClient.Client) + + usagesClient, err := usages.NewUsagesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building Usages client: %+v", err) + } + configureFunc(usagesClient.Client) + + vMSSPublicIPAddressesClient, err := vmsspublicipaddresses.NewVMSSPublicIPAddressesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building VMSSPublicIPAddresses client: %+v", err) + } + configureFunc(vMSSPublicIPAddressesClient.Client) + + vipSwapClient, err := vipswap.NewVipSwapClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building VipSwap client: %+v", err) + } + configureFunc(vipSwapClient.Client) + + virtualApplianceSitesClient, err := virtualappliancesites.NewVirtualApplianceSitesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building VirtualApplianceSites client: %+v", err) + } + configureFunc(virtualApplianceSitesClient.Client) + + virtualApplianceSkusClient, err := virtualapplianceskus.NewVirtualApplianceSkusClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building VirtualApplianceSkus client: %+v", err) + } + configureFunc(virtualApplianceSkusClient.Client) + + virtualNetworkGatewayConnectionsClient, err := virtualnetworkgatewayconnections.NewVirtualNetworkGatewayConnectionsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building VirtualNetworkGatewayConnections client: %+v", err) + } + configureFunc(virtualNetworkGatewayConnectionsClient.Client) + + virtualNetworkGatewaysClient, err := virtualnetworkgateways.NewVirtualNetworkGatewaysClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building VirtualNetworkGateways client: %+v", err) + } + configureFunc(virtualNetworkGatewaysClient.Client) + + virtualNetworkPeeringsClient, err := virtualnetworkpeerings.NewVirtualNetworkPeeringsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building VirtualNetworkPeerings client: %+v", err) + } + configureFunc(virtualNetworkPeeringsClient.Client) + + virtualNetworkTapClient, err := virtualnetworktap.NewVirtualNetworkTapClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building VirtualNetworkTap client: %+v", err) + } + configureFunc(virtualNetworkTapClient.Client) + + virtualNetworkTapsClient, err := virtualnetworktaps.NewVirtualNetworkTapsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building VirtualNetworkTaps client: %+v", err) + } + configureFunc(virtualNetworkTapsClient.Client) + + virtualNetworksClient, err := virtualnetworks.NewVirtualNetworksClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building VirtualNetworks client: %+v", err) + } + configureFunc(virtualNetworksClient.Client) + + virtualRouterPeeringsClient, err := virtualrouterpeerings.NewVirtualRouterPeeringsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building VirtualRouterPeerings client: %+v", err) + } + configureFunc(virtualRouterPeeringsClient.Client) + + virtualRoutersClient, err := virtualrouters.NewVirtualRoutersClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building VirtualRouters client: %+v", err) + } + configureFunc(virtualRoutersClient.Client) + + virtualWANsClient, err := virtualwans.NewVirtualWANsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building VirtualWANs client: %+v", err) + } + configureFunc(virtualWANsClient.Client) + + vpnGatewaysClient, err := vpngateways.NewVpnGatewaysClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building VpnGateways client: %+v", err) + } + configureFunc(vpnGatewaysClient.Client) + + vpnLinkConnectionsClient, err := vpnlinkconnections.NewVpnLinkConnectionsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building VpnLinkConnections client: %+v", err) + } + configureFunc(vpnLinkConnectionsClient.Client) + + vpnServerConfigurationsClient, err := vpnserverconfigurations.NewVpnServerConfigurationsClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building VpnServerConfigurations client: %+v", err) + } + configureFunc(vpnServerConfigurationsClient.Client) + + vpnSitesClient, err := vpnsites.NewVpnSitesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building VpnSites client: %+v", err) + } + configureFunc(vpnSitesClient.Client) + + webApplicationFirewallPoliciesClient, err := webapplicationfirewallpolicies.NewWebApplicationFirewallPoliciesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building WebApplicationFirewallPolicies client: %+v", err) + } + configureFunc(webApplicationFirewallPoliciesClient.Client) + + webCategoriesClient, err := webcategories.NewWebCategoriesClientWithBaseURI(sdkApi) + if err != nil { + return nil, fmt.Errorf("building WebCategories client: %+v", err) + } + configureFunc(webCategoriesClient.Client) + + return &Client{ + AdminRuleCollections: adminRuleCollectionsClient, + AdminRules: adminRulesClient, + ApplicationGatewayPrivateEndpointConnections: applicationGatewayPrivateEndpointConnectionsClient, + ApplicationGatewayPrivateLinkResources: applicationGatewayPrivateLinkResourcesClient, + ApplicationGatewayWafDynamicManifests: applicationGatewayWafDynamicManifestsClient, + ApplicationGateways: applicationGatewaysClient, + ApplicationSecurityGroups: applicationSecurityGroupsClient, + AvailableDelegations: availableDelegationsClient, + AvailableServiceAliases: availableServiceAliasesClient, + AzureFirewalls: azureFirewallsClient, + BastionHosts: bastionHostsClient, + BastionShareableLink: bastionShareableLinkClient, + BgpServiceCommunities: bgpServiceCommunitiesClient, + CheckDnsAvailabilities: checkDnsAvailabilitiesClient, + CloudServicePublicIPAddresses: cloudServicePublicIPAddressesClient, + ConnectionMonitors: connectionMonitorsClient, + ConnectivityConfigurations: connectivityConfigurationsClient, + CustomIPPrefixes: customIPPrefixesClient, + DdosCustomPolicies: ddosCustomPoliciesClient, + DdosProtectionPlans: ddosProtectionPlansClient, + DscpConfiguration: dscpConfigurationClient, + DscpConfigurations: dscpConfigurationsClient, + EndpointServices: endpointServicesClient, + ExpressRouteCircuitArpTable: expressRouteCircuitArpTableClient, + ExpressRouteCircuitAuthorizations: expressRouteCircuitAuthorizationsClient, + ExpressRouteCircuitConnections: expressRouteCircuitConnectionsClient, + ExpressRouteCircuitPeerings: expressRouteCircuitPeeringsClient, + ExpressRouteCircuitRoutesTable: expressRouteCircuitRoutesTableClient, + ExpressRouteCircuitRoutesTableSummary: expressRouteCircuitRoutesTableSummaryClient, + ExpressRouteCircuitStats: expressRouteCircuitStatsClient, + ExpressRouteCircuits: expressRouteCircuitsClient, + ExpressRouteConnections: expressRouteConnectionsClient, + ExpressRouteCrossConnectionArpTable: expressRouteCrossConnectionArpTableClient, + ExpressRouteCrossConnectionPeerings: expressRouteCrossConnectionPeeringsClient, + ExpressRouteCrossConnectionRouteTable: expressRouteCrossConnectionRouteTableClient, + ExpressRouteCrossConnectionRouteTableSummary: expressRouteCrossConnectionRouteTableSummaryClient, + ExpressRouteCrossConnections: expressRouteCrossConnectionsClient, + ExpressRouteGateways: expressRouteGatewaysClient, + ExpressRouteLinks: expressRouteLinksClient, + ExpressRoutePortAuthorizations: expressRoutePortAuthorizationsClient, + ExpressRoutePorts: expressRoutePortsClient, + ExpressRoutePortsLocations: expressRoutePortsLocationsClient, + ExpressRouteProviderPorts: expressRouteProviderPortsClient, + ExpressRouteServiceProviders: expressRouteServiceProvidersClient, + FirewallPolicies: firewallPoliciesClient, + FirewallPolicyRuleCollectionGroups: firewallPolicyRuleCollectionGroupsClient, + FlowLogs: flowLogsClient, + IPAllocations: iPAllocationsClient, + IPGroups: iPGroupsClient, + LoadBalancers: loadBalancersClient, + LocalNetworkGateways: localNetworkGatewaysClient, + NatGateways: natGatewaysClient, + NetworkGroups: networkGroupsClient, + NetworkInterfaces: networkInterfacesClient, + NetworkManagerActiveConfigurations: networkManagerActiveConfigurationsClient, + NetworkManagerActiveConnectivityConfigurations: networkManagerActiveConnectivityConfigurationsClient, + NetworkManagerConnections: networkManagerConnectionsClient, + NetworkManagerEffectiveConnectivityConfiguration: networkManagerEffectiveConnectivityConfigurationClient, + NetworkManagerEffectiveSecurityAdminRules: networkManagerEffectiveSecurityAdminRulesClient, + NetworkManagers: networkManagersClient, + NetworkProfiles: networkProfilesClient, + NetworkSecurityGroups: networkSecurityGroupsClient, + NetworkVirtualAppliances: networkVirtualAppliancesClient, + NetworkWatchers: networkWatchersClient, + P2sVpnGateways: p2sVpnGatewaysClient, + PacketCaptures: packetCapturesClient, + PeerExpressRouteCircuitConnections: peerExpressRouteCircuitConnectionsClient, + PrivateDnsZoneGroups: privateDnsZoneGroupsClient, + PrivateEndpoints: privateEndpointsClient, + PrivateLinkServices: privateLinkServicesClient, + PublicIPAddresses: publicIPAddressesClient, + PublicIPPrefixes: publicIPPrefixesClient, + RouteFilterRules: routeFilterRulesClient, + RouteFilters: routeFiltersClient, + RouteTables: routeTablesClient, + Routes: routesClient, + ScopeConnections: scopeConnectionsClient, + SecurityAdminConfigurations: securityAdminConfigurationsClient, + SecurityPartnerProviders: securityPartnerProvidersClient, + SecurityRules: securityRulesClient, + ServiceEndpointPolicies: serviceEndpointPoliciesClient, + ServiceEndpointPolicyDefinitions: serviceEndpointPolicyDefinitionsClient, + ServiceTags: serviceTagsClient, + StaticMembers: staticMembersClient, + Subnets: subnetsClient, + TrafficAnalytics: trafficAnalyticsClient, + Usages: usagesClient, + VMSSPublicIPAddresses: vMSSPublicIPAddressesClient, + VipSwap: vipSwapClient, + VirtualApplianceSites: virtualApplianceSitesClient, + VirtualApplianceSkus: virtualApplianceSkusClient, + VirtualNetworkGatewayConnections: virtualNetworkGatewayConnectionsClient, + VirtualNetworkGateways: virtualNetworkGatewaysClient, + VirtualNetworkPeerings: virtualNetworkPeeringsClient, + VirtualNetworkTap: virtualNetworkTapClient, + VirtualNetworkTaps: virtualNetworkTapsClient, + VirtualNetworks: virtualNetworksClient, + VirtualRouterPeerings: virtualRouterPeeringsClient, + VirtualRouters: virtualRoutersClient, + VirtualWANs: virtualWANsClient, + VpnGateways: vpnGatewaysClient, + VpnLinkConnections: vpnLinkConnectionsClient, + VpnServerConfigurations: vpnServerConfigurationsClient, + VpnSites: vpnSitesClient, + WebApplicationFirewallPolicies: webApplicationFirewallPoliciesClient, + WebCategories: webCategoriesClient, + }, nil +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/README.md b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/README.md new file mode 100644 index 00000000000..b5e97b7d6f5 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/README.md @@ -0,0 +1,71 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/cloudservicepublicipaddresses` Documentation + +The `cloudservicepublicipaddresses` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/cloudservicepublicipaddresses" +``` + + +### Client Initialization + +```go +client := cloudservicepublicipaddresses.NewCloudServicePublicIPAddressesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `CloudServicePublicIPAddressesClient.PublicIPAddressesGetCloudServicePublicIPAddress` + +```go +ctx := context.TODO() +id := commonids.NewCloudServicesPublicIPAddressID("12345678-1234-9876-4563-123456789012", "example-resource-group", "cloudServiceValue", "roleInstanceValue", "networkInterfaceValue", "ipConfigurationValue", "publicIPAddressValue") + +read, err := client.PublicIPAddressesGetCloudServicePublicIPAddress(ctx, id, cloudservicepublicipaddresses.DefaultPublicIPAddressesGetCloudServicePublicIPAddressOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `CloudServicePublicIPAddressesClient.PublicIPAddressesListCloudServicePublicIPAddresses` + +```go +ctx := context.TODO() +id := cloudservicepublicipaddresses.NewProviderCloudServiceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "cloudServiceValue") + +// alternatively `client.PublicIPAddressesListCloudServicePublicIPAddresses(ctx, id)` can be used to do batched pagination +items, err := client.PublicIPAddressesListCloudServicePublicIPAddressesComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `CloudServicePublicIPAddressesClient.PublicIPAddressesListCloudServiceRoleInstancePublicIPAddresses` + +```go +ctx := context.TODO() +id := commonids.NewCloudServicesIPConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "cloudServiceValue", "roleInstanceValue", "networkInterfaceValue", "ipConfigurationValue") + +// alternatively `client.PublicIPAddressesListCloudServiceRoleInstancePublicIPAddresses(ctx, id)` can be used to do batched pagination +items, err := client.PublicIPAddressesListCloudServiceRoleInstancePublicIPAddressesComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/client.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/client.go new file mode 100644 index 00000000000..4eebc5f720f --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/client.go @@ -0,0 +1,26 @@ +package cloudservicepublicipaddresses + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CloudServicePublicIPAddressesClient struct { + Client *resourcemanager.Client +} + +func NewCloudServicePublicIPAddressesClientWithBaseURI(sdkApi sdkEnv.Api) (*CloudServicePublicIPAddressesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "cloudservicepublicipaddresses", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating CloudServicePublicIPAddressesClient: %+v", err) + } + + return &CloudServicePublicIPAddressesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/constants.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/constants.go new file mode 100644 index 00000000000..4e4b04e8f3b --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/constants.go @@ -0,0 +1,1198 @@ +package cloudservicepublicipaddresses + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettingsProtectionMode string + +const ( + DdosSettingsProtectionModeDisabled DdosSettingsProtectionMode = "Disabled" + DdosSettingsProtectionModeEnabled DdosSettingsProtectionMode = "Enabled" + DdosSettingsProtectionModeVirtualNetworkInherited DdosSettingsProtectionMode = "VirtualNetworkInherited" +) + +func PossibleValuesForDdosSettingsProtectionMode() []string { + return []string{ + string(DdosSettingsProtectionModeDisabled), + string(DdosSettingsProtectionModeEnabled), + string(DdosSettingsProtectionModeVirtualNetworkInherited), + } +} + +func (s *DdosSettingsProtectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDdosSettingsProtectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDdosSettingsProtectionMode(input string) (*DdosSettingsProtectionMode, error) { + vals := map[string]DdosSettingsProtectionMode{ + "disabled": DdosSettingsProtectionModeDisabled, + "enabled": DdosSettingsProtectionModeEnabled, + "virtualnetworkinherited": DdosSettingsProtectionModeVirtualNetworkInherited, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DdosSettingsProtectionMode(input) + return &out, nil +} + +type DeleteOptions string + +const ( + DeleteOptionsDelete DeleteOptions = "Delete" + DeleteOptionsDetach DeleteOptions = "Detach" +) + +func PossibleValuesForDeleteOptions() []string { + return []string{ + string(DeleteOptionsDelete), + string(DeleteOptionsDetach), + } +} + +func (s *DeleteOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteOptions(input string) (*DeleteOptions, error) { + vals := map[string]DeleteOptions{ + "delete": DeleteOptionsDelete, + "detach": DeleteOptionsDetach, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteOptions(input) + return &out, nil +} + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelInterfaceType string + +const ( + GatewayLoadBalancerTunnelInterfaceTypeExternal GatewayLoadBalancerTunnelInterfaceType = "External" + GatewayLoadBalancerTunnelInterfaceTypeInternal GatewayLoadBalancerTunnelInterfaceType = "Internal" + GatewayLoadBalancerTunnelInterfaceTypeNone GatewayLoadBalancerTunnelInterfaceType = "None" +) + +func PossibleValuesForGatewayLoadBalancerTunnelInterfaceType() []string { + return []string{ + string(GatewayLoadBalancerTunnelInterfaceTypeExternal), + string(GatewayLoadBalancerTunnelInterfaceTypeInternal), + string(GatewayLoadBalancerTunnelInterfaceTypeNone), + } +} + +func (s *GatewayLoadBalancerTunnelInterfaceType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelInterfaceType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelInterfaceType(input string) (*GatewayLoadBalancerTunnelInterfaceType, error) { + vals := map[string]GatewayLoadBalancerTunnelInterfaceType{ + "external": GatewayLoadBalancerTunnelInterfaceTypeExternal, + "internal": GatewayLoadBalancerTunnelInterfaceTypeInternal, + "none": GatewayLoadBalancerTunnelInterfaceTypeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelInterfaceType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelProtocol string + +const ( + GatewayLoadBalancerTunnelProtocolNative GatewayLoadBalancerTunnelProtocol = "Native" + GatewayLoadBalancerTunnelProtocolNone GatewayLoadBalancerTunnelProtocol = "None" + GatewayLoadBalancerTunnelProtocolVXLAN GatewayLoadBalancerTunnelProtocol = "VXLAN" +) + +func PossibleValuesForGatewayLoadBalancerTunnelProtocol() []string { + return []string{ + string(GatewayLoadBalancerTunnelProtocolNative), + string(GatewayLoadBalancerTunnelProtocolNone), + string(GatewayLoadBalancerTunnelProtocolVXLAN), + } +} + +func (s *GatewayLoadBalancerTunnelProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelProtocol(input string) (*GatewayLoadBalancerTunnelProtocol, error) { + vals := map[string]GatewayLoadBalancerTunnelProtocol{ + "native": GatewayLoadBalancerTunnelProtocolNative, + "none": GatewayLoadBalancerTunnelProtocolNone, + "vxlan": GatewayLoadBalancerTunnelProtocolVXLAN, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelProtocol(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} + +type LoadBalancerBackendAddressAdminState string + +const ( + LoadBalancerBackendAddressAdminStateDown LoadBalancerBackendAddressAdminState = "Down" + LoadBalancerBackendAddressAdminStateNone LoadBalancerBackendAddressAdminState = "None" + LoadBalancerBackendAddressAdminStateUp LoadBalancerBackendAddressAdminState = "Up" +) + +func PossibleValuesForLoadBalancerBackendAddressAdminState() []string { + return []string{ + string(LoadBalancerBackendAddressAdminStateDown), + string(LoadBalancerBackendAddressAdminStateNone), + string(LoadBalancerBackendAddressAdminStateUp), + } +} + +func (s *LoadBalancerBackendAddressAdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerBackendAddressAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerBackendAddressAdminState(input string) (*LoadBalancerBackendAddressAdminState, error) { + vals := map[string]LoadBalancerBackendAddressAdminState{ + "down": LoadBalancerBackendAddressAdminStateDown, + "none": LoadBalancerBackendAddressAdminStateNone, + "up": LoadBalancerBackendAddressAdminStateUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerBackendAddressAdminState(input) + return &out, nil +} + +type NatGatewaySkuName string + +const ( + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +func PossibleValuesForNatGatewaySkuName() []string { + return []string{ + string(NatGatewaySkuNameStandard), + } +} + +func (s *NatGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNatGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNatGatewaySkuName(input string) (*NatGatewaySkuName, error) { + vals := map[string]NatGatewaySkuName{ + "standard": NatGatewaySkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NatGatewaySkuName(input) + return &out, nil +} + +type NetworkInterfaceAuxiliaryMode string + +const ( + NetworkInterfaceAuxiliaryModeAcceleratedConnections NetworkInterfaceAuxiliaryMode = "AcceleratedConnections" + NetworkInterfaceAuxiliaryModeFloating NetworkInterfaceAuxiliaryMode = "Floating" + NetworkInterfaceAuxiliaryModeMaxConnections NetworkInterfaceAuxiliaryMode = "MaxConnections" + NetworkInterfaceAuxiliaryModeNone NetworkInterfaceAuxiliaryMode = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliaryMode() []string { + return []string{ + string(NetworkInterfaceAuxiliaryModeAcceleratedConnections), + string(NetworkInterfaceAuxiliaryModeFloating), + string(NetworkInterfaceAuxiliaryModeMaxConnections), + string(NetworkInterfaceAuxiliaryModeNone), + } +} + +func (s *NetworkInterfaceAuxiliaryMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliaryMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliaryMode(input string) (*NetworkInterfaceAuxiliaryMode, error) { + vals := map[string]NetworkInterfaceAuxiliaryMode{ + "acceleratedconnections": NetworkInterfaceAuxiliaryModeAcceleratedConnections, + "floating": NetworkInterfaceAuxiliaryModeFloating, + "maxconnections": NetworkInterfaceAuxiliaryModeMaxConnections, + "none": NetworkInterfaceAuxiliaryModeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliaryMode(input) + return &out, nil +} + +type NetworkInterfaceAuxiliarySku string + +const ( + NetworkInterfaceAuxiliarySkuAEight NetworkInterfaceAuxiliarySku = "A8" + NetworkInterfaceAuxiliarySkuAFour NetworkInterfaceAuxiliarySku = "A4" + NetworkInterfaceAuxiliarySkuAOne NetworkInterfaceAuxiliarySku = "A1" + NetworkInterfaceAuxiliarySkuATwo NetworkInterfaceAuxiliarySku = "A2" + NetworkInterfaceAuxiliarySkuNone NetworkInterfaceAuxiliarySku = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliarySku() []string { + return []string{ + string(NetworkInterfaceAuxiliarySkuAEight), + string(NetworkInterfaceAuxiliarySkuAFour), + string(NetworkInterfaceAuxiliarySkuAOne), + string(NetworkInterfaceAuxiliarySkuATwo), + string(NetworkInterfaceAuxiliarySkuNone), + } +} + +func (s *NetworkInterfaceAuxiliarySku) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliarySku(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliarySku(input string) (*NetworkInterfaceAuxiliarySku, error) { + vals := map[string]NetworkInterfaceAuxiliarySku{ + "a8": NetworkInterfaceAuxiliarySkuAEight, + "a4": NetworkInterfaceAuxiliarySkuAFour, + "a1": NetworkInterfaceAuxiliarySkuAOne, + "a2": NetworkInterfaceAuxiliarySkuATwo, + "none": NetworkInterfaceAuxiliarySkuNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliarySku(input) + return &out, nil +} + +type NetworkInterfaceMigrationPhase string + +const ( + NetworkInterfaceMigrationPhaseAbort NetworkInterfaceMigrationPhase = "Abort" + NetworkInterfaceMigrationPhaseCommit NetworkInterfaceMigrationPhase = "Commit" + NetworkInterfaceMigrationPhaseCommitted NetworkInterfaceMigrationPhase = "Committed" + NetworkInterfaceMigrationPhaseNone NetworkInterfaceMigrationPhase = "None" + NetworkInterfaceMigrationPhasePrepare NetworkInterfaceMigrationPhase = "Prepare" +) + +func PossibleValuesForNetworkInterfaceMigrationPhase() []string { + return []string{ + string(NetworkInterfaceMigrationPhaseAbort), + string(NetworkInterfaceMigrationPhaseCommit), + string(NetworkInterfaceMigrationPhaseCommitted), + string(NetworkInterfaceMigrationPhaseNone), + string(NetworkInterfaceMigrationPhasePrepare), + } +} + +func (s *NetworkInterfaceMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceMigrationPhase(input string) (*NetworkInterfaceMigrationPhase, error) { + vals := map[string]NetworkInterfaceMigrationPhase{ + "abort": NetworkInterfaceMigrationPhaseAbort, + "commit": NetworkInterfaceMigrationPhaseCommit, + "committed": NetworkInterfaceMigrationPhaseCommitted, + "none": NetworkInterfaceMigrationPhaseNone, + "prepare": NetworkInterfaceMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceMigrationPhase(input) + return &out, nil +} + +type NetworkInterfaceNicType string + +const ( + NetworkInterfaceNicTypeElastic NetworkInterfaceNicType = "Elastic" + NetworkInterfaceNicTypeStandard NetworkInterfaceNicType = "Standard" +) + +func PossibleValuesForNetworkInterfaceNicType() []string { + return []string{ + string(NetworkInterfaceNicTypeElastic), + string(NetworkInterfaceNicTypeStandard), + } +} + +func (s *NetworkInterfaceNicType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceNicType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceNicType(input string) (*NetworkInterfaceNicType, error) { + vals := map[string]NetworkInterfaceNicType{ + "elastic": NetworkInterfaceNicTypeElastic, + "standard": NetworkInterfaceNicTypeStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceNicType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type PublicIPAddressDnsSettingsDomainNameLabelScope string + +const ( + PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "NoReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "ResourceGroupReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "SubscriptionReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "TenantReuse" +) + +func PossibleValuesForPublicIPAddressDnsSettingsDomainNameLabelScope() []string { + return []string{ + string(PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse), + } +} + +func (s *PublicIPAddressDnsSettingsDomainNameLabelScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressDnsSettingsDomainNameLabelScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressDnsSettingsDomainNameLabelScope(input string) (*PublicIPAddressDnsSettingsDomainNameLabelScope, error) { + vals := map[string]PublicIPAddressDnsSettingsDomainNameLabelScope{ + "noreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse, + "resourcegroupreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse, + "subscriptionreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse, + "tenantreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressDnsSettingsDomainNameLabelScope(input) + return &out, nil +} + +type PublicIPAddressMigrationPhase string + +const ( + PublicIPAddressMigrationPhaseAbort PublicIPAddressMigrationPhase = "Abort" + PublicIPAddressMigrationPhaseCommit PublicIPAddressMigrationPhase = "Commit" + PublicIPAddressMigrationPhaseCommitted PublicIPAddressMigrationPhase = "Committed" + PublicIPAddressMigrationPhaseNone PublicIPAddressMigrationPhase = "None" + PublicIPAddressMigrationPhasePrepare PublicIPAddressMigrationPhase = "Prepare" +) + +func PossibleValuesForPublicIPAddressMigrationPhase() []string { + return []string{ + string(PublicIPAddressMigrationPhaseAbort), + string(PublicIPAddressMigrationPhaseCommit), + string(PublicIPAddressMigrationPhaseCommitted), + string(PublicIPAddressMigrationPhaseNone), + string(PublicIPAddressMigrationPhasePrepare), + } +} + +func (s *PublicIPAddressMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressMigrationPhase(input string) (*PublicIPAddressMigrationPhase, error) { + vals := map[string]PublicIPAddressMigrationPhase{ + "abort": PublicIPAddressMigrationPhaseAbort, + "commit": PublicIPAddressMigrationPhaseCommit, + "committed": PublicIPAddressMigrationPhaseCommitted, + "none": PublicIPAddressMigrationPhaseNone, + "prepare": PublicIPAddressMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressMigrationPhase(input) + return &out, nil +} + +type PublicIPAddressSkuName string + +const ( + PublicIPAddressSkuNameBasic PublicIPAddressSkuName = "Basic" + PublicIPAddressSkuNameStandard PublicIPAddressSkuName = "Standard" +) + +func PossibleValuesForPublicIPAddressSkuName() []string { + return []string{ + string(PublicIPAddressSkuNameBasic), + string(PublicIPAddressSkuNameStandard), + } +} + +func (s *PublicIPAddressSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuName(input string) (*PublicIPAddressSkuName, error) { + vals := map[string]PublicIPAddressSkuName{ + "basic": PublicIPAddressSkuNameBasic, + "standard": PublicIPAddressSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuName(input) + return &out, nil +} + +type PublicIPAddressSkuTier string + +const ( + PublicIPAddressSkuTierGlobal PublicIPAddressSkuTier = "Global" + PublicIPAddressSkuTierRegional PublicIPAddressSkuTier = "Regional" +) + +func PossibleValuesForPublicIPAddressSkuTier() []string { + return []string{ + string(PublicIPAddressSkuTierGlobal), + string(PublicIPAddressSkuTierRegional), + } +} + +func (s *PublicIPAddressSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuTier(input string) (*PublicIPAddressSkuTier, error) { + vals := map[string]PublicIPAddressSkuTier{ + "global": PublicIPAddressSkuTierGlobal, + "regional": PublicIPAddressSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuTier(input) + return &out, nil +} + +type RouteNextHopType string + +const ( + RouteNextHopTypeInternet RouteNextHopType = "Internet" + RouteNextHopTypeNone RouteNextHopType = "None" + RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" + RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" + RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" +) + +func PossibleValuesForRouteNextHopType() []string { + return []string{ + string(RouteNextHopTypeInternet), + string(RouteNextHopTypeNone), + string(RouteNextHopTypeVirtualAppliance), + string(RouteNextHopTypeVirtualNetworkGateway), + string(RouteNextHopTypeVnetLocal), + } +} + +func (s *RouteNextHopType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteNextHopType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteNextHopType(input string) (*RouteNextHopType, error) { + vals := map[string]RouteNextHopType{ + "internet": RouteNextHopTypeInternet, + "none": RouteNextHopTypeNone, + "virtualappliance": RouteNextHopTypeVirtualAppliance, + "virtualnetworkgateway": RouteNextHopTypeVirtualNetworkGateway, + "vnetlocal": RouteNextHopTypeVnetLocal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteNextHopType(input) + return &out, nil +} + +type SecurityRuleAccess string + +const ( + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +func PossibleValuesForSecurityRuleAccess() []string { + return []string{ + string(SecurityRuleAccessAllow), + string(SecurityRuleAccessDeny), + } +} + +func (s *SecurityRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleAccess(input string) (*SecurityRuleAccess, error) { + vals := map[string]SecurityRuleAccess{ + "allow": SecurityRuleAccessAllow, + "deny": SecurityRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleAccess(input) + return &out, nil +} + +type SecurityRuleDirection string + +const ( + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityRuleDirection() []string { + return []string{ + string(SecurityRuleDirectionInbound), + string(SecurityRuleDirectionOutbound), + } +} + +func (s *SecurityRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleDirection(input string) (*SecurityRuleDirection, error) { + vals := map[string]SecurityRuleDirection{ + "inbound": SecurityRuleDirectionInbound, + "outbound": SecurityRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleDirection(input) + return &out, nil +} + +type SecurityRuleProtocol string + +const ( + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + SecurityRuleProtocolAny SecurityRuleProtocol = "*" + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + SecurityRuleProtocolTcp SecurityRuleProtocol = "Tcp" + SecurityRuleProtocolUdp SecurityRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityRuleProtocol() []string { + return []string{ + string(SecurityRuleProtocolAh), + string(SecurityRuleProtocolAny), + string(SecurityRuleProtocolEsp), + string(SecurityRuleProtocolIcmp), + string(SecurityRuleProtocolTcp), + string(SecurityRuleProtocolUdp), + } +} + +func (s *SecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleProtocol(input string) (*SecurityRuleProtocol, error) { + vals := map[string]SecurityRuleProtocol{ + "ah": SecurityRuleProtocolAh, + "*": SecurityRuleProtocolAny, + "esp": SecurityRuleProtocolEsp, + "icmp": SecurityRuleProtocolIcmp, + "tcp": SecurityRuleProtocolTcp, + "udp": SecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleProtocol(input) + return &out, nil +} + +type SharingScope string + +const ( + SharingScopeDelegatedServices SharingScope = "DelegatedServices" + SharingScopeTenant SharingScope = "Tenant" +) + +func PossibleValuesForSharingScope() []string { + return []string{ + string(SharingScopeDelegatedServices), + string(SharingScopeTenant), + } +} + +func (s *SharingScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSharingScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSharingScope(input string) (*SharingScope, error) { + vals := map[string]SharingScope{ + "delegatedservices": SharingScopeDelegatedServices, + "tenant": SharingScopeTenant, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SharingScope(input) + return &out, nil +} + +type SyncMode string + +const ( + SyncModeAutomatic SyncMode = "Automatic" + SyncModeManual SyncMode = "Manual" +) + +func PossibleValuesForSyncMode() []string { + return []string{ + string(SyncModeAutomatic), + string(SyncModeManual), + } +} + +func (s *SyncMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSyncMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSyncMode(input string) (*SyncMode, error) { + vals := map[string]SyncMode{ + "automatic": SyncModeAutomatic, + "manual": SyncModeManual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SyncMode(input) + return &out, nil +} + +type TransportProtocol string + +const ( + TransportProtocolAll TransportProtocol = "All" + TransportProtocolTcp TransportProtocol = "Tcp" + TransportProtocolUdp TransportProtocol = "Udp" +) + +func PossibleValuesForTransportProtocol() []string { + return []string{ + string(TransportProtocolAll), + string(TransportProtocolTcp), + string(TransportProtocolUdp), + } +} + +func (s *TransportProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseTransportProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseTransportProtocol(input string) (*TransportProtocol, error) { + vals := map[string]TransportProtocol{ + "all": TransportProtocolAll, + "tcp": TransportProtocolTcp, + "udp": TransportProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := TransportProtocol(input) + return &out, nil +} + +type VirtualNetworkPrivateEndpointNetworkPolicies string + +const ( + VirtualNetworkPrivateEndpointNetworkPoliciesDisabled VirtualNetworkPrivateEndpointNetworkPolicies = "Disabled" + VirtualNetworkPrivateEndpointNetworkPoliciesEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "Enabled" + VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "NetworkSecurityGroupEnabled" + VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "RouteTableEnabled" +) + +func PossibleValuesForVirtualNetworkPrivateEndpointNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateEndpointNetworkPoliciesDisabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled), + } +} + +func (s *VirtualNetworkPrivateEndpointNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateEndpointNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateEndpointNetworkPolicies(input string) (*VirtualNetworkPrivateEndpointNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateEndpointNetworkPolicies{ + "disabled": VirtualNetworkPrivateEndpointNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateEndpointNetworkPoliciesEnabled, + "networksecuritygroupenabled": VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled, + "routetableenabled": VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateEndpointNetworkPolicies(input) + return &out, nil +} + +type VirtualNetworkPrivateLinkServiceNetworkPolicies string + +const ( + VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Disabled" + VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Enabled" +) + +func PossibleValuesForVirtualNetworkPrivateLinkServiceNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled), + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled), + } +} + +func (s *VirtualNetworkPrivateLinkServiceNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateLinkServiceNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateLinkServiceNetworkPolicies(input string) (*VirtualNetworkPrivateLinkServiceNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateLinkServiceNetworkPolicies{ + "disabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateLinkServiceNetworkPolicies(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/id_providercloudservice.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/id_providercloudservice.go new file mode 100644 index 00000000000..2750d8acfa0 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/id_providercloudservice.go @@ -0,0 +1,130 @@ +package cloudservicepublicipaddresses + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ProviderCloudServiceId{}) +} + +var _ resourceids.ResourceId = &ProviderCloudServiceId{} + +// ProviderCloudServiceId is a struct representing the Resource ID for a Provider Cloud Service +type ProviderCloudServiceId struct { + SubscriptionId string + ResourceGroupName string + CloudServiceName string +} + +// NewProviderCloudServiceID returns a new ProviderCloudServiceId struct +func NewProviderCloudServiceID(subscriptionId string, resourceGroupName string, cloudServiceName string) ProviderCloudServiceId { + return ProviderCloudServiceId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + CloudServiceName: cloudServiceName, + } +} + +// ParseProviderCloudServiceID parses 'input' into a ProviderCloudServiceId +func ParseProviderCloudServiceID(input string) (*ProviderCloudServiceId, error) { + parser := resourceids.NewParserFromResourceIdType(&ProviderCloudServiceId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ProviderCloudServiceId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseProviderCloudServiceIDInsensitively parses 'input' case-insensitively into a ProviderCloudServiceId +// note: this method should only be used for API response data and not user input +func ParseProviderCloudServiceIDInsensitively(input string) (*ProviderCloudServiceId, error) { + parser := resourceids.NewParserFromResourceIdType(&ProviderCloudServiceId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ProviderCloudServiceId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ProviderCloudServiceId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.CloudServiceName, ok = input.Parsed["cloudServiceName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "cloudServiceName", input) + } + + return nil +} + +// ValidateProviderCloudServiceID checks that 'input' can be parsed as a Provider Cloud Service ID +func ValidateProviderCloudServiceID(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 := ParseProviderCloudServiceID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Provider Cloud Service ID +func (id ProviderCloudServiceId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Compute/cloudServices/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.CloudServiceName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Provider Cloud Service ID +func (id ProviderCloudServiceId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftCompute", "Microsoft.Compute", "Microsoft.Compute"), + resourceids.StaticSegment("staticCloudServices", "cloudServices", "cloudServices"), + resourceids.UserSpecifiedSegment("cloudServiceName", "cloudServiceValue"), + } +} + +// String returns a human-readable description of this Provider Cloud Service ID +func (id ProviderCloudServiceId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Cloud Service Name: %q", id.CloudServiceName), + } + return fmt.Sprintf("Provider Cloud Service (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/id_providercloudservice_test.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/id_providercloudservice_test.go new file mode 100644 index 00000000000..8e5ffd9994a --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/id_providercloudservice_test.go @@ -0,0 +1,282 @@ +package cloudservicepublicipaddresses + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ProviderCloudServiceId{} + +func TestNewProviderCloudServiceID(t *testing.T) { + id := NewProviderCloudServiceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "cloudServiceValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.CloudServiceName != "cloudServiceValue" { + t.Fatalf("Expected %q but got %q for Segment 'CloudServiceName'", id.CloudServiceName, "cloudServiceValue") + } +} + +func TestFormatProviderCloudServiceID(t *testing.T) { + actual := NewProviderCloudServiceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "cloudServiceValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseProviderCloudServiceID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ProviderCloudServiceId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue", + Expected: &ProviderCloudServiceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + CloudServiceName: "cloudServiceValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseProviderCloudServiceID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.CloudServiceName != v.Expected.CloudServiceName { + t.Fatalf("Expected %q but got %q for CloudServiceName", v.Expected.CloudServiceName, actual.CloudServiceName) + } + + } +} + +func TestParseProviderCloudServiceIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ProviderCloudServiceId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/cLoUdSeRvIcEs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue", + Expected: &ProviderCloudServiceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + CloudServiceName: "cloudServiceValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/cLoUdSeRvIcEs/cLoUdSeRvIcEvAlUe", + Expected: &ProviderCloudServiceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + CloudServiceName: "cLoUdSeRvIcEvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/cLoUdSeRvIcEs/cLoUdSeRvIcEvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseProviderCloudServiceIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.CloudServiceName != v.Expected.CloudServiceName { + t.Fatalf("Expected %q but got %q for CloudServiceName", v.Expected.CloudServiceName, actual.CloudServiceName) + } + + } +} + +func TestSegmentsForProviderCloudServiceId(t *testing.T) { + segments := ProviderCloudServiceId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ProviderCloudServiceId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/method_publicipaddressesgetcloudservicepublicipaddress.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/method_publicipaddressesgetcloudservicepublicipaddress.go new file mode 100644 index 00000000000..b9661797464 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/method_publicipaddressesgetcloudservicepublicipaddress.go @@ -0,0 +1,84 @@ +package cloudservicepublicipaddresses + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressesGetCloudServicePublicIPAddressOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *PublicIPAddress +} + +type PublicIPAddressesGetCloudServicePublicIPAddressOperationOptions struct { + Expand *string +} + +func DefaultPublicIPAddressesGetCloudServicePublicIPAddressOperationOptions() PublicIPAddressesGetCloudServicePublicIPAddressOperationOptions { + return PublicIPAddressesGetCloudServicePublicIPAddressOperationOptions{} +} + +func (o PublicIPAddressesGetCloudServicePublicIPAddressOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o PublicIPAddressesGetCloudServicePublicIPAddressOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o PublicIPAddressesGetCloudServicePublicIPAddressOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// PublicIPAddressesGetCloudServicePublicIPAddress ... +func (c CloudServicePublicIPAddressesClient) PublicIPAddressesGetCloudServicePublicIPAddress(ctx context.Context, id commonids.CloudServicesPublicIPAddressId, options PublicIPAddressesGetCloudServicePublicIPAddressOperationOptions) (result PublicIPAddressesGetCloudServicePublicIPAddressOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model PublicIPAddress + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/method_publicipaddresseslistcloudservicepublicipaddresses.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/method_publicipaddresseslistcloudservicepublicipaddresses.go new file mode 100644 index 00000000000..3101695e6b4 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/method_publicipaddresseslistcloudservicepublicipaddresses.go @@ -0,0 +1,92 @@ +package cloudservicepublicipaddresses + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressesListCloudServicePublicIPAddressesOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]PublicIPAddress +} + +type PublicIPAddressesListCloudServicePublicIPAddressesCompleteResult struct { + LatestHttpResponse *http.Response + Items []PublicIPAddress +} + +// PublicIPAddressesListCloudServicePublicIPAddresses ... +func (c CloudServicePublicIPAddressesClient) PublicIPAddressesListCloudServicePublicIPAddresses(ctx context.Context, id ProviderCloudServiceId) (result PublicIPAddressesListCloudServicePublicIPAddressesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/publicIPAddresses", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]PublicIPAddress `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// PublicIPAddressesListCloudServicePublicIPAddressesComplete retrieves all the results into a single object +func (c CloudServicePublicIPAddressesClient) PublicIPAddressesListCloudServicePublicIPAddressesComplete(ctx context.Context, id ProviderCloudServiceId) (PublicIPAddressesListCloudServicePublicIPAddressesCompleteResult, error) { + return c.PublicIPAddressesListCloudServicePublicIPAddressesCompleteMatchingPredicate(ctx, id, PublicIPAddressOperationPredicate{}) +} + +// PublicIPAddressesListCloudServicePublicIPAddressesCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c CloudServicePublicIPAddressesClient) PublicIPAddressesListCloudServicePublicIPAddressesCompleteMatchingPredicate(ctx context.Context, id ProviderCloudServiceId, predicate PublicIPAddressOperationPredicate) (result PublicIPAddressesListCloudServicePublicIPAddressesCompleteResult, err error) { + items := make([]PublicIPAddress, 0) + + resp, err := c.PublicIPAddressesListCloudServicePublicIPAddresses(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = PublicIPAddressesListCloudServicePublicIPAddressesCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/method_publicipaddresseslistcloudserviceroleinstancepublicipaddresses.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/method_publicipaddresseslistcloudserviceroleinstancepublicipaddresses.go new file mode 100644 index 00000000000..1f8d938cb07 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/method_publicipaddresseslistcloudserviceroleinstancepublicipaddresses.go @@ -0,0 +1,93 @@ +package cloudservicepublicipaddresses + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressesListCloudServiceRoleInstancePublicIPAddressesOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]PublicIPAddress +} + +type PublicIPAddressesListCloudServiceRoleInstancePublicIPAddressesCompleteResult struct { + LatestHttpResponse *http.Response + Items []PublicIPAddress +} + +// PublicIPAddressesListCloudServiceRoleInstancePublicIPAddresses ... +func (c CloudServicePublicIPAddressesClient) PublicIPAddressesListCloudServiceRoleInstancePublicIPAddresses(ctx context.Context, id commonids.CloudServicesIPConfigurationId) (result PublicIPAddressesListCloudServiceRoleInstancePublicIPAddressesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/publicIPAddresses", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]PublicIPAddress `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// PublicIPAddressesListCloudServiceRoleInstancePublicIPAddressesComplete retrieves all the results into a single object +func (c CloudServicePublicIPAddressesClient) PublicIPAddressesListCloudServiceRoleInstancePublicIPAddressesComplete(ctx context.Context, id commonids.CloudServicesIPConfigurationId) (PublicIPAddressesListCloudServiceRoleInstancePublicIPAddressesCompleteResult, error) { + return c.PublicIPAddressesListCloudServiceRoleInstancePublicIPAddressesCompleteMatchingPredicate(ctx, id, PublicIPAddressOperationPredicate{}) +} + +// PublicIPAddressesListCloudServiceRoleInstancePublicIPAddressesCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c CloudServicePublicIPAddressesClient) PublicIPAddressesListCloudServiceRoleInstancePublicIPAddressesCompleteMatchingPredicate(ctx context.Context, id commonids.CloudServicesIPConfigurationId, predicate PublicIPAddressOperationPredicate) (result PublicIPAddressesListCloudServiceRoleInstancePublicIPAddressesCompleteResult, err error) { + items := make([]PublicIPAddress, 0) + + resp, err := c.PublicIPAddressesListCloudServiceRoleInstancePublicIPAddresses(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = PublicIPAddressesListCloudServiceRoleInstancePublicIPAddressesCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_applicationgatewaybackendaddress.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_applicationgatewaybackendaddress.go new file mode 100644 index 00000000000..da0843dfe84 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_applicationgatewaybackendaddress.go @@ -0,0 +1,9 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddress struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_applicationgatewaybackendaddresspool.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_applicationgatewaybackendaddresspool.go new file mode 100644 index 00000000000..0752ac86606 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_applicationgatewaybackendaddresspool.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_applicationgatewaybackendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_applicationgatewaybackendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..c5e25b3ac40 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_applicationgatewaybackendaddresspoolpropertiesformat.go @@ -0,0 +1,10 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPoolPropertiesFormat struct { + BackendAddresses *[]ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"` + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_applicationgatewayipconfiguration.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_applicationgatewayipconfiguration.go new file mode 100644 index 00000000000..3301a914b9a --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_applicationgatewayipconfiguration.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_applicationgatewayipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_applicationgatewayipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..d142ad28f06 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_applicationgatewayipconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..db43b3a90d7 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..26c6e3c6d63 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_backendaddresspool.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_backendaddresspool.go new file mode 100644 index 00000000000..11a0db48c3e --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_backendaddresspool.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_backendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_backendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..8b7c7a5e9a7 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_backendaddresspoolpropertiesformat.go @@ -0,0 +1,19 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPoolPropertiesFormat struct { + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + DrainPeriodInSeconds *int64 `json:"drainPeriodInSeconds,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancerBackendAddresses *[]LoadBalancerBackendAddress `json:"loadBalancerBackendAddresses,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + Location *string `json:"location,omitempty"` + OutboundRule *SubResource `json:"outboundRule,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SyncMode *SyncMode `json:"syncMode,omitempty"` + TunnelInterfaces *[]GatewayLoadBalancerTunnelInterface `json:"tunnelInterfaces,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_customdnsconfigpropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_customdnsconfigpropertiesformat.go new file mode 100644 index 00000000000..852fda62a32 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_customdnsconfigpropertiesformat.go @@ -0,0 +1,9 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomDnsConfigPropertiesFormat struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_ddossettings.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_ddossettings.go new file mode 100644 index 00000000000..e76df1830ad --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_ddossettings.go @@ -0,0 +1,9 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettings struct { + DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"` + ProtectionMode *DdosSettingsProtectionMode `json:"protectionMode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_delegation.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_delegation.go new file mode 100644 index 00000000000..37ba2738f03 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_delegation.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Delegation struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceDelegationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_flowlog.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_flowlog.go new file mode 100644 index 00000000000..49c418d2b9e --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_flowlog.go @@ -0,0 +1,19 @@ +package cloudservicepublicipaddresses + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLog struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FlowLogPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_flowlogformatparameters.go new file mode 100644 index 00000000000..22cce73755f --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_flowlogpropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_flowlogpropertiesformat.go new file mode 100644 index 00000000000..81d0d4ee738 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_flowlogpropertiesformat.go @@ -0,0 +1,15 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogPropertiesFormat struct { + Enabled *bool `json:"enabled,omitempty"` + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` + TargetResourceGuid *string `json:"targetResourceGuid,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_frontendipconfiguration.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_frontendipconfiguration.go new file mode 100644 index 00000000000..6ef8b18a318 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_frontendipconfiguration.go @@ -0,0 +1,17 @@ +package cloudservicepublicipaddresses + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_frontendipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_frontendipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..d76b004d004 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_frontendipconfigurationpropertiesformat.go @@ -0,0 +1,19 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfigurationPropertiesFormat struct { + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + InboundNatPools *[]SubResource `json:"inboundNatPools,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_gatewayloadbalancertunnelinterface.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_gatewayloadbalancertunnelinterface.go new file mode 100644 index 00000000000..623add5b390 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_gatewayloadbalancertunnelinterface.go @@ -0,0 +1,11 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayLoadBalancerTunnelInterface struct { + Identifier *int64 `json:"identifier,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *GatewayLoadBalancerTunnelProtocol `json:"protocol,omitempty"` + Type *GatewayLoadBalancerTunnelInterfaceType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_inboundnatrule.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_inboundnatrule.go new file mode 100644 index 00000000000..2bf55038c2e --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_inboundnatrule.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundNatRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_inboundnatrulepropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_inboundnatrulepropertiesformat.go new file mode 100644 index 00000000000..9e9fd000882 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_inboundnatrulepropertiesformat.go @@ -0,0 +1,19 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendIPConfiguration *NetworkInterfaceIPConfiguration `json:"backendIPConfiguration,omitempty"` + BackendPort *int64 `json:"backendPort,omitempty"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + FrontendPortRangeEnd *int64 `json:"frontendPortRangeEnd,omitempty"` + FrontendPortRangeStart *int64 `json:"frontendPortRangeStart,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol *TransportProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_ipconfiguration.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_ipconfiguration.go new file mode 100644 index 00000000000..7aa8cbae351 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_ipconfiguration.go @@ -0,0 +1,11 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_ipconfigurationprofile.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_ipconfigurationprofile.go new file mode 100644 index 00000000000..cae99b1bc9d --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_ipconfigurationprofile.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationProfilePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_ipconfigurationprofilepropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_ipconfigurationprofilepropertiesformat.go new file mode 100644 index 00000000000..d32ff6abc99 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_ipconfigurationprofilepropertiesformat.go @@ -0,0 +1,9 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfilePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_ipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_ipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..f1c212d87d9 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_ipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_iptag.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_iptag.go new file mode 100644 index 00000000000..9cd0c420107 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_iptag.go @@ -0,0 +1,9 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPTag struct { + IPTagType *string `json:"ipTagType,omitempty"` + Tag *string `json:"tag,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_loadbalancerbackendaddress.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_loadbalancerbackendaddress.go new file mode 100644 index 00000000000..e95c784d170 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_loadbalancerbackendaddress.go @@ -0,0 +1,9 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddress struct { + Name *string `json:"name,omitempty"` + Properties *LoadBalancerBackendAddressPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_loadbalancerbackendaddresspropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_loadbalancerbackendaddresspropertiesformat.go new file mode 100644 index 00000000000..f2cc5fa6b36 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_loadbalancerbackendaddresspropertiesformat.go @@ -0,0 +1,14 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPropertiesFormat struct { + AdminState *LoadBalancerBackendAddressAdminState `json:"adminState,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + InboundNatRulesPortMapping *[]NatRulePortMapping `json:"inboundNatRulesPortMapping,omitempty"` + LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIPConfiguration,omitempty"` + NetworkInterfaceIPConfiguration *SubResource `json:"networkInterfaceIPConfiguration,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_natgateway.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_natgateway.go new file mode 100644 index 00000000000..d2e737891d0 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_natgateway.go @@ -0,0 +1,20 @@ +package cloudservicepublicipaddresses + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"` + Sku *NatGatewaySku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_natgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_natgatewaypropertiesformat.go new file mode 100644 index 00000000000..6e1be1ad8f0 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_natgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayPropertiesFormat struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]SubResource `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_natgatewaysku.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_natgatewaysku.go new file mode 100644 index 00000000000..0e1a31e6f56 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_natgatewaysku.go @@ -0,0 +1,8 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySku struct { + Name *NatGatewaySkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_natruleportmapping.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_natruleportmapping.go new file mode 100644 index 00000000000..9f648ba378f --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_natruleportmapping.go @@ -0,0 +1,10 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulePortMapping struct { + BackendPort *int64 `json:"backendPort,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + InboundNatRuleName *string `json:"inboundNatRuleName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterface.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterface.go new file mode 100644 index 00000000000..8fa35f5b27b --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterface.go @@ -0,0 +1,19 @@ +package cloudservicepublicipaddresses + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterface struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfacePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterfacednssettings.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterfacednssettings.go new file mode 100644 index 00000000000..7841bbdaa74 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterfacednssettings.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceDnsSettings struct { + AppliedDnsServers *[]string `json:"appliedDnsServers,omitempty"` + DnsServers *[]string `json:"dnsServers,omitempty"` + InternalDnsNameLabel *string `json:"internalDnsNameLabel,omitempty"` + InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty"` + InternalFqdn *string `json:"internalFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterfaceipconfiguration.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterfaceipconfiguration.go new file mode 100644 index 00000000000..2060396975d --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterfaceipconfiguration.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go new file mode 100644 index 00000000000..331b8b4a8b7 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go @@ -0,0 +1,10 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties struct { + Fqdns *[]string `json:"fqdns,omitempty"` + GroupId *string `json:"groupId,omitempty"` + RequiredMemberName *string `json:"requiredMemberName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterfaceipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterfaceipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..7d326578ece --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterfaceipconfigurationpropertiesformat.go @@ -0,0 +1,22 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPropertiesFormat struct { + ApplicationGatewayBackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"applicationGatewayBackendAddressPools,omitempty"` + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + LoadBalancerBackendAddressPools *[]BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"` + LoadBalancerInboundNatRules *[]InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressPrefixLength *int64 `json:"privateIPAddressPrefixLength,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + PrivateLinkConnectionProperties *NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties `json:"privateLinkConnectionProperties,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` + VirtualNetworkTaps *[]VirtualNetworkTap `json:"virtualNetworkTaps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterfacepropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterfacepropertiesformat.go new file mode 100644 index 00000000000..32854c40bbf --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterfacepropertiesformat.go @@ -0,0 +1,29 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfacePropertiesFormat struct { + AuxiliaryMode *NetworkInterfaceAuxiliaryMode `json:"auxiliaryMode,omitempty"` + AuxiliarySku *NetworkInterfaceAuxiliarySku `json:"auxiliarySku,omitempty"` + DisableTcpStateTracking *bool `json:"disableTcpStateTracking,omitempty"` + DnsSettings *NetworkInterfaceDnsSettings `json:"dnsSettings,omitempty"` + DscpConfiguration *SubResource `json:"dscpConfiguration,omitempty"` + EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"` + EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"` + HostedWorkloads *[]string `json:"hostedWorkloads,omitempty"` + IPConfigurations *[]NetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + MacAddress *string `json:"macAddress,omitempty"` + MigrationPhase *NetworkInterfaceMigrationPhase `json:"migrationPhase,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + NicType *NetworkInterfaceNicType `json:"nicType,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkService *PrivateLinkService `json:"privateLinkService,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + TapConfigurations *[]NetworkInterfaceTapConfiguration `json:"tapConfigurations,omitempty"` + VirtualMachine *SubResource `json:"virtualMachine,omitempty"` + VnetEncryptionSupported *bool `json:"vnetEncryptionSupported,omitempty"` + WorkloadType *string `json:"workloadType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterfacetapconfiguration.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterfacetapconfiguration.go new file mode 100644 index 00000000000..417528f526c --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterfacetapconfiguration.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceTapConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterfacetapconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterfacetapconfigurationpropertiesformat.go new file mode 100644 index 00000000000..800ba33402b --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networkinterfacetapconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualNetworkTap *VirtualNetworkTap `json:"virtualNetworkTap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networksecuritygroup.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networksecuritygroup.go new file mode 100644 index 00000000000..4a17b77a5f7 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networksecuritygroup.go @@ -0,0 +1,14 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networksecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networksecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..75b57179c0e --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_networksecuritygrouppropertiesformat.go @@ -0,0 +1,15 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupPropertiesFormat struct { + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + FlowLogs *[]FlowLog `json:"flowLogs,omitempty"` + FlushConnection *bool `json:"flushConnection,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privateendpoint.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privateendpoint.go new file mode 100644 index 00000000000..092678d20e9 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privateendpoint.go @@ -0,0 +1,19 @@ +package cloudservicepublicipaddresses + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpoint struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privateendpointconnection.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privateendpointconnection.go new file mode 100644 index 00000000000..390ed6a1a9e --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privateendpointconnection.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privateendpointconnectionproperties.go new file mode 100644 index 00000000000..a4a672bb9ea --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privateendpointconnectionproperties.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateEndpointLocation *string `json:"privateEndpointLocation,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privateendpointipconfiguration.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privateendpointipconfiguration.go new file mode 100644 index 00000000000..f4475d0d46b --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privateendpointipconfiguration.go @@ -0,0 +1,11 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privateendpointipconfigurationproperties.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privateendpointipconfigurationproperties.go new file mode 100644 index 00000000000..cd3b594722d --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privateendpointipconfigurationproperties.go @@ -0,0 +1,10 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfigurationProperties struct { + GroupId *string `json:"groupId,omitempty"` + MemberName *string `json:"memberName,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privateendpointproperties.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privateendpointproperties.go new file mode 100644 index 00000000000..b6fab9bddb7 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privateendpointproperties.go @@ -0,0 +1,16 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointProperties struct { + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + CustomDnsConfigs *[]CustomDnsConfigPropertiesFormat `json:"customDnsConfigs,omitempty"` + CustomNetworkInterfaceName *string `json:"customNetworkInterfaceName,omitempty"` + IPConfigurations *[]PrivateEndpointIPConfiguration `json:"ipConfigurations,omitempty"` + ManualPrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"manualPrivateLinkServiceConnections,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"privateLinkServiceConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privatelinkservice.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privatelinkservice.go new file mode 100644 index 00000000000..47d7bc6cfba --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privatelinkservice.go @@ -0,0 +1,19 @@ +package cloudservicepublicipaddresses + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkService struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privatelinkserviceconnection.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privatelinkserviceconnection.go new file mode 100644 index 00000000000..c2e1ed2f2bb --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privatelinkserviceconnection.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privatelinkserviceconnectionproperties.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privatelinkserviceconnectionproperties.go new file mode 100644 index 00000000000..12d313e2c8e --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privatelinkserviceconnectionproperties.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionProperties struct { + GroupIds *[]string `json:"groupIds,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + PrivateLinkServiceId *string `json:"privateLinkServiceId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestMessage *string `json:"requestMessage,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privatelinkserviceconnectionstate.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privatelinkserviceconnectionstate.go new file mode 100644 index 00000000000..9c295f72e4e --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privatelinkserviceconnectionstate.go @@ -0,0 +1,10 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionState struct { + ActionsRequired *string `json:"actionsRequired,omitempty"` + Description *string `json:"description,omitempty"` + Status *string `json:"status,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privatelinkserviceipconfiguration.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privatelinkserviceipconfiguration.go new file mode 100644 index 00000000000..2293fa06105 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privatelinkserviceipconfiguration.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privatelinkserviceipconfigurationproperties.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privatelinkserviceipconfigurationproperties.go new file mode 100644 index 00000000000..f0b249690b3 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privatelinkserviceipconfigurationproperties.go @@ -0,0 +1,13 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privatelinkserviceproperties.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privatelinkserviceproperties.go new file mode 100644 index 00000000000..fea2fefdf6d --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_privatelinkserviceproperties.go @@ -0,0 +1,17 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceProperties struct { + Alias *string `json:"alias,omitempty"` + AutoApproval *ResourceSet `json:"autoApproval,omitempty"` + EnableProxyProtocol *bool `json:"enableProxyProtocol,omitempty"` + Fqdns *[]string `json:"fqdns,omitempty"` + IPConfigurations *[]PrivateLinkServiceIPConfiguration `json:"ipConfigurations,omitempty"` + LoadBalancerFrontendIPConfigurations *[]FrontendIPConfiguration `json:"loadBalancerFrontendIpConfigurations,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Visibility *ResourceSet `json:"visibility,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_publicipaddress.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_publicipaddress.go new file mode 100644 index 00000000000..0d91d1ce77a --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_publicipaddress.go @@ -0,0 +1,22 @@ +package cloudservicepublicipaddresses + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddress struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PublicIPAddressPropertiesFormat `json:"properties,omitempty"` + Sku *PublicIPAddressSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_publicipaddressdnssettings.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_publicipaddressdnssettings.go new file mode 100644 index 00000000000..59fc873f762 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_publicipaddressdnssettings.go @@ -0,0 +1,11 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressDnsSettings struct { + DomainNameLabel *string `json:"domainNameLabel,omitempty"` + DomainNameLabelScope *PublicIPAddressDnsSettingsDomainNameLabelScope `json:"domainNameLabelScope,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + ReverseFqdn *string `json:"reverseFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_publicipaddresspropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_publicipaddresspropertiesformat.go new file mode 100644 index 00000000000..5a1a9082ad9 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_publicipaddresspropertiesformat.go @@ -0,0 +1,23 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressPropertiesFormat struct { + DdosSettings *DdosSettings `json:"ddosSettings,omitempty"` + DeleteOption *DeleteOptions `json:"deleteOption,omitempty"` + DnsSettings *PublicIPAddressDnsSettings `json:"dnsSettings,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty"` + IPTags *[]IPTag `json:"ipTags,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + LinkedPublicIPAddress *PublicIPAddress `json:"linkedPublicIPAddress,omitempty"` + MigrationPhase *PublicIPAddressMigrationPhase `json:"migrationPhase,omitempty"` + NatGateway *NatGateway `json:"natGateway,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"` + PublicIPAllocationMethod *IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServicePublicIPAddress *PublicIPAddress `json:"servicePublicIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_publicipaddresssku.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_publicipaddresssku.go new file mode 100644 index 00000000000..0d24d3ce3e2 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_publicipaddresssku.go @@ -0,0 +1,9 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressSku struct { + Name *PublicIPAddressSkuName `json:"name,omitempty"` + Tier *PublicIPAddressSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_resourcenavigationlink.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_resourcenavigationlink.go new file mode 100644 index 00000000000..a374b51e3ce --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_resourcenavigationlink.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ResourceNavigationLinkFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_resourcenavigationlinkformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_resourcenavigationlinkformat.go new file mode 100644 index 00000000000..bb8074b7c24 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_resourcenavigationlinkformat.go @@ -0,0 +1,10 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLinkFormat struct { + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_resourceset.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_resourceset.go new file mode 100644 index 00000000000..ea408a54b5a --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_resourceset.go @@ -0,0 +1,8 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceSet struct { + Subscriptions *[]string `json:"subscriptions,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..a92e570a340 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_route.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_route.go new file mode 100644 index 00000000000..ca309e6a8db --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_route.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Route struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RoutePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_routepropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_routepropertiesformat.go new file mode 100644 index 00000000000..e981b239ff0 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_routepropertiesformat.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutePropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + HasBgpOverride *bool `json:"hasBgpOverride,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + NextHopType RouteNextHopType `json:"nextHopType"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_routetable.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_routetable.go new file mode 100644 index 00000000000..cfe4b1aaec3 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_routetable.go @@ -0,0 +1,14 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTable struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteTablePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_routetablepropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_routetablepropertiesformat.go new file mode 100644 index 00000000000..14537e9f6ea --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_routetablepropertiesformat.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTablePropertiesFormat struct { + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Routes *[]Route `json:"routes,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_securityrule.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_securityrule.go new file mode 100644 index 00000000000..68880b23db6 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_securityrule.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_securityrulepropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_securityrulepropertiesformat.go new file mode 100644 index 00000000000..3918c59b2ce --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_securityrulepropertiesformat.go @@ -0,0 +1,23 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulePropertiesFormat struct { + Access SecurityRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction SecurityRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_serviceassociationlink.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_serviceassociationlink.go new file mode 100644 index 00000000000..18402efabea --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_serviceassociationlink.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceAssociationLinkPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_serviceassociationlinkpropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_serviceassociationlinkpropertiesformat.go new file mode 100644 index 00000000000..283dae7d051 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_serviceassociationlinkpropertiesformat.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLinkPropertiesFormat struct { + AllowDelete *bool `json:"allowDelete,omitempty"` + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + Locations *[]string `json:"locations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_servicedelegationpropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_servicedelegationpropertiesformat.go new file mode 100644 index 00000000000..cb30d331149 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_servicedelegationpropertiesformat.go @@ -0,0 +1,10 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceDelegationPropertiesFormat struct { + Actions *[]string `json:"actions,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_serviceendpointpolicy.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_serviceendpointpolicy.go new file mode 100644 index 00000000000..51af3fd8470 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_serviceendpointpolicy.go @@ -0,0 +1,15 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Kind *string `json:"kind,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_serviceendpointpolicydefinition.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_serviceendpointpolicydefinition.go new file mode 100644 index 00000000000..84bd144ecd4 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_serviceendpointpolicydefinition.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinition struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_serviceendpointpolicydefinitionpropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_serviceendpointpolicydefinitionpropertiesformat.go new file mode 100644 index 00000000000..723f9f28975 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_serviceendpointpolicydefinitionpropertiesformat.go @@ -0,0 +1,11 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionPropertiesFormat struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` + ServiceResources *[]string `json:"serviceResources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_serviceendpointpolicypropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_serviceendpointpolicypropertiesformat.go new file mode 100644 index 00000000000..de8c74ebf8a --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_serviceendpointpolicypropertiesformat.go @@ -0,0 +1,13 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyPropertiesFormat struct { + ContextualServiceEndpointPolicies *[]string `json:"contextualServiceEndpointPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServiceAlias *string `json:"serviceAlias,omitempty"` + ServiceEndpointPolicyDefinitions *[]ServiceEndpointPolicyDefinition `json:"serviceEndpointPolicyDefinitions,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_serviceendpointpropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_serviceendpointpropertiesformat.go new file mode 100644 index 00000000000..1e4f0c0bb52 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_serviceendpointpropertiesformat.go @@ -0,0 +1,11 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPropertiesFormat struct { + Locations *[]string `json:"locations,omitempty"` + NetworkIdentifier *SubResource `json:"networkIdentifier,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_subnet.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_subnet.go new file mode 100644 index 00000000000..4ae7149a7a9 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_subnet.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Subnet struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SubnetPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_subnetpropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_subnetpropertiesformat.go new file mode 100644 index 00000000000..ee48b19d865 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_subnetpropertiesformat.go @@ -0,0 +1,28 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + ApplicationGatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"applicationGatewayIPConfigurations,omitempty"` + DefaultOutboundAccess *bool `json:"defaultOutboundAccess,omitempty"` + Delegations *[]Delegation `json:"delegations,omitempty"` + IPAllocations *[]SubResource `json:"ipAllocations,omitempty"` + IPConfigurationProfiles *[]IPConfigurationProfile `json:"ipConfigurationProfiles,omitempty"` + IPConfigurations *[]IPConfiguration `json:"ipConfigurations,omitempty"` + NatGateway *SubResource `json:"natGateway,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + PrivateEndpointNetworkPolicies *VirtualNetworkPrivateEndpointNetworkPolicies `json:"privateEndpointNetworkPolicies,omitempty"` + PrivateEndpoints *[]PrivateEndpoint `json:"privateEndpoints,omitempty"` + PrivateLinkServiceNetworkPolicies *VirtualNetworkPrivateLinkServiceNetworkPolicies `json:"privateLinkServiceNetworkPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Purpose *string `json:"purpose,omitempty"` + ResourceNavigationLinks *[]ResourceNavigationLink `json:"resourceNavigationLinks,omitempty"` + RouteTable *RouteTable `json:"routeTable,omitempty"` + ServiceAssociationLinks *[]ServiceAssociationLink `json:"serviceAssociationLinks,omitempty"` + ServiceEndpointPolicies *[]ServiceEndpointPolicy `json:"serviceEndpointPolicies,omitempty"` + ServiceEndpoints *[]ServiceEndpointPropertiesFormat `json:"serviceEndpoints,omitempty"` + SharingScope *SharingScope `json:"sharingScope,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_subresource.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_subresource.go new file mode 100644 index 00000000000..ee542355418 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_subresource.go @@ -0,0 +1,8 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..6e884100df3 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..e38b924bdf6 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_virtualnetworktap.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_virtualnetworktap.go new file mode 100644 index 00000000000..9dc686dd12f --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_virtualnetworktap.go @@ -0,0 +1,14 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkTapPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_virtualnetworktappropertiesformat.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_virtualnetworktappropertiesformat.go new file mode 100644 index 00000000000..c0dae0b7388 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/model_virtualnetworktappropertiesformat.go @@ -0,0 +1,13 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapPropertiesFormat struct { + DestinationLoadBalancerFrontEndIPConfiguration *FrontendIPConfiguration `json:"destinationLoadBalancerFrontEndIPConfiguration,omitempty"` + DestinationNetworkInterfaceIPConfiguration *NetworkInterfaceIPConfiguration `json:"destinationNetworkInterfaceIPConfiguration,omitempty"` + DestinationPort *int64 `json:"destinationPort,omitempty"` + NetworkInterfaceTapConfigurations *[]NetworkInterfaceTapConfiguration `json:"networkInterfaceTapConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/predicates.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/predicates.go new file mode 100644 index 00000000000..f27f03144ee --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/predicates.go @@ -0,0 +1,37 @@ +package cloudservicepublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p PublicIPAddressOperationPredicate) Matches(input PublicIPAddress) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/version.go b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/version.go new file mode 100644 index 00000000000..382a5160de5 --- /dev/null +++ b/resource-manager/network/2024-01-01/cloudservicepublicipaddresses/version.go @@ -0,0 +1,12 @@ +package cloudservicepublicipaddresses + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/cloudservicepublicipaddresses/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/README.md b/resource-manager/network/2024-01-01/connectionmonitors/README.md new file mode 100644 index 00000000000..6d972545463 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/README.md @@ -0,0 +1,138 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/connectionmonitors` Documentation + +The `connectionmonitors` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/connectionmonitors" +``` + + +### Client Initialization + +```go +client := connectionmonitors.NewConnectionMonitorsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ConnectionMonitorsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := connectionmonitors.NewConnectionMonitorID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue", "connectionMonitorValue") + +payload := connectionmonitors.ConnectionMonitor{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload, connectionmonitors.DefaultCreateOrUpdateOperationOptions()); err != nil { + // handle the error +} +``` + + +### Example Usage: `ConnectionMonitorsClient.Delete` + +```go +ctx := context.TODO() +id := connectionmonitors.NewConnectionMonitorID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue", "connectionMonitorValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `ConnectionMonitorsClient.Get` + +```go +ctx := context.TODO() +id := connectionmonitors.NewConnectionMonitorID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue", "connectionMonitorValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ConnectionMonitorsClient.List` + +```go +ctx := context.TODO() +id := connectionmonitors.NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + +read, err := client.List(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ConnectionMonitorsClient.Query` + +```go +ctx := context.TODO() +id := connectionmonitors.NewConnectionMonitorID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue", "connectionMonitorValue") + +if err := client.QueryThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `ConnectionMonitorsClient.Start` + +```go +ctx := context.TODO() +id := connectionmonitors.NewConnectionMonitorID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue", "connectionMonitorValue") + +if err := client.StartThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `ConnectionMonitorsClient.Stop` + +```go +ctx := context.TODO() +id := connectionmonitors.NewConnectionMonitorID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue", "connectionMonitorValue") + +if err := client.StopThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `ConnectionMonitorsClient.UpdateTags` + +```go +ctx := context.TODO() +id := connectionmonitors.NewConnectionMonitorID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue", "connectionMonitorValue") + +payload := connectionmonitors.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/connectionmonitors/client.go b/resource-manager/network/2024-01-01/connectionmonitors/client.go new file mode 100644 index 00000000000..a8ff516ce50 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/client.go @@ -0,0 +1,26 @@ +package connectionmonitors + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitorsClient struct { + Client *resourcemanager.Client +} + +func NewConnectionMonitorsClientWithBaseURI(sdkApi sdkEnv.Api) (*ConnectionMonitorsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "connectionmonitors", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ConnectionMonitorsClient: %+v", err) + } + + return &ConnectionMonitorsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/constants.go b/resource-manager/network/2024-01-01/connectionmonitors/constants.go new file mode 100644 index 00000000000..ca32d5169c7 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/constants.go @@ -0,0 +1,773 @@ +package connectionmonitors + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitorEndpointFilterItemType string + +const ( + ConnectionMonitorEndpointFilterItemTypeAgentAddress ConnectionMonitorEndpointFilterItemType = "AgentAddress" +) + +func PossibleValuesForConnectionMonitorEndpointFilterItemType() []string { + return []string{ + string(ConnectionMonitorEndpointFilterItemTypeAgentAddress), + } +} + +func (s *ConnectionMonitorEndpointFilterItemType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseConnectionMonitorEndpointFilterItemType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseConnectionMonitorEndpointFilterItemType(input string) (*ConnectionMonitorEndpointFilterItemType, error) { + vals := map[string]ConnectionMonitorEndpointFilterItemType{ + "agentaddress": ConnectionMonitorEndpointFilterItemTypeAgentAddress, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ConnectionMonitorEndpointFilterItemType(input) + return &out, nil +} + +type ConnectionMonitorEndpointFilterType string + +const ( + ConnectionMonitorEndpointFilterTypeInclude ConnectionMonitorEndpointFilterType = "Include" +) + +func PossibleValuesForConnectionMonitorEndpointFilterType() []string { + return []string{ + string(ConnectionMonitorEndpointFilterTypeInclude), + } +} + +func (s *ConnectionMonitorEndpointFilterType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseConnectionMonitorEndpointFilterType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseConnectionMonitorEndpointFilterType(input string) (*ConnectionMonitorEndpointFilterType, error) { + vals := map[string]ConnectionMonitorEndpointFilterType{ + "include": ConnectionMonitorEndpointFilterTypeInclude, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ConnectionMonitorEndpointFilterType(input) + return &out, nil +} + +type ConnectionMonitorSourceStatus string + +const ( + ConnectionMonitorSourceStatusActive ConnectionMonitorSourceStatus = "Active" + ConnectionMonitorSourceStatusInactive ConnectionMonitorSourceStatus = "Inactive" + ConnectionMonitorSourceStatusUnknown ConnectionMonitorSourceStatus = "Unknown" +) + +func PossibleValuesForConnectionMonitorSourceStatus() []string { + return []string{ + string(ConnectionMonitorSourceStatusActive), + string(ConnectionMonitorSourceStatusInactive), + string(ConnectionMonitorSourceStatusUnknown), + } +} + +func (s *ConnectionMonitorSourceStatus) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseConnectionMonitorSourceStatus(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseConnectionMonitorSourceStatus(input string) (*ConnectionMonitorSourceStatus, error) { + vals := map[string]ConnectionMonitorSourceStatus{ + "active": ConnectionMonitorSourceStatusActive, + "inactive": ConnectionMonitorSourceStatusInactive, + "unknown": ConnectionMonitorSourceStatusUnknown, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ConnectionMonitorSourceStatus(input) + return &out, nil +} + +type ConnectionMonitorTestConfigurationProtocol string + +const ( + ConnectionMonitorTestConfigurationProtocolHTTP ConnectionMonitorTestConfigurationProtocol = "Http" + ConnectionMonitorTestConfigurationProtocolIcmp ConnectionMonitorTestConfigurationProtocol = "Icmp" + ConnectionMonitorTestConfigurationProtocolTcp ConnectionMonitorTestConfigurationProtocol = "Tcp" +) + +func PossibleValuesForConnectionMonitorTestConfigurationProtocol() []string { + return []string{ + string(ConnectionMonitorTestConfigurationProtocolHTTP), + string(ConnectionMonitorTestConfigurationProtocolIcmp), + string(ConnectionMonitorTestConfigurationProtocolTcp), + } +} + +func (s *ConnectionMonitorTestConfigurationProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseConnectionMonitorTestConfigurationProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseConnectionMonitorTestConfigurationProtocol(input string) (*ConnectionMonitorTestConfigurationProtocol, error) { + vals := map[string]ConnectionMonitorTestConfigurationProtocol{ + "http": ConnectionMonitorTestConfigurationProtocolHTTP, + "icmp": ConnectionMonitorTestConfigurationProtocolIcmp, + "tcp": ConnectionMonitorTestConfigurationProtocolTcp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ConnectionMonitorTestConfigurationProtocol(input) + return &out, nil +} + +type ConnectionMonitorType string + +const ( + ConnectionMonitorTypeMultiEndpoint ConnectionMonitorType = "MultiEndpoint" + ConnectionMonitorTypeSingleSourceDestination ConnectionMonitorType = "SingleSourceDestination" +) + +func PossibleValuesForConnectionMonitorType() []string { + return []string{ + string(ConnectionMonitorTypeMultiEndpoint), + string(ConnectionMonitorTypeSingleSourceDestination), + } +} + +func (s *ConnectionMonitorType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseConnectionMonitorType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseConnectionMonitorType(input string) (*ConnectionMonitorType, error) { + vals := map[string]ConnectionMonitorType{ + "multiendpoint": ConnectionMonitorTypeMultiEndpoint, + "singlesourcedestination": ConnectionMonitorTypeSingleSourceDestination, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ConnectionMonitorType(input) + return &out, nil +} + +type ConnectionState string + +const ( + ConnectionStateReachable ConnectionState = "Reachable" + ConnectionStateUnknown ConnectionState = "Unknown" + ConnectionStateUnreachable ConnectionState = "Unreachable" +) + +func PossibleValuesForConnectionState() []string { + return []string{ + string(ConnectionStateReachable), + string(ConnectionStateUnknown), + string(ConnectionStateUnreachable), + } +} + +func (s *ConnectionState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseConnectionState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseConnectionState(input string) (*ConnectionState, error) { + vals := map[string]ConnectionState{ + "reachable": ConnectionStateReachable, + "unknown": ConnectionStateUnknown, + "unreachable": ConnectionStateUnreachable, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ConnectionState(input) + return &out, nil +} + +type CoverageLevel string + +const ( + CoverageLevelAboveAverage CoverageLevel = "AboveAverage" + CoverageLevelAverage CoverageLevel = "Average" + CoverageLevelBelowAverage CoverageLevel = "BelowAverage" + CoverageLevelDefault CoverageLevel = "Default" + CoverageLevelFull CoverageLevel = "Full" + CoverageLevelLow CoverageLevel = "Low" +) + +func PossibleValuesForCoverageLevel() []string { + return []string{ + string(CoverageLevelAboveAverage), + string(CoverageLevelAverage), + string(CoverageLevelBelowAverage), + string(CoverageLevelDefault), + string(CoverageLevelFull), + string(CoverageLevelLow), + } +} + +func (s *CoverageLevel) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseCoverageLevel(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseCoverageLevel(input string) (*CoverageLevel, error) { + vals := map[string]CoverageLevel{ + "aboveaverage": CoverageLevelAboveAverage, + "average": CoverageLevelAverage, + "belowaverage": CoverageLevelBelowAverage, + "default": CoverageLevelDefault, + "full": CoverageLevelFull, + "low": CoverageLevelLow, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := CoverageLevel(input) + return &out, nil +} + +type DestinationPortBehavior string + +const ( + DestinationPortBehaviorListenIfAvailable DestinationPortBehavior = "ListenIfAvailable" + DestinationPortBehaviorNone DestinationPortBehavior = "None" +) + +func PossibleValuesForDestinationPortBehavior() []string { + return []string{ + string(DestinationPortBehaviorListenIfAvailable), + string(DestinationPortBehaviorNone), + } +} + +func (s *DestinationPortBehavior) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDestinationPortBehavior(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDestinationPortBehavior(input string) (*DestinationPortBehavior, error) { + vals := map[string]DestinationPortBehavior{ + "listenifavailable": DestinationPortBehaviorListenIfAvailable, + "none": DestinationPortBehaviorNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DestinationPortBehavior(input) + return &out, nil +} + +type EndpointType string + +const ( + EndpointTypeAzureArcNetwork EndpointType = "AzureArcNetwork" + EndpointTypeAzureArcVM EndpointType = "AzureArcVM" + EndpointTypeAzureSubnet EndpointType = "AzureSubnet" + EndpointTypeAzureVM EndpointType = "AzureVM" + EndpointTypeAzureVMSS EndpointType = "AzureVMSS" + EndpointTypeAzureVNet EndpointType = "AzureVNet" + EndpointTypeExternalAddress EndpointType = "ExternalAddress" + EndpointTypeMMAWorkspaceMachine EndpointType = "MMAWorkspaceMachine" + EndpointTypeMMAWorkspaceNetwork EndpointType = "MMAWorkspaceNetwork" +) + +func PossibleValuesForEndpointType() []string { + return []string{ + string(EndpointTypeAzureArcNetwork), + string(EndpointTypeAzureArcVM), + string(EndpointTypeAzureSubnet), + string(EndpointTypeAzureVM), + string(EndpointTypeAzureVMSS), + string(EndpointTypeAzureVNet), + string(EndpointTypeExternalAddress), + string(EndpointTypeMMAWorkspaceMachine), + string(EndpointTypeMMAWorkspaceNetwork), + } +} + +func (s *EndpointType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseEndpointType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseEndpointType(input string) (*EndpointType, error) { + vals := map[string]EndpointType{ + "azurearcnetwork": EndpointTypeAzureArcNetwork, + "azurearcvm": EndpointTypeAzureArcVM, + "azuresubnet": EndpointTypeAzureSubnet, + "azurevm": EndpointTypeAzureVM, + "azurevmss": EndpointTypeAzureVMSS, + "azurevnet": EndpointTypeAzureVNet, + "externaladdress": EndpointTypeExternalAddress, + "mmaworkspacemachine": EndpointTypeMMAWorkspaceMachine, + "mmaworkspacenetwork": EndpointTypeMMAWorkspaceNetwork, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := EndpointType(input) + return &out, nil +} + +type EvaluationState string + +const ( + EvaluationStateCompleted EvaluationState = "Completed" + EvaluationStateInProgress EvaluationState = "InProgress" + EvaluationStateNotStarted EvaluationState = "NotStarted" +) + +func PossibleValuesForEvaluationState() []string { + return []string{ + string(EvaluationStateCompleted), + string(EvaluationStateInProgress), + string(EvaluationStateNotStarted), + } +} + +func (s *EvaluationState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseEvaluationState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseEvaluationState(input string) (*EvaluationState, error) { + vals := map[string]EvaluationState{ + "completed": EvaluationStateCompleted, + "inprogress": EvaluationStateInProgress, + "notstarted": EvaluationStateNotStarted, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := EvaluationState(input) + return &out, nil +} + +type HTTPConfigurationMethod string + +const ( + HTTPConfigurationMethodGet HTTPConfigurationMethod = "Get" + HTTPConfigurationMethodPost HTTPConfigurationMethod = "Post" +) + +func PossibleValuesForHTTPConfigurationMethod() []string { + return []string{ + string(HTTPConfigurationMethodGet), + string(HTTPConfigurationMethodPost), + } +} + +func (s *HTTPConfigurationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseHTTPConfigurationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseHTTPConfigurationMethod(input string) (*HTTPConfigurationMethod, error) { + vals := map[string]HTTPConfigurationMethod{ + "get": HTTPConfigurationMethodGet, + "post": HTTPConfigurationMethodPost, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := HTTPConfigurationMethod(input) + return &out, nil +} + +type IssueType string + +const ( + IssueTypeAgentStopped IssueType = "AgentStopped" + IssueTypeDnsResolution IssueType = "DnsResolution" + IssueTypeGuestFirewall IssueType = "GuestFirewall" + IssueTypeNetworkSecurityRule IssueType = "NetworkSecurityRule" + IssueTypePlatform IssueType = "Platform" + IssueTypePortThrottled IssueType = "PortThrottled" + IssueTypeSocketBind IssueType = "SocketBind" + IssueTypeUnknown IssueType = "Unknown" + IssueTypeUserDefinedRoute IssueType = "UserDefinedRoute" +) + +func PossibleValuesForIssueType() []string { + return []string{ + string(IssueTypeAgentStopped), + string(IssueTypeDnsResolution), + string(IssueTypeGuestFirewall), + string(IssueTypeNetworkSecurityRule), + string(IssueTypePlatform), + string(IssueTypePortThrottled), + string(IssueTypeSocketBind), + string(IssueTypeUnknown), + string(IssueTypeUserDefinedRoute), + } +} + +func (s *IssueType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIssueType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIssueType(input string) (*IssueType, error) { + vals := map[string]IssueType{ + "agentstopped": IssueTypeAgentStopped, + "dnsresolution": IssueTypeDnsResolution, + "guestfirewall": IssueTypeGuestFirewall, + "networksecurityrule": IssueTypeNetworkSecurityRule, + "platform": IssueTypePlatform, + "portthrottled": IssueTypePortThrottled, + "socketbind": IssueTypeSocketBind, + "unknown": IssueTypeUnknown, + "userdefinedroute": IssueTypeUserDefinedRoute, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IssueType(input) + return &out, nil +} + +type Origin string + +const ( + OriginInbound Origin = "Inbound" + OriginLocal Origin = "Local" + OriginOutbound Origin = "Outbound" +) + +func PossibleValuesForOrigin() []string { + return []string{ + string(OriginInbound), + string(OriginLocal), + string(OriginOutbound), + } +} + +func (s *Origin) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseOrigin(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseOrigin(input string) (*Origin, error) { + vals := map[string]Origin{ + "inbound": OriginInbound, + "local": OriginLocal, + "outbound": OriginOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := Origin(input) + return &out, nil +} + +type OutputType string + +const ( + OutputTypeWorkspace OutputType = "Workspace" +) + +func PossibleValuesForOutputType() []string { + return []string{ + string(OutputTypeWorkspace), + } +} + +func (s *OutputType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseOutputType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseOutputType(input string) (*OutputType, error) { + vals := map[string]OutputType{ + "workspace": OutputTypeWorkspace, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := OutputType(input) + return &out, nil +} + +type PreferredIPVersion string + +const ( + PreferredIPVersionIPvFour PreferredIPVersion = "IPv4" + PreferredIPVersionIPvSix PreferredIPVersion = "IPv6" +) + +func PossibleValuesForPreferredIPVersion() []string { + return []string{ + string(PreferredIPVersionIPvFour), + string(PreferredIPVersionIPvSix), + } +} + +func (s *PreferredIPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePreferredIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePreferredIPVersion(input string) (*PreferredIPVersion, error) { + vals := map[string]PreferredIPVersion{ + "ipv4": PreferredIPVersionIPvFour, + "ipv6": PreferredIPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PreferredIPVersion(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type Severity string + +const ( + SeverityError Severity = "Error" + SeverityWarning Severity = "Warning" +) + +func PossibleValuesForSeverity() []string { + return []string{ + string(SeverityError), + string(SeverityWarning), + } +} + +func (s *Severity) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSeverity(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSeverity(input string) (*Severity, error) { + vals := map[string]Severity{ + "error": SeverityError, + "warning": SeverityWarning, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := Severity(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/id_connectionmonitor.go b/resource-manager/network/2024-01-01/connectionmonitors/id_connectionmonitor.go new file mode 100644 index 00000000000..10d851fd213 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/id_connectionmonitor.go @@ -0,0 +1,139 @@ +package connectionmonitors + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ConnectionMonitorId{}) +} + +var _ resourceids.ResourceId = &ConnectionMonitorId{} + +// ConnectionMonitorId is a struct representing the Resource ID for a Connection Monitor +type ConnectionMonitorId struct { + SubscriptionId string + ResourceGroupName string + NetworkWatcherName string + ConnectionMonitorName string +} + +// NewConnectionMonitorID returns a new ConnectionMonitorId struct +func NewConnectionMonitorID(subscriptionId string, resourceGroupName string, networkWatcherName string, connectionMonitorName string) ConnectionMonitorId { + return ConnectionMonitorId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkWatcherName: networkWatcherName, + ConnectionMonitorName: connectionMonitorName, + } +} + +// ParseConnectionMonitorID parses 'input' into a ConnectionMonitorId +func ParseConnectionMonitorID(input string) (*ConnectionMonitorId, error) { + parser := resourceids.NewParserFromResourceIdType(&ConnectionMonitorId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ConnectionMonitorId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseConnectionMonitorIDInsensitively parses 'input' case-insensitively into a ConnectionMonitorId +// note: this method should only be used for API response data and not user input +func ParseConnectionMonitorIDInsensitively(input string) (*ConnectionMonitorId, error) { + parser := resourceids.NewParserFromResourceIdType(&ConnectionMonitorId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ConnectionMonitorId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ConnectionMonitorId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkWatcherName, ok = input.Parsed["networkWatcherName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkWatcherName", input) + } + + if id.ConnectionMonitorName, ok = input.Parsed["connectionMonitorName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "connectionMonitorName", input) + } + + return nil +} + +// ValidateConnectionMonitorID checks that 'input' can be parsed as a Connection Monitor ID +func ValidateConnectionMonitorID(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 := ParseConnectionMonitorID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Connection Monitor ID +func (id ConnectionMonitorId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkWatchers/%s/connectionMonitors/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkWatcherName, id.ConnectionMonitorName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Connection Monitor ID +func (id ConnectionMonitorId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkWatchers", "networkWatchers", "networkWatchers"), + resourceids.UserSpecifiedSegment("networkWatcherName", "networkWatcherValue"), + resourceids.StaticSegment("staticConnectionMonitors", "connectionMonitors", "connectionMonitors"), + resourceids.UserSpecifiedSegment("connectionMonitorName", "connectionMonitorValue"), + } +} + +// String returns a human-readable description of this Connection Monitor ID +func (id ConnectionMonitorId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Watcher Name: %q", id.NetworkWatcherName), + fmt.Sprintf("Connection Monitor Name: %q", id.ConnectionMonitorName), + } + return fmt.Sprintf("Connection Monitor (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/id_connectionmonitor_test.go b/resource-manager/network/2024-01-01/connectionmonitors/id_connectionmonitor_test.go new file mode 100644 index 00000000000..06c34a9c63c --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/id_connectionmonitor_test.go @@ -0,0 +1,327 @@ +package connectionmonitors + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ConnectionMonitorId{} + +func TestNewConnectionMonitorID(t *testing.T) { + id := NewConnectionMonitorID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue", "connectionMonitorValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkWatcherName != "networkWatcherValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkWatcherName'", id.NetworkWatcherName, "networkWatcherValue") + } + + if id.ConnectionMonitorName != "connectionMonitorValue" { + t.Fatalf("Expected %q but got %q for Segment 'ConnectionMonitorName'", id.ConnectionMonitorName, "connectionMonitorValue") + } +} + +func TestFormatConnectionMonitorID(t *testing.T) { + actual := NewConnectionMonitorID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue", "connectionMonitorValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/connectionMonitors/connectionMonitorValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseConnectionMonitorID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ConnectionMonitorId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/connectionMonitors", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/connectionMonitors/connectionMonitorValue", + Expected: &ConnectionMonitorId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkWatcherName: "networkWatcherValue", + ConnectionMonitorName: "connectionMonitorValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/connectionMonitors/connectionMonitorValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseConnectionMonitorID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkWatcherName != v.Expected.NetworkWatcherName { + t.Fatalf("Expected %q but got %q for NetworkWatcherName", v.Expected.NetworkWatcherName, actual.NetworkWatcherName) + } + + if actual.ConnectionMonitorName != v.Expected.ConnectionMonitorName { + t.Fatalf("Expected %q but got %q for ConnectionMonitorName", v.Expected.ConnectionMonitorName, actual.ConnectionMonitorName) + } + + } +} + +func TestParseConnectionMonitorIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ConnectionMonitorId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs/nEtWoRkWaTcHeRvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/connectionMonitors", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs/nEtWoRkWaTcHeRvAlUe/cOnNeCtIoNmOnItOrS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/connectionMonitors/connectionMonitorValue", + Expected: &ConnectionMonitorId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkWatcherName: "networkWatcherValue", + ConnectionMonitorName: "connectionMonitorValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/connectionMonitors/connectionMonitorValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs/nEtWoRkWaTcHeRvAlUe/cOnNeCtIoNmOnItOrS/cOnNeCtIoNmOnItOrVaLuE", + Expected: &ConnectionMonitorId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkWatcherName: "nEtWoRkWaTcHeRvAlUe", + ConnectionMonitorName: "cOnNeCtIoNmOnItOrVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs/nEtWoRkWaTcHeRvAlUe/cOnNeCtIoNmOnItOrS/cOnNeCtIoNmOnItOrVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseConnectionMonitorIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkWatcherName != v.Expected.NetworkWatcherName { + t.Fatalf("Expected %q but got %q for NetworkWatcherName", v.Expected.NetworkWatcherName, actual.NetworkWatcherName) + } + + if actual.ConnectionMonitorName != v.Expected.ConnectionMonitorName { + t.Fatalf("Expected %q but got %q for ConnectionMonitorName", v.Expected.ConnectionMonitorName, actual.ConnectionMonitorName) + } + + } +} + +func TestSegmentsForConnectionMonitorId(t *testing.T) { + segments := ConnectionMonitorId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ConnectionMonitorId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/id_networkwatcher.go b/resource-manager/network/2024-01-01/connectionmonitors/id_networkwatcher.go new file mode 100644 index 00000000000..c112368b0b7 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/id_networkwatcher.go @@ -0,0 +1,130 @@ +package connectionmonitors + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NetworkWatcherId{}) +} + +var _ resourceids.ResourceId = &NetworkWatcherId{} + +// NetworkWatcherId is a struct representing the Resource ID for a Network Watcher +type NetworkWatcherId struct { + SubscriptionId string + ResourceGroupName string + NetworkWatcherName string +} + +// NewNetworkWatcherID returns a new NetworkWatcherId struct +func NewNetworkWatcherID(subscriptionId string, resourceGroupName string, networkWatcherName string) NetworkWatcherId { + return NetworkWatcherId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkWatcherName: networkWatcherName, + } +} + +// ParseNetworkWatcherID parses 'input' into a NetworkWatcherId +func ParseNetworkWatcherID(input string) (*NetworkWatcherId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkWatcherId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkWatcherId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNetworkWatcherIDInsensitively parses 'input' case-insensitively into a NetworkWatcherId +// note: this method should only be used for API response data and not user input +func ParseNetworkWatcherIDInsensitively(input string) (*NetworkWatcherId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkWatcherId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkWatcherId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NetworkWatcherId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkWatcherName, ok = input.Parsed["networkWatcherName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkWatcherName", input) + } + + return nil +} + +// ValidateNetworkWatcherID checks that 'input' can be parsed as a Network Watcher ID +func ValidateNetworkWatcherID(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 := ParseNetworkWatcherID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Network Watcher ID +func (id NetworkWatcherId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkWatchers/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkWatcherName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Network Watcher ID +func (id NetworkWatcherId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkWatchers", "networkWatchers", "networkWatchers"), + resourceids.UserSpecifiedSegment("networkWatcherName", "networkWatcherValue"), + } +} + +// String returns a human-readable description of this Network Watcher ID +func (id NetworkWatcherId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Watcher Name: %q", id.NetworkWatcherName), + } + return fmt.Sprintf("Network Watcher (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/id_networkwatcher_test.go b/resource-manager/network/2024-01-01/connectionmonitors/id_networkwatcher_test.go new file mode 100644 index 00000000000..05fd2d98cbd --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/id_networkwatcher_test.go @@ -0,0 +1,282 @@ +package connectionmonitors + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NetworkWatcherId{} + +func TestNewNetworkWatcherID(t *testing.T) { + id := NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkWatcherName != "networkWatcherValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkWatcherName'", id.NetworkWatcherName, "networkWatcherValue") + } +} + +func TestFormatNetworkWatcherID(t *testing.T) { + actual := NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNetworkWatcherID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkWatcherId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue", + Expected: &NetworkWatcherId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkWatcherName: "networkWatcherValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkWatcherID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkWatcherName != v.Expected.NetworkWatcherName { + t.Fatalf("Expected %q but got %q for NetworkWatcherName", v.Expected.NetworkWatcherName, actual.NetworkWatcherName) + } + + } +} + +func TestParseNetworkWatcherIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkWatcherId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue", + Expected: &NetworkWatcherId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkWatcherName: "networkWatcherValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs/nEtWoRkWaTcHeRvAlUe", + Expected: &NetworkWatcherId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkWatcherName: "nEtWoRkWaTcHeRvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs/nEtWoRkWaTcHeRvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkWatcherIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkWatcherName != v.Expected.NetworkWatcherName { + t.Fatalf("Expected %q but got %q for NetworkWatcherName", v.Expected.NetworkWatcherName, actual.NetworkWatcherName) + } + + } +} + +func TestSegmentsForNetworkWatcherId(t *testing.T) { + segments := NetworkWatcherId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NetworkWatcherId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/method_createorupdate.go b/resource-manager/network/2024-01-01/connectionmonitors/method_createorupdate.go new file mode 100644 index 00000000000..b54a54e92b1 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/method_createorupdate.go @@ -0,0 +1,103 @@ +package connectionmonitors + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *ConnectionMonitorResult +} + +type CreateOrUpdateOperationOptions struct { + Migrate *string +} + +func DefaultCreateOrUpdateOperationOptions() CreateOrUpdateOperationOptions { + return CreateOrUpdateOperationOptions{} +} + +func (o CreateOrUpdateOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o CreateOrUpdateOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o CreateOrUpdateOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Migrate != nil { + out.Append("migrate", fmt.Sprintf("%v", *o.Migrate)) + } + return &out +} + +// CreateOrUpdate ... +func (c ConnectionMonitorsClient) CreateOrUpdate(ctx context.Context, id ConnectionMonitorId, input ConnectionMonitor, options CreateOrUpdateOperationOptions) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c ConnectionMonitorsClient) CreateOrUpdateThenPoll(ctx context.Context, id ConnectionMonitorId, input ConnectionMonitor, options CreateOrUpdateOperationOptions) error { + result, err := c.CreateOrUpdate(ctx, id, input, options) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/method_delete.go b/resource-manager/network/2024-01-01/connectionmonitors/method_delete.go new file mode 100644 index 00000000000..a0d6aebb3f1 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/method_delete.go @@ -0,0 +1,70 @@ +package connectionmonitors + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c ConnectionMonitorsClient) Delete(ctx context.Context, id ConnectionMonitorId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c ConnectionMonitorsClient) DeleteThenPoll(ctx context.Context, id ConnectionMonitorId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/method_get.go b/resource-manager/network/2024-01-01/connectionmonitors/method_get.go new file mode 100644 index 00000000000..883ffbdfd40 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/method_get.go @@ -0,0 +1,54 @@ +package connectionmonitors + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ConnectionMonitorResult +} + +// Get ... +func (c ConnectionMonitorsClient) Get(ctx context.Context, id ConnectionMonitorId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ConnectionMonitorResult + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/method_list.go b/resource-manager/network/2024-01-01/connectionmonitors/method_list.go new file mode 100644 index 00000000000..40de4efcac7 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/method_list.go @@ -0,0 +1,55 @@ +package connectionmonitors + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ConnectionMonitorListResult +} + +// List ... +func (c ConnectionMonitorsClient) List(ctx context.Context, id NetworkWatcherId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/connectionMonitors", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ConnectionMonitorListResult + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/method_query.go b/resource-manager/network/2024-01-01/connectionmonitors/method_query.go new file mode 100644 index 00000000000..ee985b11689 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/method_query.go @@ -0,0 +1,71 @@ +package connectionmonitors + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type QueryOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *ConnectionMonitorQueryResult +} + +// Query ... +func (c ConnectionMonitorsClient) Query(ctx context.Context, id ConnectionMonitorId) (result QueryOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/query", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// QueryThenPoll performs Query then polls until it's completed +func (c ConnectionMonitorsClient) QueryThenPoll(ctx context.Context, id ConnectionMonitorId) error { + result, err := c.Query(ctx, id) + if err != nil { + return fmt.Errorf("performing Query: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Query: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/method_start.go b/resource-manager/network/2024-01-01/connectionmonitors/method_start.go new file mode 100644 index 00000000000..f5f3ef3ba4e --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/method_start.go @@ -0,0 +1,70 @@ +package connectionmonitors + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StartOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Start ... +func (c ConnectionMonitorsClient) Start(ctx context.Context, id ConnectionMonitorId) (result StartOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/start", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// StartThenPoll performs Start then polls until it's completed +func (c ConnectionMonitorsClient) StartThenPoll(ctx context.Context, id ConnectionMonitorId) error { + result, err := c.Start(ctx, id) + if err != nil { + return fmt.Errorf("performing Start: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Start: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/method_stop.go b/resource-manager/network/2024-01-01/connectionmonitors/method_stop.go new file mode 100644 index 00000000000..44a5d3c56a7 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/method_stop.go @@ -0,0 +1,70 @@ +package connectionmonitors + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StopOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Stop ... +func (c ConnectionMonitorsClient) Stop(ctx context.Context, id ConnectionMonitorId) (result StopOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/stop", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// StopThenPoll performs Stop then polls until it's completed +func (c ConnectionMonitorsClient) StopThenPoll(ctx context.Context, id ConnectionMonitorId) error { + result, err := c.Stop(ctx, id) + if err != nil { + return fmt.Errorf("performing Stop: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Stop: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/method_updatetags.go b/resource-manager/network/2024-01-01/connectionmonitors/method_updatetags.go new file mode 100644 index 00000000000..04091a0b16c --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/method_updatetags.go @@ -0,0 +1,58 @@ +package connectionmonitors + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ConnectionMonitorResult +} + +// UpdateTags ... +func (c ConnectionMonitorsClient) UpdateTags(ctx context.Context, id ConnectionMonitorId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ConnectionMonitorResult + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitor.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitor.go new file mode 100644 index 00000000000..0257ef7bed9 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitor.go @@ -0,0 +1,10 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitor struct { + Location *string `json:"location,omitempty"` + Properties ConnectionMonitorParameters `json:"properties"` + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitordestination.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitordestination.go new file mode 100644 index 00000000000..2c1eaeadd69 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitordestination.go @@ -0,0 +1,10 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitorDestination struct { + Address *string `json:"address,omitempty"` + Port *int64 `json:"port,omitempty"` + ResourceId *string `json:"resourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorendpoint.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorendpoint.go new file mode 100644 index 00000000000..b93feeafd75 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorendpoint.go @@ -0,0 +1,16 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitorEndpoint struct { + Address *string `json:"address,omitempty"` + CoverageLevel *CoverageLevel `json:"coverageLevel,omitempty"` + Filter *ConnectionMonitorEndpointFilter `json:"filter,omitempty"` + LocationDetails *ConnectionMonitorEndpointLocationDetails `json:"locationDetails,omitempty"` + Name string `json:"name"` + ResourceId *string `json:"resourceId,omitempty"` + Scope *ConnectionMonitorEndpointScope `json:"scope,omitempty"` + SubscriptionId *string `json:"subscriptionId,omitempty"` + Type *EndpointType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorendpointfilter.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorendpointfilter.go new file mode 100644 index 00000000000..f861681a10c --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorendpointfilter.go @@ -0,0 +1,9 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitorEndpointFilter struct { + Items *[]ConnectionMonitorEndpointFilterItem `json:"items,omitempty"` + Type *ConnectionMonitorEndpointFilterType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorendpointfilteritem.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorendpointfilteritem.go new file mode 100644 index 00000000000..49a3320062d --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorendpointfilteritem.go @@ -0,0 +1,9 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitorEndpointFilterItem struct { + Address *string `json:"address,omitempty"` + Type *ConnectionMonitorEndpointFilterItemType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorendpointlocationdetails.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorendpointlocationdetails.go new file mode 100644 index 00000000000..5e8925459d5 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorendpointlocationdetails.go @@ -0,0 +1,8 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitorEndpointLocationDetails struct { + Region *string `json:"region,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorendpointscope.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorendpointscope.go new file mode 100644 index 00000000000..36bb68efcaa --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorendpointscope.go @@ -0,0 +1,9 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitorEndpointScope struct { + Exclude *[]ConnectionMonitorEndpointScopeItem `json:"exclude,omitempty"` + Include *[]ConnectionMonitorEndpointScopeItem `json:"include,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorendpointscopeitem.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorendpointscopeitem.go new file mode 100644 index 00000000000..e73b5e20b3b --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorendpointscopeitem.go @@ -0,0 +1,8 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitorEndpointScopeItem struct { + Address *string `json:"address,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorhttpconfiguration.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorhttpconfiguration.go new file mode 100644 index 00000000000..51af2309e94 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorhttpconfiguration.go @@ -0,0 +1,13 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitorHTTPConfiguration struct { + Method *HTTPConfigurationMethod `json:"method,omitempty"` + Path *string `json:"path,omitempty"` + Port *int64 `json:"port,omitempty"` + PreferHTTPS *bool `json:"preferHTTPS,omitempty"` + RequestHeaders *[]HTTPHeader `json:"requestHeaders,omitempty"` + ValidStatusCodeRanges *[]string `json:"validStatusCodeRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitoricmpconfiguration.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitoricmpconfiguration.go new file mode 100644 index 00000000000..6468613d1af --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitoricmpconfiguration.go @@ -0,0 +1,8 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitorIcmpConfiguration struct { + DisableTraceRoute *bool `json:"disableTraceRoute,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorlistresult.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorlistresult.go new file mode 100644 index 00000000000..2e3014360ae --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorlistresult.go @@ -0,0 +1,8 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitorListResult struct { + Value *[]ConnectionMonitorResult `json:"value,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitoroutput.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitoroutput.go new file mode 100644 index 00000000000..fcacc064d79 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitoroutput.go @@ -0,0 +1,9 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitorOutput struct { + Type *OutputType `json:"type,omitempty"` + WorkspaceSettings *ConnectionMonitorWorkspaceSettings `json:"workspaceSettings,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorparameters.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorparameters.go new file mode 100644 index 00000000000..d529e518683 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorparameters.go @@ -0,0 +1,16 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitorParameters struct { + AutoStart *bool `json:"autoStart,omitempty"` + Destination *ConnectionMonitorDestination `json:"destination,omitempty"` + Endpoints *[]ConnectionMonitorEndpoint `json:"endpoints,omitempty"` + MonitoringIntervalInSeconds *int64 `json:"monitoringIntervalInSeconds,omitempty"` + Notes *string `json:"notes,omitempty"` + Outputs *[]ConnectionMonitorOutput `json:"outputs,omitempty"` + Source *ConnectionMonitorSource `json:"source,omitempty"` + TestConfigurations *[]ConnectionMonitorTestConfiguration `json:"testConfigurations,omitempty"` + TestGroups *[]ConnectionMonitorTestGroup `json:"testGroups,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorqueryresult.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorqueryresult.go new file mode 100644 index 00000000000..455f34530d5 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorqueryresult.go @@ -0,0 +1,9 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitorQueryResult struct { + SourceStatus *ConnectionMonitorSourceStatus `json:"sourceStatus,omitempty"` + States *[]ConnectionStateSnapshot `json:"states,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorresult.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorresult.go new file mode 100644 index 00000000000..439794014f7 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorresult.go @@ -0,0 +1,14 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitorResult struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ConnectionMonitorResultProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorresultproperties.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorresultproperties.go new file mode 100644 index 00000000000..0299f7f69a7 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorresultproperties.go @@ -0,0 +1,38 @@ +package connectionmonitors + +import ( + "time" + + "github.com/hashicorp/go-azure-helpers/lang/dates" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitorResultProperties struct { + AutoStart *bool `json:"autoStart,omitempty"` + ConnectionMonitorType *ConnectionMonitorType `json:"connectionMonitorType,omitempty"` + Destination *ConnectionMonitorDestination `json:"destination,omitempty"` + Endpoints *[]ConnectionMonitorEndpoint `json:"endpoints,omitempty"` + MonitoringIntervalInSeconds *int64 `json:"monitoringIntervalInSeconds,omitempty"` + MonitoringStatus *string `json:"monitoringStatus,omitempty"` + Notes *string `json:"notes,omitempty"` + Outputs *[]ConnectionMonitorOutput `json:"outputs,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Source *ConnectionMonitorSource `json:"source,omitempty"` + StartTime *string `json:"startTime,omitempty"` + TestConfigurations *[]ConnectionMonitorTestConfiguration `json:"testConfigurations,omitempty"` + TestGroups *[]ConnectionMonitorTestGroup `json:"testGroups,omitempty"` +} + +func (o *ConnectionMonitorResultProperties) GetStartTimeAsTime() (*time.Time, error) { + if o.StartTime == nil { + return nil, nil + } + return dates.ParseAsFormat(o.StartTime, "2006-01-02T15:04:05Z07:00") +} + +func (o *ConnectionMonitorResultProperties) SetStartTimeAsTime(input time.Time) { + formatted := input.Format("2006-01-02T15:04:05Z07:00") + o.StartTime = &formatted +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorsource.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorsource.go new file mode 100644 index 00000000000..39fa1ef2bdc --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorsource.go @@ -0,0 +1,9 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitorSource struct { + Port *int64 `json:"port,omitempty"` + ResourceId string `json:"resourceId"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorsuccessthreshold.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorsuccessthreshold.go new file mode 100644 index 00000000000..9f6ca6fac8b --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorsuccessthreshold.go @@ -0,0 +1,9 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitorSuccessThreshold struct { + ChecksFailedPercent *int64 `json:"checksFailedPercent,omitempty"` + RoundTripTimeMs *float64 `json:"roundTripTimeMs,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitortcpconfiguration.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitortcpconfiguration.go new file mode 100644 index 00000000000..99fdbf40239 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitortcpconfiguration.go @@ -0,0 +1,10 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitorTcpConfiguration struct { + DestinationPortBehavior *DestinationPortBehavior `json:"destinationPortBehavior,omitempty"` + DisableTraceRoute *bool `json:"disableTraceRoute,omitempty"` + Port *int64 `json:"port,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitortestconfiguration.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitortestconfiguration.go new file mode 100644 index 00000000000..c4aa04feaba --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitortestconfiguration.go @@ -0,0 +1,15 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitorTestConfiguration struct { + HTTPConfiguration *ConnectionMonitorHTTPConfiguration `json:"httpConfiguration,omitempty"` + IcmpConfiguration *ConnectionMonitorIcmpConfiguration `json:"icmpConfiguration,omitempty"` + Name string `json:"name"` + PreferredIPVersion *PreferredIPVersion `json:"preferredIPVersion,omitempty"` + Protocol ConnectionMonitorTestConfigurationProtocol `json:"protocol"` + SuccessThreshold *ConnectionMonitorSuccessThreshold `json:"successThreshold,omitempty"` + TcpConfiguration *ConnectionMonitorTcpConfiguration `json:"tcpConfiguration,omitempty"` + TestFrequencySec *int64 `json:"testFrequencySec,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitortestgroup.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitortestgroup.go new file mode 100644 index 00000000000..6eaa922f55a --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitortestgroup.go @@ -0,0 +1,12 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitorTestGroup struct { + Destinations []string `json:"destinations"` + Disable *bool `json:"disable,omitempty"` + Name string `json:"name"` + Sources []string `json:"sources"` + TestConfigurations []string `json:"testConfigurations"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorworkspacesettings.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorworkspacesettings.go new file mode 100644 index 00000000000..ae23c31662f --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionmonitorworkspacesettings.go @@ -0,0 +1,8 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionMonitorWorkspaceSettings struct { + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectionstatesnapshot.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionstatesnapshot.go new file mode 100644 index 00000000000..060c3bece81 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectionstatesnapshot.go @@ -0,0 +1,47 @@ +package connectionmonitors + +import ( + "time" + + "github.com/hashicorp/go-azure-helpers/lang/dates" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionStateSnapshot struct { + AvgLatencyInMs *int64 `json:"avgLatencyInMs,omitempty"` + ConnectionState *ConnectionState `json:"connectionState,omitempty"` + EndTime *string `json:"endTime,omitempty"` + EvaluationState *EvaluationState `json:"evaluationState,omitempty"` + Hops *[]ConnectivityHop `json:"hops,omitempty"` + MaxLatencyInMs *int64 `json:"maxLatencyInMs,omitempty"` + MinLatencyInMs *int64 `json:"minLatencyInMs,omitempty"` + ProbesFailed *int64 `json:"probesFailed,omitempty"` + ProbesSent *int64 `json:"probesSent,omitempty"` + StartTime *string `json:"startTime,omitempty"` +} + +func (o *ConnectionStateSnapshot) GetEndTimeAsTime() (*time.Time, error) { + if o.EndTime == nil { + return nil, nil + } + return dates.ParseAsFormat(o.EndTime, "2006-01-02T15:04:05Z07:00") +} + +func (o *ConnectionStateSnapshot) SetEndTimeAsTime(input time.Time) { + formatted := input.Format("2006-01-02T15:04:05Z07:00") + o.EndTime = &formatted +} + +func (o *ConnectionStateSnapshot) GetStartTimeAsTime() (*time.Time, error) { + if o.StartTime == nil { + return nil, nil + } + return dates.ParseAsFormat(o.StartTime, "2006-01-02T15:04:05Z07:00") +} + +func (o *ConnectionStateSnapshot) SetStartTimeAsTime(input time.Time) { + formatted := input.Format("2006-01-02T15:04:05Z07:00") + o.StartTime = &formatted +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectivityhop.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectivityhop.go new file mode 100644 index 00000000000..b93b627ac70 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectivityhop.go @@ -0,0 +1,16 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectivityHop struct { + Address *string `json:"address,omitempty"` + Id *string `json:"id,omitempty"` + Issues *[]ConnectivityIssue `json:"issues,omitempty"` + Links *[]HopLink `json:"links,omitempty"` + NextHopIds *[]string `json:"nextHopIds,omitempty"` + PreviousHopIds *[]string `json:"previousHopIds,omitempty"` + PreviousLinks *[]HopLink `json:"previousLinks,omitempty"` + ResourceId *string `json:"resourceId,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_connectivityissue.go b/resource-manager/network/2024-01-01/connectionmonitors/model_connectivityissue.go new file mode 100644 index 00000000000..ff7c6cdaf11 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_connectivityissue.go @@ -0,0 +1,11 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectivityIssue struct { + Context *[]map[string]string `json:"context,omitempty"` + Origin *Origin `json:"origin,omitempty"` + Severity *Severity `json:"severity,omitempty"` + Type *IssueType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_hoplink.go b/resource-manager/network/2024-01-01/connectionmonitors/model_hoplink.go new file mode 100644 index 00000000000..c2b18cd5be1 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_hoplink.go @@ -0,0 +1,13 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HopLink struct { + Context *map[string]string `json:"context,omitempty"` + Issues *[]ConnectivityIssue `json:"issues,omitempty"` + LinkType *string `json:"linkType,omitempty"` + NextHopId *string `json:"nextHopId,omitempty"` + Properties *HopLinkProperties `json:"properties,omitempty"` + ResourceId *string `json:"resourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_hoplinkproperties.go b/resource-manager/network/2024-01-01/connectionmonitors/model_hoplinkproperties.go new file mode 100644 index 00000000000..d38f1875957 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_hoplinkproperties.go @@ -0,0 +1,10 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HopLinkProperties struct { + RoundTripTimeAvg *int64 `json:"roundTripTimeAvg,omitempty"` + RoundTripTimeMax *int64 `json:"roundTripTimeMax,omitempty"` + RoundTripTimeMin *int64 `json:"roundTripTimeMin,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_httpheader.go b/resource-manager/network/2024-01-01/connectionmonitors/model_httpheader.go new file mode 100644 index 00000000000..7cae34688aa --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_httpheader.go @@ -0,0 +1,9 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HTTPHeader struct { + Name *string `json:"name,omitempty"` + Value *string `json:"value,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/model_tagsobject.go b/resource-manager/network/2024-01-01/connectionmonitors/model_tagsobject.go new file mode 100644 index 00000000000..d9e7e6413ff --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/model_tagsobject.go @@ -0,0 +1,8 @@ +package connectionmonitors + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectionmonitors/version.go b/resource-manager/network/2024-01-01/connectionmonitors/version.go new file mode 100644 index 00000000000..49b61ef46d7 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectionmonitors/version.go @@ -0,0 +1,12 @@ +package connectionmonitors + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/connectionmonitors/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/connectivityconfigurations/README.md b/resource-manager/network/2024-01-01/connectivityconfigurations/README.md new file mode 100644 index 00000000000..e2744412664 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectivityconfigurations/README.md @@ -0,0 +1,86 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/connectivityconfigurations` Documentation + +The `connectivityconfigurations` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/connectivityconfigurations" +``` + + +### Client Initialization + +```go +client := connectivityconfigurations.NewConnectivityConfigurationsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ConnectivityConfigurationsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := connectivityconfigurations.NewConnectivityConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "connectivityConfigurationValue") + +payload := connectivityconfigurations.ConnectivityConfiguration{ + // ... +} + + +read, err := client.CreateOrUpdate(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ConnectivityConfigurationsClient.Delete` + +```go +ctx := context.TODO() +id := connectivityconfigurations.NewConnectivityConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "connectivityConfigurationValue") + +if err := client.DeleteThenPoll(ctx, id, connectivityconfigurations.DefaultDeleteOperationOptions()); err != nil { + // handle the error +} +``` + + +### Example Usage: `ConnectivityConfigurationsClient.Get` + +```go +ctx := context.TODO() +id := connectivityconfigurations.NewConnectivityConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "connectivityConfigurationValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ConnectivityConfigurationsClient.List` + +```go +ctx := context.TODO() +id := connectivityconfigurations.NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue") + +// alternatively `client.List(ctx, id, connectivityconfigurations.DefaultListOperationOptions())` can be used to do batched pagination +items, err := client.ListComplete(ctx, id, connectivityconfigurations.DefaultListOperationOptions()) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/connectivityconfigurations/client.go b/resource-manager/network/2024-01-01/connectivityconfigurations/client.go new file mode 100644 index 00000000000..7fb783f963a --- /dev/null +++ b/resource-manager/network/2024-01-01/connectivityconfigurations/client.go @@ -0,0 +1,26 @@ +package connectivityconfigurations + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectivityConfigurationsClient struct { + Client *resourcemanager.Client +} + +func NewConnectivityConfigurationsClientWithBaseURI(sdkApi sdkEnv.Api) (*ConnectivityConfigurationsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "connectivityconfigurations", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ConnectivityConfigurationsClient: %+v", err) + } + + return &ConnectivityConfigurationsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/connectivityconfigurations/constants.go b/resource-manager/network/2024-01-01/connectivityconfigurations/constants.go new file mode 100644 index 00000000000..e9642441352 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectivityconfigurations/constants.go @@ -0,0 +1,262 @@ +package connectivityconfigurations + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectivityTopology string + +const ( + ConnectivityTopologyHubAndSpoke ConnectivityTopology = "HubAndSpoke" + ConnectivityTopologyMesh ConnectivityTopology = "Mesh" +) + +func PossibleValuesForConnectivityTopology() []string { + return []string{ + string(ConnectivityTopologyHubAndSpoke), + string(ConnectivityTopologyMesh), + } +} + +func (s *ConnectivityTopology) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseConnectivityTopology(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseConnectivityTopology(input string) (*ConnectivityTopology, error) { + vals := map[string]ConnectivityTopology{ + "hubandspoke": ConnectivityTopologyHubAndSpoke, + "mesh": ConnectivityTopologyMesh, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ConnectivityTopology(input) + return &out, nil +} + +type DeleteExistingPeering string + +const ( + DeleteExistingPeeringFalse DeleteExistingPeering = "False" + DeleteExistingPeeringTrue DeleteExistingPeering = "True" +) + +func PossibleValuesForDeleteExistingPeering() []string { + return []string{ + string(DeleteExistingPeeringFalse), + string(DeleteExistingPeeringTrue), + } +} + +func (s *DeleteExistingPeering) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteExistingPeering(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteExistingPeering(input string) (*DeleteExistingPeering, error) { + vals := map[string]DeleteExistingPeering{ + "false": DeleteExistingPeeringFalse, + "true": DeleteExistingPeeringTrue, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteExistingPeering(input) + return &out, nil +} + +type GroupConnectivity string + +const ( + GroupConnectivityDirectlyConnected GroupConnectivity = "DirectlyConnected" + GroupConnectivityNone GroupConnectivity = "None" +) + +func PossibleValuesForGroupConnectivity() []string { + return []string{ + string(GroupConnectivityDirectlyConnected), + string(GroupConnectivityNone), + } +} + +func (s *GroupConnectivity) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGroupConnectivity(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGroupConnectivity(input string) (*GroupConnectivity, error) { + vals := map[string]GroupConnectivity{ + "directlyconnected": GroupConnectivityDirectlyConnected, + "none": GroupConnectivityNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GroupConnectivity(input) + return &out, nil +} + +type IsGlobal string + +const ( + IsGlobalFalse IsGlobal = "False" + IsGlobalTrue IsGlobal = "True" +) + +func PossibleValuesForIsGlobal() []string { + return []string{ + string(IsGlobalFalse), + string(IsGlobalTrue), + } +} + +func (s *IsGlobal) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIsGlobal(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIsGlobal(input string) (*IsGlobal, error) { + vals := map[string]IsGlobal{ + "false": IsGlobalFalse, + "true": IsGlobalTrue, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IsGlobal(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type UseHubGateway string + +const ( + UseHubGatewayFalse UseHubGateway = "False" + UseHubGatewayTrue UseHubGateway = "True" +) + +func PossibleValuesForUseHubGateway() []string { + return []string{ + string(UseHubGatewayFalse), + string(UseHubGatewayTrue), + } +} + +func (s *UseHubGateway) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseUseHubGateway(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseUseHubGateway(input string) (*UseHubGateway, error) { + vals := map[string]UseHubGateway{ + "false": UseHubGatewayFalse, + "true": UseHubGatewayTrue, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := UseHubGateway(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/connectivityconfigurations/id_connectivityconfiguration.go b/resource-manager/network/2024-01-01/connectivityconfigurations/id_connectivityconfiguration.go new file mode 100644 index 00000000000..d00d054bd40 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectivityconfigurations/id_connectivityconfiguration.go @@ -0,0 +1,139 @@ +package connectivityconfigurations + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ConnectivityConfigurationId{}) +} + +var _ resourceids.ResourceId = &ConnectivityConfigurationId{} + +// ConnectivityConfigurationId is a struct representing the Resource ID for a Connectivity Configuration +type ConnectivityConfigurationId struct { + SubscriptionId string + ResourceGroupName string + NetworkManagerName string + ConnectivityConfigurationName string +} + +// NewConnectivityConfigurationID returns a new ConnectivityConfigurationId struct +func NewConnectivityConfigurationID(subscriptionId string, resourceGroupName string, networkManagerName string, connectivityConfigurationName string) ConnectivityConfigurationId { + return ConnectivityConfigurationId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkManagerName: networkManagerName, + ConnectivityConfigurationName: connectivityConfigurationName, + } +} + +// ParseConnectivityConfigurationID parses 'input' into a ConnectivityConfigurationId +func ParseConnectivityConfigurationID(input string) (*ConnectivityConfigurationId, error) { + parser := resourceids.NewParserFromResourceIdType(&ConnectivityConfigurationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ConnectivityConfigurationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseConnectivityConfigurationIDInsensitively parses 'input' case-insensitively into a ConnectivityConfigurationId +// note: this method should only be used for API response data and not user input +func ParseConnectivityConfigurationIDInsensitively(input string) (*ConnectivityConfigurationId, error) { + parser := resourceids.NewParserFromResourceIdType(&ConnectivityConfigurationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ConnectivityConfigurationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ConnectivityConfigurationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkManagerName, ok = input.Parsed["networkManagerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkManagerName", input) + } + + if id.ConnectivityConfigurationName, ok = input.Parsed["connectivityConfigurationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "connectivityConfigurationName", input) + } + + return nil +} + +// ValidateConnectivityConfigurationID checks that 'input' can be parsed as a Connectivity Configuration ID +func ValidateConnectivityConfigurationID(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 := ParseConnectivityConfigurationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Connectivity Configuration ID +func (id ConnectivityConfigurationId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkManagers/%s/connectivityConfigurations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkManagerName, id.ConnectivityConfigurationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Connectivity Configuration ID +func (id ConnectivityConfigurationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkManagers", "networkManagers", "networkManagers"), + resourceids.UserSpecifiedSegment("networkManagerName", "networkManagerValue"), + resourceids.StaticSegment("staticConnectivityConfigurations", "connectivityConfigurations", "connectivityConfigurations"), + resourceids.UserSpecifiedSegment("connectivityConfigurationName", "connectivityConfigurationValue"), + } +} + +// String returns a human-readable description of this Connectivity Configuration ID +func (id ConnectivityConfigurationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Manager Name: %q", id.NetworkManagerName), + fmt.Sprintf("Connectivity Configuration Name: %q", id.ConnectivityConfigurationName), + } + return fmt.Sprintf("Connectivity Configuration (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/connectivityconfigurations/id_connectivityconfiguration_test.go b/resource-manager/network/2024-01-01/connectivityconfigurations/id_connectivityconfiguration_test.go new file mode 100644 index 00000000000..49deadd7a10 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectivityconfigurations/id_connectivityconfiguration_test.go @@ -0,0 +1,327 @@ +package connectivityconfigurations + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ConnectivityConfigurationId{} + +func TestNewConnectivityConfigurationID(t *testing.T) { + id := NewConnectivityConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "connectivityConfigurationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkManagerName != "networkManagerValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkManagerName'", id.NetworkManagerName, "networkManagerValue") + } + + if id.ConnectivityConfigurationName != "connectivityConfigurationValue" { + t.Fatalf("Expected %q but got %q for Segment 'ConnectivityConfigurationName'", id.ConnectivityConfigurationName, "connectivityConfigurationValue") + } +} + +func TestFormatConnectivityConfigurationID(t *testing.T) { + actual := NewConnectivityConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "connectivityConfigurationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/connectivityConfigurations/connectivityConfigurationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseConnectivityConfigurationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ConnectivityConfigurationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/connectivityConfigurations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/connectivityConfigurations/connectivityConfigurationValue", + Expected: &ConnectivityConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + ConnectivityConfigurationName: "connectivityConfigurationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/connectivityConfigurations/connectivityConfigurationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseConnectivityConfigurationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + if actual.ConnectivityConfigurationName != v.Expected.ConnectivityConfigurationName { + t.Fatalf("Expected %q but got %q for ConnectivityConfigurationName", v.Expected.ConnectivityConfigurationName, actual.ConnectivityConfigurationName) + } + + } +} + +func TestParseConnectivityConfigurationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ConnectivityConfigurationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/connectivityConfigurations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/cOnNeCtIvItYcOnFiGuRaTiOnS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/connectivityConfigurations/connectivityConfigurationValue", + Expected: &ConnectivityConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + ConnectivityConfigurationName: "connectivityConfigurationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/connectivityConfigurations/connectivityConfigurationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/cOnNeCtIvItYcOnFiGuRaTiOnS/cOnNeCtIvItYcOnFiGuRaTiOnVaLuE", + Expected: &ConnectivityConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkManagerName: "nEtWoRkMaNaGeRvAlUe", + ConnectivityConfigurationName: "cOnNeCtIvItYcOnFiGuRaTiOnVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/cOnNeCtIvItYcOnFiGuRaTiOnS/cOnNeCtIvItYcOnFiGuRaTiOnVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseConnectivityConfigurationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + if actual.ConnectivityConfigurationName != v.Expected.ConnectivityConfigurationName { + t.Fatalf("Expected %q but got %q for ConnectivityConfigurationName", v.Expected.ConnectivityConfigurationName, actual.ConnectivityConfigurationName) + } + + } +} + +func TestSegmentsForConnectivityConfigurationId(t *testing.T) { + segments := ConnectivityConfigurationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ConnectivityConfigurationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/connectivityconfigurations/id_networkmanager.go b/resource-manager/network/2024-01-01/connectivityconfigurations/id_networkmanager.go new file mode 100644 index 00000000000..1f7b8c3216b --- /dev/null +++ b/resource-manager/network/2024-01-01/connectivityconfigurations/id_networkmanager.go @@ -0,0 +1,130 @@ +package connectivityconfigurations + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NetworkManagerId{}) +} + +var _ resourceids.ResourceId = &NetworkManagerId{} + +// NetworkManagerId is a struct representing the Resource ID for a Network Manager +type NetworkManagerId struct { + SubscriptionId string + ResourceGroupName string + NetworkManagerName string +} + +// NewNetworkManagerID returns a new NetworkManagerId struct +func NewNetworkManagerID(subscriptionId string, resourceGroupName string, networkManagerName string) NetworkManagerId { + return NetworkManagerId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkManagerName: networkManagerName, + } +} + +// ParseNetworkManagerID parses 'input' into a NetworkManagerId +func ParseNetworkManagerID(input string) (*NetworkManagerId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkManagerId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkManagerId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNetworkManagerIDInsensitively parses 'input' case-insensitively into a NetworkManagerId +// note: this method should only be used for API response data and not user input +func ParseNetworkManagerIDInsensitively(input string) (*NetworkManagerId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkManagerId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkManagerId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NetworkManagerId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkManagerName, ok = input.Parsed["networkManagerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkManagerName", input) + } + + return nil +} + +// ValidateNetworkManagerID checks that 'input' can be parsed as a Network Manager ID +func ValidateNetworkManagerID(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 := ParseNetworkManagerID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Network Manager ID +func (id NetworkManagerId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkManagers/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkManagerName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Network Manager ID +func (id NetworkManagerId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkManagers", "networkManagers", "networkManagers"), + resourceids.UserSpecifiedSegment("networkManagerName", "networkManagerValue"), + } +} + +// String returns a human-readable description of this Network Manager ID +func (id NetworkManagerId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Manager Name: %q", id.NetworkManagerName), + } + return fmt.Sprintf("Network Manager (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/connectivityconfigurations/id_networkmanager_test.go b/resource-manager/network/2024-01-01/connectivityconfigurations/id_networkmanager_test.go new file mode 100644 index 00000000000..a27bf99d861 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectivityconfigurations/id_networkmanager_test.go @@ -0,0 +1,282 @@ +package connectivityconfigurations + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NetworkManagerId{} + +func TestNewNetworkManagerID(t *testing.T) { + id := NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkManagerName != "networkManagerValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkManagerName'", id.NetworkManagerName, "networkManagerValue") + } +} + +func TestFormatNetworkManagerID(t *testing.T) { + actual := NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNetworkManagerID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkManagerId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Expected: &NetworkManagerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkManagerID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + } +} + +func TestParseNetworkManagerIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkManagerId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Expected: &NetworkManagerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe", + Expected: &NetworkManagerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkManagerName: "nEtWoRkMaNaGeRvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkManagerIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + } +} + +func TestSegmentsForNetworkManagerId(t *testing.T) { + segments := NetworkManagerId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NetworkManagerId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/connectivityconfigurations/method_createorupdate.go b/resource-manager/network/2024-01-01/connectivityconfigurations/method_createorupdate.go new file mode 100644 index 00000000000..3ad8680898d --- /dev/null +++ b/resource-manager/network/2024-01-01/connectivityconfigurations/method_createorupdate.go @@ -0,0 +1,59 @@ +package connectivityconfigurations + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ConnectivityConfiguration +} + +// CreateOrUpdate ... +func (c ConnectivityConfigurationsClient) CreateOrUpdate(ctx context.Context, id ConnectivityConfigurationId, input ConnectivityConfiguration) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ConnectivityConfiguration + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/connectivityconfigurations/method_delete.go b/resource-manager/network/2024-01-01/connectivityconfigurations/method_delete.go new file mode 100644 index 00000000000..39d9c109838 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectivityconfigurations/method_delete.go @@ -0,0 +1,99 @@ +package connectivityconfigurations + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +type DeleteOperationOptions struct { + Force *bool +} + +func DefaultDeleteOperationOptions() DeleteOperationOptions { + return DeleteOperationOptions{} +} + +func (o DeleteOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o DeleteOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o DeleteOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Force != nil { + out.Append("force", fmt.Sprintf("%v", *o.Force)) + } + return &out +} + +// Delete ... +func (c ConnectivityConfigurationsClient) Delete(ctx context.Context, id ConnectivityConfigurationId, options DeleteOperationOptions) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c ConnectivityConfigurationsClient) DeleteThenPoll(ctx context.Context, id ConnectivityConfigurationId, options DeleteOperationOptions) error { + result, err := c.Delete(ctx, id, options) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/connectivityconfigurations/method_get.go b/resource-manager/network/2024-01-01/connectivityconfigurations/method_get.go new file mode 100644 index 00000000000..d8769033b0a --- /dev/null +++ b/resource-manager/network/2024-01-01/connectivityconfigurations/method_get.go @@ -0,0 +1,54 @@ +package connectivityconfigurations + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ConnectivityConfiguration +} + +// Get ... +func (c ConnectivityConfigurationsClient) Get(ctx context.Context, id ConnectivityConfigurationId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ConnectivityConfiguration + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/connectivityconfigurations/method_list.go b/resource-manager/network/2024-01-01/connectivityconfigurations/method_list.go new file mode 100644 index 00000000000..fd3032351bd --- /dev/null +++ b/resource-manager/network/2024-01-01/connectivityconfigurations/method_list.go @@ -0,0 +1,120 @@ +package connectivityconfigurations + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ConnectivityConfiguration +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []ConnectivityConfiguration +} + +type ListOperationOptions struct { + Top *int64 +} + +func DefaultListOperationOptions() ListOperationOptions { + return ListOperationOptions{} +} + +func (o ListOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o ListOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o ListOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Top != nil { + out.Append("$top", fmt.Sprintf("%v", *o.Top)) + } + return &out +} + +// List ... +func (c ConnectivityConfigurationsClient) List(ctx context.Context, id NetworkManagerId, options ListOperationOptions) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/connectivityConfigurations", id.ID()), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ConnectivityConfiguration `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c ConnectivityConfigurationsClient) ListComplete(ctx context.Context, id NetworkManagerId, options ListOperationOptions) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, options, ConnectivityConfigurationOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ConnectivityConfigurationsClient) ListCompleteMatchingPredicate(ctx context.Context, id NetworkManagerId, options ListOperationOptions, predicate ConnectivityConfigurationOperationPredicate) (result ListCompleteResult, err error) { + items := make([]ConnectivityConfiguration, 0) + + resp, err := c.List(ctx, id, options) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/connectivityconfigurations/model_connectivityconfiguration.go b/resource-manager/network/2024-01-01/connectivityconfigurations/model_connectivityconfiguration.go new file mode 100644 index 00000000000..7c6238540d1 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectivityconfigurations/model_connectivityconfiguration.go @@ -0,0 +1,17 @@ +package connectivityconfigurations + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/systemdata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectivityConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ConnectivityConfigurationProperties `json:"properties,omitempty"` + SystemData *systemdata.SystemData `json:"systemData,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectivityconfigurations/model_connectivityconfigurationproperties.go b/resource-manager/network/2024-01-01/connectivityconfigurations/model_connectivityconfigurationproperties.go new file mode 100644 index 00000000000..643d3c116ab --- /dev/null +++ b/resource-manager/network/2024-01-01/connectivityconfigurations/model_connectivityconfigurationproperties.go @@ -0,0 +1,15 @@ +package connectivityconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectivityConfigurationProperties struct { + AppliesToGroups []ConnectivityGroupItem `json:"appliesToGroups"` + ConnectivityTopology ConnectivityTopology `json:"connectivityTopology"` + DeleteExistingPeering *DeleteExistingPeering `json:"deleteExistingPeering,omitempty"` + Description *string `json:"description,omitempty"` + Hubs *[]Hub `json:"hubs,omitempty"` + IsGlobal *IsGlobal `json:"isGlobal,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectivityconfigurations/model_connectivitygroupitem.go b/resource-manager/network/2024-01-01/connectivityconfigurations/model_connectivitygroupitem.go new file mode 100644 index 00000000000..0ac02d12f1a --- /dev/null +++ b/resource-manager/network/2024-01-01/connectivityconfigurations/model_connectivitygroupitem.go @@ -0,0 +1,11 @@ +package connectivityconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectivityGroupItem struct { + GroupConnectivity GroupConnectivity `json:"groupConnectivity"` + IsGlobal *IsGlobal `json:"isGlobal,omitempty"` + NetworkGroupId string `json:"networkGroupId"` + UseHubGateway *UseHubGateway `json:"useHubGateway,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectivityconfigurations/model_hub.go b/resource-manager/network/2024-01-01/connectivityconfigurations/model_hub.go new file mode 100644 index 00000000000..5e43da03fdd --- /dev/null +++ b/resource-manager/network/2024-01-01/connectivityconfigurations/model_hub.go @@ -0,0 +1,9 @@ +package connectivityconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Hub struct { + ResourceId *string `json:"resourceId,omitempty"` + ResourceType *string `json:"resourceType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/connectivityconfigurations/predicates.go b/resource-manager/network/2024-01-01/connectivityconfigurations/predicates.go new file mode 100644 index 00000000000..ecab73247f2 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectivityconfigurations/predicates.go @@ -0,0 +1,32 @@ +package connectivityconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectivityConfigurationOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p ConnectivityConfigurationOperationPredicate) Matches(input ConnectivityConfiguration) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/connectivityconfigurations/version.go b/resource-manager/network/2024-01-01/connectivityconfigurations/version.go new file mode 100644 index 00000000000..cef5b2ac0b6 --- /dev/null +++ b/resource-manager/network/2024-01-01/connectivityconfigurations/version.go @@ -0,0 +1,12 @@ +package connectivityconfigurations + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/connectivityconfigurations/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/customipprefixes/README.md b/resource-manager/network/2024-01-01/customipprefixes/README.md new file mode 100644 index 00000000000..7cb046fc647 --- /dev/null +++ b/resource-manager/network/2024-01-01/customipprefixes/README.md @@ -0,0 +1,121 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/customipprefixes` Documentation + +The `customipprefixes` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/customipprefixes" +``` + + +### Client Initialization + +```go +client := customipprefixes.NewCustomIPPrefixesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `CustomIPPrefixesClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := customipprefixes.NewCustomIPPrefixID("12345678-1234-9876-4563-123456789012", "example-resource-group", "customIPPrefixValue") + +payload := customipprefixes.CustomIPPrefix{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `CustomIPPrefixesClient.Delete` + +```go +ctx := context.TODO() +id := customipprefixes.NewCustomIPPrefixID("12345678-1234-9876-4563-123456789012", "example-resource-group", "customIPPrefixValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `CustomIPPrefixesClient.Get` + +```go +ctx := context.TODO() +id := customipprefixes.NewCustomIPPrefixID("12345678-1234-9876-4563-123456789012", "example-resource-group", "customIPPrefixValue") + +read, err := client.Get(ctx, id, customipprefixes.DefaultGetOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `CustomIPPrefixesClient.List` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `CustomIPPrefixesClient.ListAll` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.ListAll(ctx, id)` can be used to do batched pagination +items, err := client.ListAllComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `CustomIPPrefixesClient.UpdateTags` + +```go +ctx := context.TODO() +id := customipprefixes.NewCustomIPPrefixID("12345678-1234-9876-4563-123456789012", "example-resource-group", "customIPPrefixValue") + +payload := customipprefixes.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/customipprefixes/client.go b/resource-manager/network/2024-01-01/customipprefixes/client.go new file mode 100644 index 00000000000..1e1c6887c4a --- /dev/null +++ b/resource-manager/network/2024-01-01/customipprefixes/client.go @@ -0,0 +1,26 @@ +package customipprefixes + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomIPPrefixesClient struct { + Client *resourcemanager.Client +} + +func NewCustomIPPrefixesClientWithBaseURI(sdkApi sdkEnv.Api) (*CustomIPPrefixesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "customipprefixes", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating CustomIPPrefixesClient: %+v", err) + } + + return &CustomIPPrefixesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/customipprefixes/constants.go b/resource-manager/network/2024-01-01/customipprefixes/constants.go new file mode 100644 index 00000000000..2c9a9f7c2e2 --- /dev/null +++ b/resource-manager/network/2024-01-01/customipprefixes/constants.go @@ -0,0 +1,222 @@ +package customipprefixes + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CommissionedState string + +const ( + CommissionedStateCommissioned CommissionedState = "Commissioned" + CommissionedStateCommissionedNoInternetAdvertise CommissionedState = "CommissionedNoInternetAdvertise" + CommissionedStateCommissioning CommissionedState = "Commissioning" + CommissionedStateDecommissioning CommissionedState = "Decommissioning" + CommissionedStateDeprovisioned CommissionedState = "Deprovisioned" + CommissionedStateDeprovisioning CommissionedState = "Deprovisioning" + CommissionedStateProvisioned CommissionedState = "Provisioned" + CommissionedStateProvisioning CommissionedState = "Provisioning" +) + +func PossibleValuesForCommissionedState() []string { + return []string{ + string(CommissionedStateCommissioned), + string(CommissionedStateCommissionedNoInternetAdvertise), + string(CommissionedStateCommissioning), + string(CommissionedStateDecommissioning), + string(CommissionedStateDeprovisioned), + string(CommissionedStateDeprovisioning), + string(CommissionedStateProvisioned), + string(CommissionedStateProvisioning), + } +} + +func (s *CommissionedState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseCommissionedState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseCommissionedState(input string) (*CommissionedState, error) { + vals := map[string]CommissionedState{ + "commissioned": CommissionedStateCommissioned, + "commissionednointernetadvertise": CommissionedStateCommissionedNoInternetAdvertise, + "commissioning": CommissionedStateCommissioning, + "decommissioning": CommissionedStateDecommissioning, + "deprovisioned": CommissionedStateDeprovisioned, + "deprovisioning": CommissionedStateDeprovisioning, + "provisioned": CommissionedStateProvisioned, + "provisioning": CommissionedStateProvisioning, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := CommissionedState(input) + return &out, nil +} + +type CustomIPPrefixType string + +const ( + CustomIPPrefixTypeChild CustomIPPrefixType = "Child" + CustomIPPrefixTypeParent CustomIPPrefixType = "Parent" + CustomIPPrefixTypeSingular CustomIPPrefixType = "Singular" +) + +func PossibleValuesForCustomIPPrefixType() []string { + return []string{ + string(CustomIPPrefixTypeChild), + string(CustomIPPrefixTypeParent), + string(CustomIPPrefixTypeSingular), + } +} + +func (s *CustomIPPrefixType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseCustomIPPrefixType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseCustomIPPrefixType(input string) (*CustomIPPrefixType, error) { + vals := map[string]CustomIPPrefixType{ + "child": CustomIPPrefixTypeChild, + "parent": CustomIPPrefixTypeParent, + "singular": CustomIPPrefixTypeSingular, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := CustomIPPrefixType(input) + return &out, nil +} + +type Geo string + +const ( + GeoAFRI Geo = "AFRI" + GeoAPAC Geo = "APAC" + GeoAQ Geo = "AQ" + GeoEURO Geo = "EURO" + GeoGLOBAL Geo = "GLOBAL" + GeoLATAM Geo = "LATAM" + GeoME Geo = "ME" + GeoNAM Geo = "NAM" + GeoOCEANIA Geo = "OCEANIA" +) + +func PossibleValuesForGeo() []string { + return []string{ + string(GeoAFRI), + string(GeoAPAC), + string(GeoAQ), + string(GeoEURO), + string(GeoGLOBAL), + string(GeoLATAM), + string(GeoME), + string(GeoNAM), + string(GeoOCEANIA), + } +} + +func (s *Geo) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGeo(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGeo(input string) (*Geo, error) { + vals := map[string]Geo{ + "afri": GeoAFRI, + "apac": GeoAPAC, + "aq": GeoAQ, + "euro": GeoEURO, + "global": GeoGLOBAL, + "latam": GeoLATAM, + "me": GeoME, + "nam": GeoNAM, + "oceania": GeoOCEANIA, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := Geo(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/customipprefixes/id_customipprefix.go b/resource-manager/network/2024-01-01/customipprefixes/id_customipprefix.go new file mode 100644 index 00000000000..d4206cbdfb5 --- /dev/null +++ b/resource-manager/network/2024-01-01/customipprefixes/id_customipprefix.go @@ -0,0 +1,130 @@ +package customipprefixes + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&CustomIPPrefixId{}) +} + +var _ resourceids.ResourceId = &CustomIPPrefixId{} + +// CustomIPPrefixId is a struct representing the Resource ID for a Custom I P Prefix +type CustomIPPrefixId struct { + SubscriptionId string + ResourceGroupName string + CustomIPPrefixName string +} + +// NewCustomIPPrefixID returns a new CustomIPPrefixId struct +func NewCustomIPPrefixID(subscriptionId string, resourceGroupName string, customIPPrefixName string) CustomIPPrefixId { + return CustomIPPrefixId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + CustomIPPrefixName: customIPPrefixName, + } +} + +// ParseCustomIPPrefixID parses 'input' into a CustomIPPrefixId +func ParseCustomIPPrefixID(input string) (*CustomIPPrefixId, error) { + parser := resourceids.NewParserFromResourceIdType(&CustomIPPrefixId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := CustomIPPrefixId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseCustomIPPrefixIDInsensitively parses 'input' case-insensitively into a CustomIPPrefixId +// note: this method should only be used for API response data and not user input +func ParseCustomIPPrefixIDInsensitively(input string) (*CustomIPPrefixId, error) { + parser := resourceids.NewParserFromResourceIdType(&CustomIPPrefixId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := CustomIPPrefixId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *CustomIPPrefixId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.CustomIPPrefixName, ok = input.Parsed["customIPPrefixName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "customIPPrefixName", input) + } + + return nil +} + +// ValidateCustomIPPrefixID checks that 'input' can be parsed as a Custom I P Prefix ID +func ValidateCustomIPPrefixID(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 := ParseCustomIPPrefixID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Custom I P Prefix ID +func (id CustomIPPrefixId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/customIPPrefixes/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.CustomIPPrefixName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Custom I P Prefix ID +func (id CustomIPPrefixId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticCustomIPPrefixes", "customIPPrefixes", "customIPPrefixes"), + resourceids.UserSpecifiedSegment("customIPPrefixName", "customIPPrefixValue"), + } +} + +// String returns a human-readable description of this Custom I P Prefix ID +func (id CustomIPPrefixId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Custom I P Prefix Name: %q", id.CustomIPPrefixName), + } + return fmt.Sprintf("Custom I P Prefix (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/customipprefixes/id_customipprefix_test.go b/resource-manager/network/2024-01-01/customipprefixes/id_customipprefix_test.go new file mode 100644 index 00000000000..7e3034445fa --- /dev/null +++ b/resource-manager/network/2024-01-01/customipprefixes/id_customipprefix_test.go @@ -0,0 +1,282 @@ +package customipprefixes + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &CustomIPPrefixId{} + +func TestNewCustomIPPrefixID(t *testing.T) { + id := NewCustomIPPrefixID("12345678-1234-9876-4563-123456789012", "example-resource-group", "customIPPrefixValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.CustomIPPrefixName != "customIPPrefixValue" { + t.Fatalf("Expected %q but got %q for Segment 'CustomIPPrefixName'", id.CustomIPPrefixName, "customIPPrefixValue") + } +} + +func TestFormatCustomIPPrefixID(t *testing.T) { + actual := NewCustomIPPrefixID("12345678-1234-9876-4563-123456789012", "example-resource-group", "customIPPrefixValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/customIPPrefixes/customIPPrefixValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseCustomIPPrefixID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *CustomIPPrefixId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/customIPPrefixes", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/customIPPrefixes/customIPPrefixValue", + Expected: &CustomIPPrefixId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + CustomIPPrefixName: "customIPPrefixValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/customIPPrefixes/customIPPrefixValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseCustomIPPrefixID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.CustomIPPrefixName != v.Expected.CustomIPPrefixName { + t.Fatalf("Expected %q but got %q for CustomIPPrefixName", v.Expected.CustomIPPrefixName, actual.CustomIPPrefixName) + } + + } +} + +func TestParseCustomIPPrefixIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *CustomIPPrefixId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/customIPPrefixes", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/cUsToMiPpReFiXeS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/customIPPrefixes/customIPPrefixValue", + Expected: &CustomIPPrefixId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + CustomIPPrefixName: "customIPPrefixValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/customIPPrefixes/customIPPrefixValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/cUsToMiPpReFiXeS/cUsToMiPpReFiXvAlUe", + Expected: &CustomIPPrefixId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + CustomIPPrefixName: "cUsToMiPpReFiXvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/cUsToMiPpReFiXeS/cUsToMiPpReFiXvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseCustomIPPrefixIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.CustomIPPrefixName != v.Expected.CustomIPPrefixName { + t.Fatalf("Expected %q but got %q for CustomIPPrefixName", v.Expected.CustomIPPrefixName, actual.CustomIPPrefixName) + } + + } +} + +func TestSegmentsForCustomIPPrefixId(t *testing.T) { + segments := CustomIPPrefixId{}.Segments() + if len(segments) == 0 { + t.Fatalf("CustomIPPrefixId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/customipprefixes/method_createorupdate.go b/resource-manager/network/2024-01-01/customipprefixes/method_createorupdate.go new file mode 100644 index 00000000000..88925ffb667 --- /dev/null +++ b/resource-manager/network/2024-01-01/customipprefixes/method_createorupdate.go @@ -0,0 +1,75 @@ +package customipprefixes + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *CustomIPPrefix +} + +// CreateOrUpdate ... +func (c CustomIPPrefixesClient) CreateOrUpdate(ctx context.Context, id CustomIPPrefixId, input CustomIPPrefix) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c CustomIPPrefixesClient) CreateOrUpdateThenPoll(ctx context.Context, id CustomIPPrefixId, input CustomIPPrefix) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/customipprefixes/method_delete.go b/resource-manager/network/2024-01-01/customipprefixes/method_delete.go new file mode 100644 index 00000000000..2233d70928d --- /dev/null +++ b/resource-manager/network/2024-01-01/customipprefixes/method_delete.go @@ -0,0 +1,71 @@ +package customipprefixes + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c CustomIPPrefixesClient) Delete(ctx context.Context, id CustomIPPrefixId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c CustomIPPrefixesClient) DeleteThenPoll(ctx context.Context, id CustomIPPrefixId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/customipprefixes/method_get.go b/resource-manager/network/2024-01-01/customipprefixes/method_get.go new file mode 100644 index 00000000000..04442324994 --- /dev/null +++ b/resource-manager/network/2024-01-01/customipprefixes/method_get.go @@ -0,0 +1,83 @@ +package customipprefixes + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *CustomIPPrefix +} + +type GetOperationOptions struct { + Expand *string +} + +func DefaultGetOperationOptions() GetOperationOptions { + return GetOperationOptions{} +} + +func (o GetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// Get ... +func (c CustomIPPrefixesClient) Get(ctx context.Context, id CustomIPPrefixId, options GetOperationOptions) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model CustomIPPrefix + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/customipprefixes/method_list.go b/resource-manager/network/2024-01-01/customipprefixes/method_list.go new file mode 100644 index 00000000000..22d7d1e3f86 --- /dev/null +++ b/resource-manager/network/2024-01-01/customipprefixes/method_list.go @@ -0,0 +1,93 @@ +package customipprefixes + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]CustomIPPrefix +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []CustomIPPrefix +} + +// List ... +func (c CustomIPPrefixesClient) List(ctx context.Context, id commonids.ResourceGroupId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/customIPPrefixes", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]CustomIPPrefix `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c CustomIPPrefixesClient) ListComplete(ctx context.Context, id commonids.ResourceGroupId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, CustomIPPrefixOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c CustomIPPrefixesClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate CustomIPPrefixOperationPredicate) (result ListCompleteResult, err error) { + items := make([]CustomIPPrefix, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/customipprefixes/method_listall.go b/resource-manager/network/2024-01-01/customipprefixes/method_listall.go new file mode 100644 index 00000000000..221ccc71db6 --- /dev/null +++ b/resource-manager/network/2024-01-01/customipprefixes/method_listall.go @@ -0,0 +1,93 @@ +package customipprefixes + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAllOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]CustomIPPrefix +} + +type ListAllCompleteResult struct { + LatestHttpResponse *http.Response + Items []CustomIPPrefix +} + +// ListAll ... +func (c CustomIPPrefixesClient) ListAll(ctx context.Context, id commonids.SubscriptionId) (result ListAllOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/customIPPrefixes", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]CustomIPPrefix `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListAllComplete retrieves all the results into a single object +func (c CustomIPPrefixesClient) ListAllComplete(ctx context.Context, id commonids.SubscriptionId) (ListAllCompleteResult, error) { + return c.ListAllCompleteMatchingPredicate(ctx, id, CustomIPPrefixOperationPredicate{}) +} + +// ListAllCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c CustomIPPrefixesClient) ListAllCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate CustomIPPrefixOperationPredicate) (result ListAllCompleteResult, err error) { + items := make([]CustomIPPrefix, 0) + + resp, err := c.ListAll(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListAllCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/customipprefixes/method_updatetags.go b/resource-manager/network/2024-01-01/customipprefixes/method_updatetags.go new file mode 100644 index 00000000000..c61802109c3 --- /dev/null +++ b/resource-manager/network/2024-01-01/customipprefixes/method_updatetags.go @@ -0,0 +1,58 @@ +package customipprefixes + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *CustomIPPrefix +} + +// UpdateTags ... +func (c CustomIPPrefixesClient) UpdateTags(ctx context.Context, id CustomIPPrefixId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model CustomIPPrefix + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/customipprefixes/model_customipprefix.go b/resource-manager/network/2024-01-01/customipprefixes/model_customipprefix.go new file mode 100644 index 00000000000..fc3d26ef7a4 --- /dev/null +++ b/resource-manager/network/2024-01-01/customipprefixes/model_customipprefix.go @@ -0,0 +1,21 @@ +package customipprefixes + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomIPPrefix struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *CustomIPPrefixPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/customipprefixes/model_customipprefixpropertiesformat.go b/resource-manager/network/2024-01-01/customipprefixes/model_customipprefixpropertiesformat.go new file mode 100644 index 00000000000..f26a83b6b83 --- /dev/null +++ b/resource-manager/network/2024-01-01/customipprefixes/model_customipprefixpropertiesformat.go @@ -0,0 +1,22 @@ +package customipprefixes + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomIPPrefixPropertiesFormat struct { + Asn *string `json:"asn,omitempty"` + AuthorizationMessage *string `json:"authorizationMessage,omitempty"` + ChildCustomIPPrefixes *[]SubResource `json:"childCustomIpPrefixes,omitempty"` + Cidr *string `json:"cidr,omitempty"` + CommissionedState *CommissionedState `json:"commissionedState,omitempty"` + CustomIPPrefixParent *SubResource `json:"customIpPrefixParent,omitempty"` + ExpressRouteAdvertise *bool `json:"expressRouteAdvertise,omitempty"` + FailedReason *string `json:"failedReason,omitempty"` + Geo *Geo `json:"geo,omitempty"` + NoInternetAdvertise *bool `json:"noInternetAdvertise,omitempty"` + PrefixType *CustomIPPrefixType `json:"prefixType,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SignedMessage *string `json:"signedMessage,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/customipprefixes/model_subresource.go b/resource-manager/network/2024-01-01/customipprefixes/model_subresource.go new file mode 100644 index 00000000000..2428ad08fc0 --- /dev/null +++ b/resource-manager/network/2024-01-01/customipprefixes/model_subresource.go @@ -0,0 +1,8 @@ +package customipprefixes + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/customipprefixes/model_tagsobject.go b/resource-manager/network/2024-01-01/customipprefixes/model_tagsobject.go new file mode 100644 index 00000000000..f1f3aea2b6e --- /dev/null +++ b/resource-manager/network/2024-01-01/customipprefixes/model_tagsobject.go @@ -0,0 +1,8 @@ +package customipprefixes + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/customipprefixes/predicates.go b/resource-manager/network/2024-01-01/customipprefixes/predicates.go new file mode 100644 index 00000000000..288f9cfa042 --- /dev/null +++ b/resource-manager/network/2024-01-01/customipprefixes/predicates.go @@ -0,0 +1,37 @@ +package customipprefixes + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomIPPrefixOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p CustomIPPrefixOperationPredicate) Matches(input CustomIPPrefix) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/customipprefixes/version.go b/resource-manager/network/2024-01-01/customipprefixes/version.go new file mode 100644 index 00000000000..9dcae76b72d --- /dev/null +++ b/resource-manager/network/2024-01-01/customipprefixes/version.go @@ -0,0 +1,12 @@ +package customipprefixes + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/customipprefixes/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/ddoscustompolicies/README.md b/resource-manager/network/2024-01-01/ddoscustompolicies/README.md new file mode 100644 index 00000000000..69f6f0dd778 --- /dev/null +++ b/resource-manager/network/2024-01-01/ddoscustompolicies/README.md @@ -0,0 +1,86 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/ddoscustompolicies` Documentation + +The `ddoscustompolicies` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/ddoscustompolicies" +``` + + +### Client Initialization + +```go +client := ddoscustompolicies.NewDdosCustomPoliciesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `DdosCustomPoliciesClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := ddoscustompolicies.NewDdosCustomPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ddosCustomPolicyValue") + +payload := ddoscustompolicies.DdosCustomPolicy{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `DdosCustomPoliciesClient.Delete` + +```go +ctx := context.TODO() +id := ddoscustompolicies.NewDdosCustomPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ddosCustomPolicyValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `DdosCustomPoliciesClient.Get` + +```go +ctx := context.TODO() +id := ddoscustompolicies.NewDdosCustomPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ddosCustomPolicyValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `DdosCustomPoliciesClient.UpdateTags` + +```go +ctx := context.TODO() +id := ddoscustompolicies.NewDdosCustomPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ddosCustomPolicyValue") + +payload := ddoscustompolicies.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/ddoscustompolicies/client.go b/resource-manager/network/2024-01-01/ddoscustompolicies/client.go new file mode 100644 index 00000000000..e6985cefaee --- /dev/null +++ b/resource-manager/network/2024-01-01/ddoscustompolicies/client.go @@ -0,0 +1,26 @@ +package ddoscustompolicies + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosCustomPoliciesClient struct { + Client *resourcemanager.Client +} + +func NewDdosCustomPoliciesClientWithBaseURI(sdkApi sdkEnv.Api) (*DdosCustomPoliciesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "ddoscustompolicies", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating DdosCustomPoliciesClient: %+v", err) + } + + return &DdosCustomPoliciesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/ddoscustompolicies/constants.go b/resource-manager/network/2024-01-01/ddoscustompolicies/constants.go new file mode 100644 index 00000000000..e62adb4c84b --- /dev/null +++ b/resource-manager/network/2024-01-01/ddoscustompolicies/constants.go @@ -0,0 +1,57 @@ +package ddoscustompolicies + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/ddoscustompolicies/id_ddoscustompolicy.go b/resource-manager/network/2024-01-01/ddoscustompolicies/id_ddoscustompolicy.go new file mode 100644 index 00000000000..1898126aafc --- /dev/null +++ b/resource-manager/network/2024-01-01/ddoscustompolicies/id_ddoscustompolicy.go @@ -0,0 +1,130 @@ +package ddoscustompolicies + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&DdosCustomPolicyId{}) +} + +var _ resourceids.ResourceId = &DdosCustomPolicyId{} + +// DdosCustomPolicyId is a struct representing the Resource ID for a Ddos Custom Policy +type DdosCustomPolicyId struct { + SubscriptionId string + ResourceGroupName string + DdosCustomPolicyName string +} + +// NewDdosCustomPolicyID returns a new DdosCustomPolicyId struct +func NewDdosCustomPolicyID(subscriptionId string, resourceGroupName string, ddosCustomPolicyName string) DdosCustomPolicyId { + return DdosCustomPolicyId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + DdosCustomPolicyName: ddosCustomPolicyName, + } +} + +// ParseDdosCustomPolicyID parses 'input' into a DdosCustomPolicyId +func ParseDdosCustomPolicyID(input string) (*DdosCustomPolicyId, error) { + parser := resourceids.NewParserFromResourceIdType(&DdosCustomPolicyId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := DdosCustomPolicyId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseDdosCustomPolicyIDInsensitively parses 'input' case-insensitively into a DdosCustomPolicyId +// note: this method should only be used for API response data and not user input +func ParseDdosCustomPolicyIDInsensitively(input string) (*DdosCustomPolicyId, error) { + parser := resourceids.NewParserFromResourceIdType(&DdosCustomPolicyId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := DdosCustomPolicyId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *DdosCustomPolicyId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.DdosCustomPolicyName, ok = input.Parsed["ddosCustomPolicyName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "ddosCustomPolicyName", input) + } + + return nil +} + +// ValidateDdosCustomPolicyID checks that 'input' can be parsed as a Ddos Custom Policy ID +func ValidateDdosCustomPolicyID(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 := ParseDdosCustomPolicyID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Ddos Custom Policy ID +func (id DdosCustomPolicyId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/ddosCustomPolicies/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.DdosCustomPolicyName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Ddos Custom Policy ID +func (id DdosCustomPolicyId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticDdosCustomPolicies", "ddosCustomPolicies", "ddosCustomPolicies"), + resourceids.UserSpecifiedSegment("ddosCustomPolicyName", "ddosCustomPolicyValue"), + } +} + +// String returns a human-readable description of this Ddos Custom Policy ID +func (id DdosCustomPolicyId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Ddos Custom Policy Name: %q", id.DdosCustomPolicyName), + } + return fmt.Sprintf("Ddos Custom Policy (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/ddoscustompolicies/id_ddoscustompolicy_test.go b/resource-manager/network/2024-01-01/ddoscustompolicies/id_ddoscustompolicy_test.go new file mode 100644 index 00000000000..9e3bda7a007 --- /dev/null +++ b/resource-manager/network/2024-01-01/ddoscustompolicies/id_ddoscustompolicy_test.go @@ -0,0 +1,282 @@ +package ddoscustompolicies + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &DdosCustomPolicyId{} + +func TestNewDdosCustomPolicyID(t *testing.T) { + id := NewDdosCustomPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ddosCustomPolicyValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.DdosCustomPolicyName != "ddosCustomPolicyValue" { + t.Fatalf("Expected %q but got %q for Segment 'DdosCustomPolicyName'", id.DdosCustomPolicyName, "ddosCustomPolicyValue") + } +} + +func TestFormatDdosCustomPolicyID(t *testing.T) { + actual := NewDdosCustomPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ddosCustomPolicyValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ddosCustomPolicies/ddosCustomPolicyValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseDdosCustomPolicyID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *DdosCustomPolicyId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ddosCustomPolicies", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ddosCustomPolicies/ddosCustomPolicyValue", + Expected: &DdosCustomPolicyId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + DdosCustomPolicyName: "ddosCustomPolicyValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ddosCustomPolicies/ddosCustomPolicyValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseDdosCustomPolicyID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.DdosCustomPolicyName != v.Expected.DdosCustomPolicyName { + t.Fatalf("Expected %q but got %q for DdosCustomPolicyName", v.Expected.DdosCustomPolicyName, actual.DdosCustomPolicyName) + } + + } +} + +func TestParseDdosCustomPolicyIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *DdosCustomPolicyId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ddosCustomPolicies", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/dDoScUsToMpOlIcIeS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ddosCustomPolicies/ddosCustomPolicyValue", + Expected: &DdosCustomPolicyId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + DdosCustomPolicyName: "ddosCustomPolicyValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ddosCustomPolicies/ddosCustomPolicyValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/dDoScUsToMpOlIcIeS/dDoScUsToMpOlIcYvAlUe", + Expected: &DdosCustomPolicyId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + DdosCustomPolicyName: "dDoScUsToMpOlIcYvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/dDoScUsToMpOlIcIeS/dDoScUsToMpOlIcYvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseDdosCustomPolicyIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.DdosCustomPolicyName != v.Expected.DdosCustomPolicyName { + t.Fatalf("Expected %q but got %q for DdosCustomPolicyName", v.Expected.DdosCustomPolicyName, actual.DdosCustomPolicyName) + } + + } +} + +func TestSegmentsForDdosCustomPolicyId(t *testing.T) { + segments := DdosCustomPolicyId{}.Segments() + if len(segments) == 0 { + t.Fatalf("DdosCustomPolicyId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/ddoscustompolicies/method_createorupdate.go b/resource-manager/network/2024-01-01/ddoscustompolicies/method_createorupdate.go new file mode 100644 index 00000000000..ea81bb5382f --- /dev/null +++ b/resource-manager/network/2024-01-01/ddoscustompolicies/method_createorupdate.go @@ -0,0 +1,75 @@ +package ddoscustompolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *DdosCustomPolicy +} + +// CreateOrUpdate ... +func (c DdosCustomPoliciesClient) CreateOrUpdate(ctx context.Context, id DdosCustomPolicyId, input DdosCustomPolicy) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c DdosCustomPoliciesClient) CreateOrUpdateThenPoll(ctx context.Context, id DdosCustomPolicyId, input DdosCustomPolicy) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/ddoscustompolicies/method_delete.go b/resource-manager/network/2024-01-01/ddoscustompolicies/method_delete.go new file mode 100644 index 00000000000..78624333195 --- /dev/null +++ b/resource-manager/network/2024-01-01/ddoscustompolicies/method_delete.go @@ -0,0 +1,71 @@ +package ddoscustompolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c DdosCustomPoliciesClient) Delete(ctx context.Context, id DdosCustomPolicyId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c DdosCustomPoliciesClient) DeleteThenPoll(ctx context.Context, id DdosCustomPolicyId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/ddoscustompolicies/method_get.go b/resource-manager/network/2024-01-01/ddoscustompolicies/method_get.go new file mode 100644 index 00000000000..07a8cdf6ad0 --- /dev/null +++ b/resource-manager/network/2024-01-01/ddoscustompolicies/method_get.go @@ -0,0 +1,54 @@ +package ddoscustompolicies + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *DdosCustomPolicy +} + +// Get ... +func (c DdosCustomPoliciesClient) Get(ctx context.Context, id DdosCustomPolicyId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model DdosCustomPolicy + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/ddoscustompolicies/method_updatetags.go b/resource-manager/network/2024-01-01/ddoscustompolicies/method_updatetags.go new file mode 100644 index 00000000000..b64aa2cb519 --- /dev/null +++ b/resource-manager/network/2024-01-01/ddoscustompolicies/method_updatetags.go @@ -0,0 +1,58 @@ +package ddoscustompolicies + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *DdosCustomPolicy +} + +// UpdateTags ... +func (c DdosCustomPoliciesClient) UpdateTags(ctx context.Context, id DdosCustomPolicyId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model DdosCustomPolicy + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/ddoscustompolicies/model_ddoscustompolicy.go b/resource-manager/network/2024-01-01/ddoscustompolicies/model_ddoscustompolicy.go new file mode 100644 index 00000000000..21c20585880 --- /dev/null +++ b/resource-manager/network/2024-01-01/ddoscustompolicies/model_ddoscustompolicy.go @@ -0,0 +1,14 @@ +package ddoscustompolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosCustomPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *DdosCustomPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/ddoscustompolicies/model_ddoscustompolicypropertiesformat.go b/resource-manager/network/2024-01-01/ddoscustompolicies/model_ddoscustompolicypropertiesformat.go new file mode 100644 index 00000000000..fad59051390 --- /dev/null +++ b/resource-manager/network/2024-01-01/ddoscustompolicies/model_ddoscustompolicypropertiesformat.go @@ -0,0 +1,9 @@ +package ddoscustompolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosCustomPolicyPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/ddoscustompolicies/model_tagsobject.go b/resource-manager/network/2024-01-01/ddoscustompolicies/model_tagsobject.go new file mode 100644 index 00000000000..3b93ba90100 --- /dev/null +++ b/resource-manager/network/2024-01-01/ddoscustompolicies/model_tagsobject.go @@ -0,0 +1,8 @@ +package ddoscustompolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/ddoscustompolicies/version.go b/resource-manager/network/2024-01-01/ddoscustompolicies/version.go new file mode 100644 index 00000000000..7c681b74b79 --- /dev/null +++ b/resource-manager/network/2024-01-01/ddoscustompolicies/version.go @@ -0,0 +1,12 @@ +package ddoscustompolicies + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/ddoscustompolicies/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/ddosprotectionplans/README.md b/resource-manager/network/2024-01-01/ddosprotectionplans/README.md new file mode 100644 index 00000000000..cd072f59f78 --- /dev/null +++ b/resource-manager/network/2024-01-01/ddosprotectionplans/README.md @@ -0,0 +1,121 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/ddosprotectionplans` Documentation + +The `ddosprotectionplans` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/ddosprotectionplans" +``` + + +### Client Initialization + +```go +client := ddosprotectionplans.NewDdosProtectionPlansClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `DdosProtectionPlansClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := ddosprotectionplans.NewDdosProtectionPlanID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ddosProtectionPlanValue") + +payload := ddosprotectionplans.DdosProtectionPlan{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `DdosProtectionPlansClient.Delete` + +```go +ctx := context.TODO() +id := ddosprotectionplans.NewDdosProtectionPlanID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ddosProtectionPlanValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `DdosProtectionPlansClient.Get` + +```go +ctx := context.TODO() +id := ddosprotectionplans.NewDdosProtectionPlanID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ddosProtectionPlanValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `DdosProtectionPlansClient.List` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `DdosProtectionPlansClient.ListByResourceGroup` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.ListByResourceGroup(ctx, id)` can be used to do batched pagination +items, err := client.ListByResourceGroupComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `DdosProtectionPlansClient.UpdateTags` + +```go +ctx := context.TODO() +id := ddosprotectionplans.NewDdosProtectionPlanID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ddosProtectionPlanValue") + +payload := ddosprotectionplans.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/ddosprotectionplans/client.go b/resource-manager/network/2024-01-01/ddosprotectionplans/client.go new file mode 100644 index 00000000000..de83f23ea42 --- /dev/null +++ b/resource-manager/network/2024-01-01/ddosprotectionplans/client.go @@ -0,0 +1,26 @@ +package ddosprotectionplans + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosProtectionPlansClient struct { + Client *resourcemanager.Client +} + +func NewDdosProtectionPlansClientWithBaseURI(sdkApi sdkEnv.Api) (*DdosProtectionPlansClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "ddosprotectionplans", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating DdosProtectionPlansClient: %+v", err) + } + + return &DdosProtectionPlansClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/ddosprotectionplans/constants.go b/resource-manager/network/2024-01-01/ddosprotectionplans/constants.go new file mode 100644 index 00000000000..ec2a63ded59 --- /dev/null +++ b/resource-manager/network/2024-01-01/ddosprotectionplans/constants.go @@ -0,0 +1,57 @@ +package ddosprotectionplans + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/ddosprotectionplans/id_ddosprotectionplan.go b/resource-manager/network/2024-01-01/ddosprotectionplans/id_ddosprotectionplan.go new file mode 100644 index 00000000000..1be4cad64d9 --- /dev/null +++ b/resource-manager/network/2024-01-01/ddosprotectionplans/id_ddosprotectionplan.go @@ -0,0 +1,130 @@ +package ddosprotectionplans + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&DdosProtectionPlanId{}) +} + +var _ resourceids.ResourceId = &DdosProtectionPlanId{} + +// DdosProtectionPlanId is a struct representing the Resource ID for a Ddos Protection Plan +type DdosProtectionPlanId struct { + SubscriptionId string + ResourceGroupName string + DdosProtectionPlanName string +} + +// NewDdosProtectionPlanID returns a new DdosProtectionPlanId struct +func NewDdosProtectionPlanID(subscriptionId string, resourceGroupName string, ddosProtectionPlanName string) DdosProtectionPlanId { + return DdosProtectionPlanId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + DdosProtectionPlanName: ddosProtectionPlanName, + } +} + +// ParseDdosProtectionPlanID parses 'input' into a DdosProtectionPlanId +func ParseDdosProtectionPlanID(input string) (*DdosProtectionPlanId, error) { + parser := resourceids.NewParserFromResourceIdType(&DdosProtectionPlanId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := DdosProtectionPlanId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseDdosProtectionPlanIDInsensitively parses 'input' case-insensitively into a DdosProtectionPlanId +// note: this method should only be used for API response data and not user input +func ParseDdosProtectionPlanIDInsensitively(input string) (*DdosProtectionPlanId, error) { + parser := resourceids.NewParserFromResourceIdType(&DdosProtectionPlanId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := DdosProtectionPlanId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *DdosProtectionPlanId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.DdosProtectionPlanName, ok = input.Parsed["ddosProtectionPlanName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "ddosProtectionPlanName", input) + } + + return nil +} + +// ValidateDdosProtectionPlanID checks that 'input' can be parsed as a Ddos Protection Plan ID +func ValidateDdosProtectionPlanID(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 := ParseDdosProtectionPlanID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Ddos Protection Plan ID +func (id DdosProtectionPlanId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/ddosProtectionPlans/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.DdosProtectionPlanName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Ddos Protection Plan ID +func (id DdosProtectionPlanId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticDdosProtectionPlans", "ddosProtectionPlans", "ddosProtectionPlans"), + resourceids.UserSpecifiedSegment("ddosProtectionPlanName", "ddosProtectionPlanValue"), + } +} + +// String returns a human-readable description of this Ddos Protection Plan ID +func (id DdosProtectionPlanId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Ddos Protection Plan Name: %q", id.DdosProtectionPlanName), + } + return fmt.Sprintf("Ddos Protection Plan (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/ddosprotectionplans/id_ddosprotectionplan_test.go b/resource-manager/network/2024-01-01/ddosprotectionplans/id_ddosprotectionplan_test.go new file mode 100644 index 00000000000..27a6df418c1 --- /dev/null +++ b/resource-manager/network/2024-01-01/ddosprotectionplans/id_ddosprotectionplan_test.go @@ -0,0 +1,282 @@ +package ddosprotectionplans + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &DdosProtectionPlanId{} + +func TestNewDdosProtectionPlanID(t *testing.T) { + id := NewDdosProtectionPlanID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ddosProtectionPlanValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.DdosProtectionPlanName != "ddosProtectionPlanValue" { + t.Fatalf("Expected %q but got %q for Segment 'DdosProtectionPlanName'", id.DdosProtectionPlanName, "ddosProtectionPlanValue") + } +} + +func TestFormatDdosProtectionPlanID(t *testing.T) { + actual := NewDdosProtectionPlanID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ddosProtectionPlanValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ddosProtectionPlans/ddosProtectionPlanValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseDdosProtectionPlanID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *DdosProtectionPlanId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ddosProtectionPlans", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ddosProtectionPlans/ddosProtectionPlanValue", + Expected: &DdosProtectionPlanId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + DdosProtectionPlanName: "ddosProtectionPlanValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ddosProtectionPlans/ddosProtectionPlanValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseDdosProtectionPlanID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.DdosProtectionPlanName != v.Expected.DdosProtectionPlanName { + t.Fatalf("Expected %q but got %q for DdosProtectionPlanName", v.Expected.DdosProtectionPlanName, actual.DdosProtectionPlanName) + } + + } +} + +func TestParseDdosProtectionPlanIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *DdosProtectionPlanId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ddosProtectionPlans", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/dDoSpRoTeCtIoNpLaNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ddosProtectionPlans/ddosProtectionPlanValue", + Expected: &DdosProtectionPlanId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + DdosProtectionPlanName: "ddosProtectionPlanValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ddosProtectionPlans/ddosProtectionPlanValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/dDoSpRoTeCtIoNpLaNs/dDoSpRoTeCtIoNpLaNvAlUe", + Expected: &DdosProtectionPlanId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + DdosProtectionPlanName: "dDoSpRoTeCtIoNpLaNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/dDoSpRoTeCtIoNpLaNs/dDoSpRoTeCtIoNpLaNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseDdosProtectionPlanIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.DdosProtectionPlanName != v.Expected.DdosProtectionPlanName { + t.Fatalf("Expected %q but got %q for DdosProtectionPlanName", v.Expected.DdosProtectionPlanName, actual.DdosProtectionPlanName) + } + + } +} + +func TestSegmentsForDdosProtectionPlanId(t *testing.T) { + segments := DdosProtectionPlanId{}.Segments() + if len(segments) == 0 { + t.Fatalf("DdosProtectionPlanId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/ddosprotectionplans/method_createorupdate.go b/resource-manager/network/2024-01-01/ddosprotectionplans/method_createorupdate.go new file mode 100644 index 00000000000..4cd5100b040 --- /dev/null +++ b/resource-manager/network/2024-01-01/ddosprotectionplans/method_createorupdate.go @@ -0,0 +1,75 @@ +package ddosprotectionplans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *DdosProtectionPlan +} + +// CreateOrUpdate ... +func (c DdosProtectionPlansClient) CreateOrUpdate(ctx context.Context, id DdosProtectionPlanId, input DdosProtectionPlan) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c DdosProtectionPlansClient) CreateOrUpdateThenPoll(ctx context.Context, id DdosProtectionPlanId, input DdosProtectionPlan) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/ddosprotectionplans/method_delete.go b/resource-manager/network/2024-01-01/ddosprotectionplans/method_delete.go new file mode 100644 index 00000000000..43d058cf8b8 --- /dev/null +++ b/resource-manager/network/2024-01-01/ddosprotectionplans/method_delete.go @@ -0,0 +1,71 @@ +package ddosprotectionplans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c DdosProtectionPlansClient) Delete(ctx context.Context, id DdosProtectionPlanId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c DdosProtectionPlansClient) DeleteThenPoll(ctx context.Context, id DdosProtectionPlanId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/ddosprotectionplans/method_get.go b/resource-manager/network/2024-01-01/ddosprotectionplans/method_get.go new file mode 100644 index 00000000000..9003f8a00c3 --- /dev/null +++ b/resource-manager/network/2024-01-01/ddosprotectionplans/method_get.go @@ -0,0 +1,54 @@ +package ddosprotectionplans + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *DdosProtectionPlan +} + +// Get ... +func (c DdosProtectionPlansClient) Get(ctx context.Context, id DdosProtectionPlanId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model DdosProtectionPlan + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/ddosprotectionplans/method_list.go b/resource-manager/network/2024-01-01/ddosprotectionplans/method_list.go new file mode 100644 index 00000000000..4fee924e5b5 --- /dev/null +++ b/resource-manager/network/2024-01-01/ddosprotectionplans/method_list.go @@ -0,0 +1,93 @@ +package ddosprotectionplans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]DdosProtectionPlan +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []DdosProtectionPlan +} + +// List ... +func (c DdosProtectionPlansClient) List(ctx context.Context, id commonids.SubscriptionId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/ddosProtectionPlans", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]DdosProtectionPlan `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c DdosProtectionPlansClient) ListComplete(ctx context.Context, id commonids.SubscriptionId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, DdosProtectionPlanOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c DdosProtectionPlansClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate DdosProtectionPlanOperationPredicate) (result ListCompleteResult, err error) { + items := make([]DdosProtectionPlan, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/ddosprotectionplans/method_listbyresourcegroup.go b/resource-manager/network/2024-01-01/ddosprotectionplans/method_listbyresourcegroup.go new file mode 100644 index 00000000000..25cfd986dac --- /dev/null +++ b/resource-manager/network/2024-01-01/ddosprotectionplans/method_listbyresourcegroup.go @@ -0,0 +1,93 @@ +package ddosprotectionplans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListByResourceGroupOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]DdosProtectionPlan +} + +type ListByResourceGroupCompleteResult struct { + LatestHttpResponse *http.Response + Items []DdosProtectionPlan +} + +// ListByResourceGroup ... +func (c DdosProtectionPlansClient) ListByResourceGroup(ctx context.Context, id commonids.ResourceGroupId) (result ListByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/ddosProtectionPlans", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]DdosProtectionPlan `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListByResourceGroupComplete retrieves all the results into a single object +func (c DdosProtectionPlansClient) ListByResourceGroupComplete(ctx context.Context, id commonids.ResourceGroupId) (ListByResourceGroupCompleteResult, error) { + return c.ListByResourceGroupCompleteMatchingPredicate(ctx, id, DdosProtectionPlanOperationPredicate{}) +} + +// ListByResourceGroupCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c DdosProtectionPlansClient) ListByResourceGroupCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate DdosProtectionPlanOperationPredicate) (result ListByResourceGroupCompleteResult, err error) { + items := make([]DdosProtectionPlan, 0) + + resp, err := c.ListByResourceGroup(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListByResourceGroupCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/ddosprotectionplans/method_updatetags.go b/resource-manager/network/2024-01-01/ddosprotectionplans/method_updatetags.go new file mode 100644 index 00000000000..07e469082e6 --- /dev/null +++ b/resource-manager/network/2024-01-01/ddosprotectionplans/method_updatetags.go @@ -0,0 +1,58 @@ +package ddosprotectionplans + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *DdosProtectionPlan +} + +// UpdateTags ... +func (c DdosProtectionPlansClient) UpdateTags(ctx context.Context, id DdosProtectionPlanId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model DdosProtectionPlan + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/ddosprotectionplans/model_ddosprotectionplan.go b/resource-manager/network/2024-01-01/ddosprotectionplans/model_ddosprotectionplan.go new file mode 100644 index 00000000000..3313192e51b --- /dev/null +++ b/resource-manager/network/2024-01-01/ddosprotectionplans/model_ddosprotectionplan.go @@ -0,0 +1,14 @@ +package ddosprotectionplans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosProtectionPlan struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *DdosProtectionPlanPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/ddosprotectionplans/model_ddosprotectionplanpropertiesformat.go b/resource-manager/network/2024-01-01/ddosprotectionplans/model_ddosprotectionplanpropertiesformat.go new file mode 100644 index 00000000000..b1f0f51665d --- /dev/null +++ b/resource-manager/network/2024-01-01/ddosprotectionplans/model_ddosprotectionplanpropertiesformat.go @@ -0,0 +1,11 @@ +package ddosprotectionplans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosProtectionPlanPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIPAddresses,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + VirtualNetworks *[]SubResource `json:"virtualNetworks,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/ddosprotectionplans/model_subresource.go b/resource-manager/network/2024-01-01/ddosprotectionplans/model_subresource.go new file mode 100644 index 00000000000..066803386d8 --- /dev/null +++ b/resource-manager/network/2024-01-01/ddosprotectionplans/model_subresource.go @@ -0,0 +1,8 @@ +package ddosprotectionplans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/ddosprotectionplans/model_tagsobject.go b/resource-manager/network/2024-01-01/ddosprotectionplans/model_tagsobject.go new file mode 100644 index 00000000000..99bf4d851b5 --- /dev/null +++ b/resource-manager/network/2024-01-01/ddosprotectionplans/model_tagsobject.go @@ -0,0 +1,8 @@ +package ddosprotectionplans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/ddosprotectionplans/predicates.go b/resource-manager/network/2024-01-01/ddosprotectionplans/predicates.go new file mode 100644 index 00000000000..6ad9bbf5374 --- /dev/null +++ b/resource-manager/network/2024-01-01/ddosprotectionplans/predicates.go @@ -0,0 +1,37 @@ +package ddosprotectionplans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosProtectionPlanOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p DdosProtectionPlanOperationPredicate) Matches(input DdosProtectionPlan) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/ddosprotectionplans/version.go b/resource-manager/network/2024-01-01/ddosprotectionplans/version.go new file mode 100644 index 00000000000..f6498d84108 --- /dev/null +++ b/resource-manager/network/2024-01-01/ddosprotectionplans/version.go @@ -0,0 +1,12 @@ +package ddosprotectionplans + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/ddosprotectionplans/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/README.md b/resource-manager/network/2024-01-01/dscpconfiguration/README.md new file mode 100644 index 00000000000..2e4e73a5432 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/README.md @@ -0,0 +1,65 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/dscpconfiguration` Documentation + +The `dscpconfiguration` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/dscpconfiguration" +``` + + +### Client Initialization + +```go +client := dscpconfiguration.NewDscpConfigurationClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `DscpConfigurationClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := dscpconfiguration.NewDscpConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "dscpConfigurationValue") + +payload := dscpconfiguration.DscpConfiguration{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `DscpConfigurationClient.Delete` + +```go +ctx := context.TODO() +id := dscpconfiguration.NewDscpConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "dscpConfigurationValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `DscpConfigurationClient.Get` + +```go +ctx := context.TODO() +id := dscpconfiguration.NewDscpConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "dscpConfigurationValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/client.go b/resource-manager/network/2024-01-01/dscpconfiguration/client.go new file mode 100644 index 00000000000..ed6cfe7aa08 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/client.go @@ -0,0 +1,26 @@ +package dscpconfiguration + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DscpConfigurationClient struct { + Client *resourcemanager.Client +} + +func NewDscpConfigurationClientWithBaseURI(sdkApi sdkEnv.Api) (*DscpConfigurationClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "dscpconfiguration", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating DscpConfigurationClient: %+v", err) + } + + return &DscpConfigurationClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/constants.go b/resource-manager/network/2024-01-01/dscpconfiguration/constants.go new file mode 100644 index 00000000000..53820160b34 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/constants.go @@ -0,0 +1,1260 @@ +package dscpconfiguration + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettingsProtectionMode string + +const ( + DdosSettingsProtectionModeDisabled DdosSettingsProtectionMode = "Disabled" + DdosSettingsProtectionModeEnabled DdosSettingsProtectionMode = "Enabled" + DdosSettingsProtectionModeVirtualNetworkInherited DdosSettingsProtectionMode = "VirtualNetworkInherited" +) + +func PossibleValuesForDdosSettingsProtectionMode() []string { + return []string{ + string(DdosSettingsProtectionModeDisabled), + string(DdosSettingsProtectionModeEnabled), + string(DdosSettingsProtectionModeVirtualNetworkInherited), + } +} + +func (s *DdosSettingsProtectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDdosSettingsProtectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDdosSettingsProtectionMode(input string) (*DdosSettingsProtectionMode, error) { + vals := map[string]DdosSettingsProtectionMode{ + "disabled": DdosSettingsProtectionModeDisabled, + "enabled": DdosSettingsProtectionModeEnabled, + "virtualnetworkinherited": DdosSettingsProtectionModeVirtualNetworkInherited, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DdosSettingsProtectionMode(input) + return &out, nil +} + +type DeleteOptions string + +const ( + DeleteOptionsDelete DeleteOptions = "Delete" + DeleteOptionsDetach DeleteOptions = "Detach" +) + +func PossibleValuesForDeleteOptions() []string { + return []string{ + string(DeleteOptionsDelete), + string(DeleteOptionsDetach), + } +} + +func (s *DeleteOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteOptions(input string) (*DeleteOptions, error) { + vals := map[string]DeleteOptions{ + "delete": DeleteOptionsDelete, + "detach": DeleteOptionsDetach, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteOptions(input) + return &out, nil +} + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelInterfaceType string + +const ( + GatewayLoadBalancerTunnelInterfaceTypeExternal GatewayLoadBalancerTunnelInterfaceType = "External" + GatewayLoadBalancerTunnelInterfaceTypeInternal GatewayLoadBalancerTunnelInterfaceType = "Internal" + GatewayLoadBalancerTunnelInterfaceTypeNone GatewayLoadBalancerTunnelInterfaceType = "None" +) + +func PossibleValuesForGatewayLoadBalancerTunnelInterfaceType() []string { + return []string{ + string(GatewayLoadBalancerTunnelInterfaceTypeExternal), + string(GatewayLoadBalancerTunnelInterfaceTypeInternal), + string(GatewayLoadBalancerTunnelInterfaceTypeNone), + } +} + +func (s *GatewayLoadBalancerTunnelInterfaceType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelInterfaceType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelInterfaceType(input string) (*GatewayLoadBalancerTunnelInterfaceType, error) { + vals := map[string]GatewayLoadBalancerTunnelInterfaceType{ + "external": GatewayLoadBalancerTunnelInterfaceTypeExternal, + "internal": GatewayLoadBalancerTunnelInterfaceTypeInternal, + "none": GatewayLoadBalancerTunnelInterfaceTypeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelInterfaceType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelProtocol string + +const ( + GatewayLoadBalancerTunnelProtocolNative GatewayLoadBalancerTunnelProtocol = "Native" + GatewayLoadBalancerTunnelProtocolNone GatewayLoadBalancerTunnelProtocol = "None" + GatewayLoadBalancerTunnelProtocolVXLAN GatewayLoadBalancerTunnelProtocol = "VXLAN" +) + +func PossibleValuesForGatewayLoadBalancerTunnelProtocol() []string { + return []string{ + string(GatewayLoadBalancerTunnelProtocolNative), + string(GatewayLoadBalancerTunnelProtocolNone), + string(GatewayLoadBalancerTunnelProtocolVXLAN), + } +} + +func (s *GatewayLoadBalancerTunnelProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelProtocol(input string) (*GatewayLoadBalancerTunnelProtocol, error) { + vals := map[string]GatewayLoadBalancerTunnelProtocol{ + "native": GatewayLoadBalancerTunnelProtocolNative, + "none": GatewayLoadBalancerTunnelProtocolNone, + "vxlan": GatewayLoadBalancerTunnelProtocolVXLAN, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelProtocol(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} + +type LoadBalancerBackendAddressAdminState string + +const ( + LoadBalancerBackendAddressAdminStateDown LoadBalancerBackendAddressAdminState = "Down" + LoadBalancerBackendAddressAdminStateNone LoadBalancerBackendAddressAdminState = "None" + LoadBalancerBackendAddressAdminStateUp LoadBalancerBackendAddressAdminState = "Up" +) + +func PossibleValuesForLoadBalancerBackendAddressAdminState() []string { + return []string{ + string(LoadBalancerBackendAddressAdminStateDown), + string(LoadBalancerBackendAddressAdminStateNone), + string(LoadBalancerBackendAddressAdminStateUp), + } +} + +func (s *LoadBalancerBackendAddressAdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerBackendAddressAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerBackendAddressAdminState(input string) (*LoadBalancerBackendAddressAdminState, error) { + vals := map[string]LoadBalancerBackendAddressAdminState{ + "down": LoadBalancerBackendAddressAdminStateDown, + "none": LoadBalancerBackendAddressAdminStateNone, + "up": LoadBalancerBackendAddressAdminStateUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerBackendAddressAdminState(input) + return &out, nil +} + +type NatGatewaySkuName string + +const ( + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +func PossibleValuesForNatGatewaySkuName() []string { + return []string{ + string(NatGatewaySkuNameStandard), + } +} + +func (s *NatGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNatGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNatGatewaySkuName(input string) (*NatGatewaySkuName, error) { + vals := map[string]NatGatewaySkuName{ + "standard": NatGatewaySkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NatGatewaySkuName(input) + return &out, nil +} + +type NetworkInterfaceAuxiliaryMode string + +const ( + NetworkInterfaceAuxiliaryModeAcceleratedConnections NetworkInterfaceAuxiliaryMode = "AcceleratedConnections" + NetworkInterfaceAuxiliaryModeFloating NetworkInterfaceAuxiliaryMode = "Floating" + NetworkInterfaceAuxiliaryModeMaxConnections NetworkInterfaceAuxiliaryMode = "MaxConnections" + NetworkInterfaceAuxiliaryModeNone NetworkInterfaceAuxiliaryMode = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliaryMode() []string { + return []string{ + string(NetworkInterfaceAuxiliaryModeAcceleratedConnections), + string(NetworkInterfaceAuxiliaryModeFloating), + string(NetworkInterfaceAuxiliaryModeMaxConnections), + string(NetworkInterfaceAuxiliaryModeNone), + } +} + +func (s *NetworkInterfaceAuxiliaryMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliaryMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliaryMode(input string) (*NetworkInterfaceAuxiliaryMode, error) { + vals := map[string]NetworkInterfaceAuxiliaryMode{ + "acceleratedconnections": NetworkInterfaceAuxiliaryModeAcceleratedConnections, + "floating": NetworkInterfaceAuxiliaryModeFloating, + "maxconnections": NetworkInterfaceAuxiliaryModeMaxConnections, + "none": NetworkInterfaceAuxiliaryModeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliaryMode(input) + return &out, nil +} + +type NetworkInterfaceAuxiliarySku string + +const ( + NetworkInterfaceAuxiliarySkuAEight NetworkInterfaceAuxiliarySku = "A8" + NetworkInterfaceAuxiliarySkuAFour NetworkInterfaceAuxiliarySku = "A4" + NetworkInterfaceAuxiliarySkuAOne NetworkInterfaceAuxiliarySku = "A1" + NetworkInterfaceAuxiliarySkuATwo NetworkInterfaceAuxiliarySku = "A2" + NetworkInterfaceAuxiliarySkuNone NetworkInterfaceAuxiliarySku = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliarySku() []string { + return []string{ + string(NetworkInterfaceAuxiliarySkuAEight), + string(NetworkInterfaceAuxiliarySkuAFour), + string(NetworkInterfaceAuxiliarySkuAOne), + string(NetworkInterfaceAuxiliarySkuATwo), + string(NetworkInterfaceAuxiliarySkuNone), + } +} + +func (s *NetworkInterfaceAuxiliarySku) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliarySku(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliarySku(input string) (*NetworkInterfaceAuxiliarySku, error) { + vals := map[string]NetworkInterfaceAuxiliarySku{ + "a8": NetworkInterfaceAuxiliarySkuAEight, + "a4": NetworkInterfaceAuxiliarySkuAFour, + "a1": NetworkInterfaceAuxiliarySkuAOne, + "a2": NetworkInterfaceAuxiliarySkuATwo, + "none": NetworkInterfaceAuxiliarySkuNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliarySku(input) + return &out, nil +} + +type NetworkInterfaceMigrationPhase string + +const ( + NetworkInterfaceMigrationPhaseAbort NetworkInterfaceMigrationPhase = "Abort" + NetworkInterfaceMigrationPhaseCommit NetworkInterfaceMigrationPhase = "Commit" + NetworkInterfaceMigrationPhaseCommitted NetworkInterfaceMigrationPhase = "Committed" + NetworkInterfaceMigrationPhaseNone NetworkInterfaceMigrationPhase = "None" + NetworkInterfaceMigrationPhasePrepare NetworkInterfaceMigrationPhase = "Prepare" +) + +func PossibleValuesForNetworkInterfaceMigrationPhase() []string { + return []string{ + string(NetworkInterfaceMigrationPhaseAbort), + string(NetworkInterfaceMigrationPhaseCommit), + string(NetworkInterfaceMigrationPhaseCommitted), + string(NetworkInterfaceMigrationPhaseNone), + string(NetworkInterfaceMigrationPhasePrepare), + } +} + +func (s *NetworkInterfaceMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceMigrationPhase(input string) (*NetworkInterfaceMigrationPhase, error) { + vals := map[string]NetworkInterfaceMigrationPhase{ + "abort": NetworkInterfaceMigrationPhaseAbort, + "commit": NetworkInterfaceMigrationPhaseCommit, + "committed": NetworkInterfaceMigrationPhaseCommitted, + "none": NetworkInterfaceMigrationPhaseNone, + "prepare": NetworkInterfaceMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceMigrationPhase(input) + return &out, nil +} + +type NetworkInterfaceNicType string + +const ( + NetworkInterfaceNicTypeElastic NetworkInterfaceNicType = "Elastic" + NetworkInterfaceNicTypeStandard NetworkInterfaceNicType = "Standard" +) + +func PossibleValuesForNetworkInterfaceNicType() []string { + return []string{ + string(NetworkInterfaceNicTypeElastic), + string(NetworkInterfaceNicTypeStandard), + } +} + +func (s *NetworkInterfaceNicType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceNicType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceNicType(input string) (*NetworkInterfaceNicType, error) { + vals := map[string]NetworkInterfaceNicType{ + "elastic": NetworkInterfaceNicTypeElastic, + "standard": NetworkInterfaceNicTypeStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceNicType(input) + return &out, nil +} + +type ProtocolType string + +const ( + ProtocolTypeAh ProtocolType = "Ah" + ProtocolTypeAll ProtocolType = "All" + ProtocolTypeDoNotUse ProtocolType = "DoNotUse" + ProtocolTypeEsp ProtocolType = "Esp" + ProtocolTypeGre ProtocolType = "Gre" + ProtocolTypeIcmp ProtocolType = "Icmp" + ProtocolTypeTcp ProtocolType = "Tcp" + ProtocolTypeUdp ProtocolType = "Udp" + ProtocolTypeVxlan ProtocolType = "Vxlan" +) + +func PossibleValuesForProtocolType() []string { + return []string{ + string(ProtocolTypeAh), + string(ProtocolTypeAll), + string(ProtocolTypeDoNotUse), + string(ProtocolTypeEsp), + string(ProtocolTypeGre), + string(ProtocolTypeIcmp), + string(ProtocolTypeTcp), + string(ProtocolTypeUdp), + string(ProtocolTypeVxlan), + } +} + +func (s *ProtocolType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProtocolType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProtocolType(input string) (*ProtocolType, error) { + vals := map[string]ProtocolType{ + "ah": ProtocolTypeAh, + "all": ProtocolTypeAll, + "donotuse": ProtocolTypeDoNotUse, + "esp": ProtocolTypeEsp, + "gre": ProtocolTypeGre, + "icmp": ProtocolTypeIcmp, + "tcp": ProtocolTypeTcp, + "udp": ProtocolTypeUdp, + "vxlan": ProtocolTypeVxlan, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProtocolType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type PublicIPAddressDnsSettingsDomainNameLabelScope string + +const ( + PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "NoReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "ResourceGroupReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "SubscriptionReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "TenantReuse" +) + +func PossibleValuesForPublicIPAddressDnsSettingsDomainNameLabelScope() []string { + return []string{ + string(PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse), + } +} + +func (s *PublicIPAddressDnsSettingsDomainNameLabelScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressDnsSettingsDomainNameLabelScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressDnsSettingsDomainNameLabelScope(input string) (*PublicIPAddressDnsSettingsDomainNameLabelScope, error) { + vals := map[string]PublicIPAddressDnsSettingsDomainNameLabelScope{ + "noreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse, + "resourcegroupreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse, + "subscriptionreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse, + "tenantreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressDnsSettingsDomainNameLabelScope(input) + return &out, nil +} + +type PublicIPAddressMigrationPhase string + +const ( + PublicIPAddressMigrationPhaseAbort PublicIPAddressMigrationPhase = "Abort" + PublicIPAddressMigrationPhaseCommit PublicIPAddressMigrationPhase = "Commit" + PublicIPAddressMigrationPhaseCommitted PublicIPAddressMigrationPhase = "Committed" + PublicIPAddressMigrationPhaseNone PublicIPAddressMigrationPhase = "None" + PublicIPAddressMigrationPhasePrepare PublicIPAddressMigrationPhase = "Prepare" +) + +func PossibleValuesForPublicIPAddressMigrationPhase() []string { + return []string{ + string(PublicIPAddressMigrationPhaseAbort), + string(PublicIPAddressMigrationPhaseCommit), + string(PublicIPAddressMigrationPhaseCommitted), + string(PublicIPAddressMigrationPhaseNone), + string(PublicIPAddressMigrationPhasePrepare), + } +} + +func (s *PublicIPAddressMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressMigrationPhase(input string) (*PublicIPAddressMigrationPhase, error) { + vals := map[string]PublicIPAddressMigrationPhase{ + "abort": PublicIPAddressMigrationPhaseAbort, + "commit": PublicIPAddressMigrationPhaseCommit, + "committed": PublicIPAddressMigrationPhaseCommitted, + "none": PublicIPAddressMigrationPhaseNone, + "prepare": PublicIPAddressMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressMigrationPhase(input) + return &out, nil +} + +type PublicIPAddressSkuName string + +const ( + PublicIPAddressSkuNameBasic PublicIPAddressSkuName = "Basic" + PublicIPAddressSkuNameStandard PublicIPAddressSkuName = "Standard" +) + +func PossibleValuesForPublicIPAddressSkuName() []string { + return []string{ + string(PublicIPAddressSkuNameBasic), + string(PublicIPAddressSkuNameStandard), + } +} + +func (s *PublicIPAddressSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuName(input string) (*PublicIPAddressSkuName, error) { + vals := map[string]PublicIPAddressSkuName{ + "basic": PublicIPAddressSkuNameBasic, + "standard": PublicIPAddressSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuName(input) + return &out, nil +} + +type PublicIPAddressSkuTier string + +const ( + PublicIPAddressSkuTierGlobal PublicIPAddressSkuTier = "Global" + PublicIPAddressSkuTierRegional PublicIPAddressSkuTier = "Regional" +) + +func PossibleValuesForPublicIPAddressSkuTier() []string { + return []string{ + string(PublicIPAddressSkuTierGlobal), + string(PublicIPAddressSkuTierRegional), + } +} + +func (s *PublicIPAddressSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuTier(input string) (*PublicIPAddressSkuTier, error) { + vals := map[string]PublicIPAddressSkuTier{ + "global": PublicIPAddressSkuTierGlobal, + "regional": PublicIPAddressSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuTier(input) + return &out, nil +} + +type RouteNextHopType string + +const ( + RouteNextHopTypeInternet RouteNextHopType = "Internet" + RouteNextHopTypeNone RouteNextHopType = "None" + RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" + RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" + RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" +) + +func PossibleValuesForRouteNextHopType() []string { + return []string{ + string(RouteNextHopTypeInternet), + string(RouteNextHopTypeNone), + string(RouteNextHopTypeVirtualAppliance), + string(RouteNextHopTypeVirtualNetworkGateway), + string(RouteNextHopTypeVnetLocal), + } +} + +func (s *RouteNextHopType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteNextHopType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteNextHopType(input string) (*RouteNextHopType, error) { + vals := map[string]RouteNextHopType{ + "internet": RouteNextHopTypeInternet, + "none": RouteNextHopTypeNone, + "virtualappliance": RouteNextHopTypeVirtualAppliance, + "virtualnetworkgateway": RouteNextHopTypeVirtualNetworkGateway, + "vnetlocal": RouteNextHopTypeVnetLocal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteNextHopType(input) + return &out, nil +} + +type SecurityRuleAccess string + +const ( + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +func PossibleValuesForSecurityRuleAccess() []string { + return []string{ + string(SecurityRuleAccessAllow), + string(SecurityRuleAccessDeny), + } +} + +func (s *SecurityRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleAccess(input string) (*SecurityRuleAccess, error) { + vals := map[string]SecurityRuleAccess{ + "allow": SecurityRuleAccessAllow, + "deny": SecurityRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleAccess(input) + return &out, nil +} + +type SecurityRuleDirection string + +const ( + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityRuleDirection() []string { + return []string{ + string(SecurityRuleDirectionInbound), + string(SecurityRuleDirectionOutbound), + } +} + +func (s *SecurityRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleDirection(input string) (*SecurityRuleDirection, error) { + vals := map[string]SecurityRuleDirection{ + "inbound": SecurityRuleDirectionInbound, + "outbound": SecurityRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleDirection(input) + return &out, nil +} + +type SecurityRuleProtocol string + +const ( + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + SecurityRuleProtocolAny SecurityRuleProtocol = "*" + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + SecurityRuleProtocolTcp SecurityRuleProtocol = "Tcp" + SecurityRuleProtocolUdp SecurityRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityRuleProtocol() []string { + return []string{ + string(SecurityRuleProtocolAh), + string(SecurityRuleProtocolAny), + string(SecurityRuleProtocolEsp), + string(SecurityRuleProtocolIcmp), + string(SecurityRuleProtocolTcp), + string(SecurityRuleProtocolUdp), + } +} + +func (s *SecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleProtocol(input string) (*SecurityRuleProtocol, error) { + vals := map[string]SecurityRuleProtocol{ + "ah": SecurityRuleProtocolAh, + "*": SecurityRuleProtocolAny, + "esp": SecurityRuleProtocolEsp, + "icmp": SecurityRuleProtocolIcmp, + "tcp": SecurityRuleProtocolTcp, + "udp": SecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleProtocol(input) + return &out, nil +} + +type SharingScope string + +const ( + SharingScopeDelegatedServices SharingScope = "DelegatedServices" + SharingScopeTenant SharingScope = "Tenant" +) + +func PossibleValuesForSharingScope() []string { + return []string{ + string(SharingScopeDelegatedServices), + string(SharingScopeTenant), + } +} + +func (s *SharingScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSharingScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSharingScope(input string) (*SharingScope, error) { + vals := map[string]SharingScope{ + "delegatedservices": SharingScopeDelegatedServices, + "tenant": SharingScopeTenant, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SharingScope(input) + return &out, nil +} + +type SyncMode string + +const ( + SyncModeAutomatic SyncMode = "Automatic" + SyncModeManual SyncMode = "Manual" +) + +func PossibleValuesForSyncMode() []string { + return []string{ + string(SyncModeAutomatic), + string(SyncModeManual), + } +} + +func (s *SyncMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSyncMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSyncMode(input string) (*SyncMode, error) { + vals := map[string]SyncMode{ + "automatic": SyncModeAutomatic, + "manual": SyncModeManual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SyncMode(input) + return &out, nil +} + +type TransportProtocol string + +const ( + TransportProtocolAll TransportProtocol = "All" + TransportProtocolTcp TransportProtocol = "Tcp" + TransportProtocolUdp TransportProtocol = "Udp" +) + +func PossibleValuesForTransportProtocol() []string { + return []string{ + string(TransportProtocolAll), + string(TransportProtocolTcp), + string(TransportProtocolUdp), + } +} + +func (s *TransportProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseTransportProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseTransportProtocol(input string) (*TransportProtocol, error) { + vals := map[string]TransportProtocol{ + "all": TransportProtocolAll, + "tcp": TransportProtocolTcp, + "udp": TransportProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := TransportProtocol(input) + return &out, nil +} + +type VirtualNetworkPrivateEndpointNetworkPolicies string + +const ( + VirtualNetworkPrivateEndpointNetworkPoliciesDisabled VirtualNetworkPrivateEndpointNetworkPolicies = "Disabled" + VirtualNetworkPrivateEndpointNetworkPoliciesEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "Enabled" + VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "NetworkSecurityGroupEnabled" + VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "RouteTableEnabled" +) + +func PossibleValuesForVirtualNetworkPrivateEndpointNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateEndpointNetworkPoliciesDisabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled), + } +} + +func (s *VirtualNetworkPrivateEndpointNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateEndpointNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateEndpointNetworkPolicies(input string) (*VirtualNetworkPrivateEndpointNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateEndpointNetworkPolicies{ + "disabled": VirtualNetworkPrivateEndpointNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateEndpointNetworkPoliciesEnabled, + "networksecuritygroupenabled": VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled, + "routetableenabled": VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateEndpointNetworkPolicies(input) + return &out, nil +} + +type VirtualNetworkPrivateLinkServiceNetworkPolicies string + +const ( + VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Disabled" + VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Enabled" +) + +func PossibleValuesForVirtualNetworkPrivateLinkServiceNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled), + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled), + } +} + +func (s *VirtualNetworkPrivateLinkServiceNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateLinkServiceNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateLinkServiceNetworkPolicies(input string) (*VirtualNetworkPrivateLinkServiceNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateLinkServiceNetworkPolicies{ + "disabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateLinkServiceNetworkPolicies(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/id_dscpconfiguration.go b/resource-manager/network/2024-01-01/dscpconfiguration/id_dscpconfiguration.go new file mode 100644 index 00000000000..8eb56f33d98 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/id_dscpconfiguration.go @@ -0,0 +1,130 @@ +package dscpconfiguration + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&DscpConfigurationId{}) +} + +var _ resourceids.ResourceId = &DscpConfigurationId{} + +// DscpConfigurationId is a struct representing the Resource ID for a Dscp Configuration +type DscpConfigurationId struct { + SubscriptionId string + ResourceGroupName string + DscpConfigurationName string +} + +// NewDscpConfigurationID returns a new DscpConfigurationId struct +func NewDscpConfigurationID(subscriptionId string, resourceGroupName string, dscpConfigurationName string) DscpConfigurationId { + return DscpConfigurationId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + DscpConfigurationName: dscpConfigurationName, + } +} + +// ParseDscpConfigurationID parses 'input' into a DscpConfigurationId +func ParseDscpConfigurationID(input string) (*DscpConfigurationId, error) { + parser := resourceids.NewParserFromResourceIdType(&DscpConfigurationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := DscpConfigurationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseDscpConfigurationIDInsensitively parses 'input' case-insensitively into a DscpConfigurationId +// note: this method should only be used for API response data and not user input +func ParseDscpConfigurationIDInsensitively(input string) (*DscpConfigurationId, error) { + parser := resourceids.NewParserFromResourceIdType(&DscpConfigurationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := DscpConfigurationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *DscpConfigurationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.DscpConfigurationName, ok = input.Parsed["dscpConfigurationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "dscpConfigurationName", input) + } + + return nil +} + +// ValidateDscpConfigurationID checks that 'input' can be parsed as a Dscp Configuration ID +func ValidateDscpConfigurationID(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 := ParseDscpConfigurationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Dscp Configuration ID +func (id DscpConfigurationId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/dscpConfigurations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.DscpConfigurationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Dscp Configuration ID +func (id DscpConfigurationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticDscpConfigurations", "dscpConfigurations", "dscpConfigurations"), + resourceids.UserSpecifiedSegment("dscpConfigurationName", "dscpConfigurationValue"), + } +} + +// String returns a human-readable description of this Dscp Configuration ID +func (id DscpConfigurationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Dscp Configuration Name: %q", id.DscpConfigurationName), + } + return fmt.Sprintf("Dscp Configuration (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/id_dscpconfiguration_test.go b/resource-manager/network/2024-01-01/dscpconfiguration/id_dscpconfiguration_test.go new file mode 100644 index 00000000000..c30eb45fbe9 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/id_dscpconfiguration_test.go @@ -0,0 +1,282 @@ +package dscpconfiguration + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &DscpConfigurationId{} + +func TestNewDscpConfigurationID(t *testing.T) { + id := NewDscpConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "dscpConfigurationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.DscpConfigurationName != "dscpConfigurationValue" { + t.Fatalf("Expected %q but got %q for Segment 'DscpConfigurationName'", id.DscpConfigurationName, "dscpConfigurationValue") + } +} + +func TestFormatDscpConfigurationID(t *testing.T) { + actual := NewDscpConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "dscpConfigurationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/dscpConfigurations/dscpConfigurationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseDscpConfigurationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *DscpConfigurationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/dscpConfigurations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/dscpConfigurations/dscpConfigurationValue", + Expected: &DscpConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + DscpConfigurationName: "dscpConfigurationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/dscpConfigurations/dscpConfigurationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseDscpConfigurationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.DscpConfigurationName != v.Expected.DscpConfigurationName { + t.Fatalf("Expected %q but got %q for DscpConfigurationName", v.Expected.DscpConfigurationName, actual.DscpConfigurationName) + } + + } +} + +func TestParseDscpConfigurationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *DscpConfigurationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/dscpConfigurations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/dScPcOnFiGuRaTiOnS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/dscpConfigurations/dscpConfigurationValue", + Expected: &DscpConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + DscpConfigurationName: "dscpConfigurationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/dscpConfigurations/dscpConfigurationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/dScPcOnFiGuRaTiOnS/dScPcOnFiGuRaTiOnVaLuE", + Expected: &DscpConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + DscpConfigurationName: "dScPcOnFiGuRaTiOnVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/dScPcOnFiGuRaTiOnS/dScPcOnFiGuRaTiOnVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseDscpConfigurationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.DscpConfigurationName != v.Expected.DscpConfigurationName { + t.Fatalf("Expected %q but got %q for DscpConfigurationName", v.Expected.DscpConfigurationName, actual.DscpConfigurationName) + } + + } +} + +func TestSegmentsForDscpConfigurationId(t *testing.T) { + segments := DscpConfigurationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("DscpConfigurationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/method_createorupdate.go b/resource-manager/network/2024-01-01/dscpconfiguration/method_createorupdate.go new file mode 100644 index 00000000000..e2262349c4f --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/method_createorupdate.go @@ -0,0 +1,75 @@ +package dscpconfiguration + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *DscpConfiguration +} + +// CreateOrUpdate ... +func (c DscpConfigurationClient) CreateOrUpdate(ctx context.Context, id DscpConfigurationId, input DscpConfiguration) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c DscpConfigurationClient) CreateOrUpdateThenPoll(ctx context.Context, id DscpConfigurationId, input DscpConfiguration) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/method_delete.go b/resource-manager/network/2024-01-01/dscpconfiguration/method_delete.go new file mode 100644 index 00000000000..85639c01f9b --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/method_delete.go @@ -0,0 +1,71 @@ +package dscpconfiguration + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c DscpConfigurationClient) Delete(ctx context.Context, id DscpConfigurationId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c DscpConfigurationClient) DeleteThenPoll(ctx context.Context, id DscpConfigurationId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/method_get.go b/resource-manager/network/2024-01-01/dscpconfiguration/method_get.go new file mode 100644 index 00000000000..1563a9b978b --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/method_get.go @@ -0,0 +1,54 @@ +package dscpconfiguration + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *DscpConfiguration +} + +// Get ... +func (c DscpConfigurationClient) Get(ctx context.Context, id DscpConfigurationId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model DscpConfiguration + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_applicationgatewaybackendaddress.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_applicationgatewaybackendaddress.go new file mode 100644 index 00000000000..440846baae7 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_applicationgatewaybackendaddress.go @@ -0,0 +1,9 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddress struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_applicationgatewaybackendaddresspool.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_applicationgatewaybackendaddresspool.go new file mode 100644 index 00000000000..663b98879ff --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_applicationgatewaybackendaddresspool.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_applicationgatewaybackendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_applicationgatewaybackendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..5070a712a0c --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_applicationgatewaybackendaddresspoolpropertiesformat.go @@ -0,0 +1,10 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPoolPropertiesFormat struct { + BackendAddresses *[]ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"` + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_applicationgatewayipconfiguration.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_applicationgatewayipconfiguration.go new file mode 100644 index 00000000000..a3ca72a1804 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_applicationgatewayipconfiguration.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_applicationgatewayipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_applicationgatewayipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..2072ac671c8 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_applicationgatewayipconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..067b344a691 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..4a7009c2a6b --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_backendaddresspool.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_backendaddresspool.go new file mode 100644 index 00000000000..fdc704e5a94 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_backendaddresspool.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_backendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_backendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..8bbfd2e47e3 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_backendaddresspoolpropertiesformat.go @@ -0,0 +1,19 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPoolPropertiesFormat struct { + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + DrainPeriodInSeconds *int64 `json:"drainPeriodInSeconds,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancerBackendAddresses *[]LoadBalancerBackendAddress `json:"loadBalancerBackendAddresses,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + Location *string `json:"location,omitempty"` + OutboundRule *SubResource `json:"outboundRule,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SyncMode *SyncMode `json:"syncMode,omitempty"` + TunnelInterfaces *[]GatewayLoadBalancerTunnelInterface `json:"tunnelInterfaces,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_customdnsconfigpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_customdnsconfigpropertiesformat.go new file mode 100644 index 00000000000..2a2e974962b --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_customdnsconfigpropertiesformat.go @@ -0,0 +1,9 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomDnsConfigPropertiesFormat struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_ddossettings.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_ddossettings.go new file mode 100644 index 00000000000..dca2e7cd55f --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_ddossettings.go @@ -0,0 +1,9 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettings struct { + DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"` + ProtectionMode *DdosSettingsProtectionMode `json:"protectionMode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_delegation.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_delegation.go new file mode 100644 index 00000000000..8c1fa9b43c0 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_delegation.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Delegation struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceDelegationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_dscpconfiguration.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_dscpconfiguration.go new file mode 100644 index 00000000000..04e403de3a4 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_dscpconfiguration.go @@ -0,0 +1,14 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DscpConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *DscpConfigurationPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_dscpconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_dscpconfigurationpropertiesformat.go new file mode 100644 index 00000000000..97130781ef7 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_dscpconfigurationpropertiesformat.go @@ -0,0 +1,18 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DscpConfigurationPropertiesFormat struct { + AssociatedNetworkInterfaces *[]NetworkInterface `json:"associatedNetworkInterfaces,omitempty"` + DestinationIPRanges *[]QosIPRange `json:"destinationIpRanges,omitempty"` + DestinationPortRanges *[]QosPortRange `json:"destinationPortRanges,omitempty"` + Markings *[]int64 `json:"markings,omitempty"` + Protocol *ProtocolType `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + QosCollectionId *string `json:"qosCollectionId,omitempty"` + QosDefinitionCollection *[]QosDefinition `json:"qosDefinitionCollection,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SourceIPRanges *[]QosIPRange `json:"sourceIpRanges,omitempty"` + SourcePortRanges *[]QosPortRange `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_flowlog.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_flowlog.go new file mode 100644 index 00000000000..bf6d8780460 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_flowlog.go @@ -0,0 +1,19 @@ +package dscpconfiguration + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLog struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FlowLogPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_flowlogformatparameters.go new file mode 100644 index 00000000000..f759162156c --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_flowlogpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_flowlogpropertiesformat.go new file mode 100644 index 00000000000..71ebfa45fde --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_flowlogpropertiesformat.go @@ -0,0 +1,15 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogPropertiesFormat struct { + Enabled *bool `json:"enabled,omitempty"` + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` + TargetResourceGuid *string `json:"targetResourceGuid,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_frontendipconfiguration.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_frontendipconfiguration.go new file mode 100644 index 00000000000..e5b91931aa4 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_frontendipconfiguration.go @@ -0,0 +1,17 @@ +package dscpconfiguration + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_frontendipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_frontendipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..cc67d340130 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_frontendipconfigurationpropertiesformat.go @@ -0,0 +1,19 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfigurationPropertiesFormat struct { + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + InboundNatPools *[]SubResource `json:"inboundNatPools,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_gatewayloadbalancertunnelinterface.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_gatewayloadbalancertunnelinterface.go new file mode 100644 index 00000000000..c498ae3b999 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_gatewayloadbalancertunnelinterface.go @@ -0,0 +1,11 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayLoadBalancerTunnelInterface struct { + Identifier *int64 `json:"identifier,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *GatewayLoadBalancerTunnelProtocol `json:"protocol,omitempty"` + Type *GatewayLoadBalancerTunnelInterfaceType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_inboundnatrule.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_inboundnatrule.go new file mode 100644 index 00000000000..cae42b6f078 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_inboundnatrule.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundNatRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_inboundnatrulepropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_inboundnatrulepropertiesformat.go new file mode 100644 index 00000000000..6ee4c243e27 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_inboundnatrulepropertiesformat.go @@ -0,0 +1,19 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendIPConfiguration *NetworkInterfaceIPConfiguration `json:"backendIPConfiguration,omitempty"` + BackendPort *int64 `json:"backendPort,omitempty"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + FrontendPortRangeEnd *int64 `json:"frontendPortRangeEnd,omitempty"` + FrontendPortRangeStart *int64 `json:"frontendPortRangeStart,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol *TransportProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_ipconfiguration.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_ipconfiguration.go new file mode 100644 index 00000000000..b79aa52af20 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_ipconfiguration.go @@ -0,0 +1,11 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_ipconfigurationprofile.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_ipconfigurationprofile.go new file mode 100644 index 00000000000..51858f8645f --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_ipconfigurationprofile.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationProfilePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_ipconfigurationprofilepropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_ipconfigurationprofilepropertiesformat.go new file mode 100644 index 00000000000..1a288ffd425 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_ipconfigurationprofilepropertiesformat.go @@ -0,0 +1,9 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfilePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_ipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_ipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..1c2988eec98 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_ipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_iptag.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_iptag.go new file mode 100644 index 00000000000..f54e708d614 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_iptag.go @@ -0,0 +1,9 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPTag struct { + IPTagType *string `json:"ipTagType,omitempty"` + Tag *string `json:"tag,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_loadbalancerbackendaddress.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_loadbalancerbackendaddress.go new file mode 100644 index 00000000000..cf9e4a0b97f --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_loadbalancerbackendaddress.go @@ -0,0 +1,9 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddress struct { + Name *string `json:"name,omitempty"` + Properties *LoadBalancerBackendAddressPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_loadbalancerbackendaddresspropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_loadbalancerbackendaddresspropertiesformat.go new file mode 100644 index 00000000000..f1b9e0732ac --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_loadbalancerbackendaddresspropertiesformat.go @@ -0,0 +1,14 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPropertiesFormat struct { + AdminState *LoadBalancerBackendAddressAdminState `json:"adminState,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + InboundNatRulesPortMapping *[]NatRulePortMapping `json:"inboundNatRulesPortMapping,omitempty"` + LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIPConfiguration,omitempty"` + NetworkInterfaceIPConfiguration *SubResource `json:"networkInterfaceIPConfiguration,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_natgateway.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_natgateway.go new file mode 100644 index 00000000000..bd2135c7219 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_natgateway.go @@ -0,0 +1,20 @@ +package dscpconfiguration + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"` + Sku *NatGatewaySku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_natgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_natgatewaypropertiesformat.go new file mode 100644 index 00000000000..a748c883e51 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_natgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayPropertiesFormat struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]SubResource `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_natgatewaysku.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_natgatewaysku.go new file mode 100644 index 00000000000..38065785ee7 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_natgatewaysku.go @@ -0,0 +1,8 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySku struct { + Name *NatGatewaySkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_natruleportmapping.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_natruleportmapping.go new file mode 100644 index 00000000000..4f0a40c3c84 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_natruleportmapping.go @@ -0,0 +1,10 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulePortMapping struct { + BackendPort *int64 `json:"backendPort,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + InboundNatRuleName *string `json:"inboundNatRuleName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterface.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterface.go new file mode 100644 index 00000000000..2c8dff0b372 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterface.go @@ -0,0 +1,19 @@ +package dscpconfiguration + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterface struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfacePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterfacednssettings.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterfacednssettings.go new file mode 100644 index 00000000000..db01e0a6931 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterfacednssettings.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceDnsSettings struct { + AppliedDnsServers *[]string `json:"appliedDnsServers,omitempty"` + DnsServers *[]string `json:"dnsServers,omitempty"` + InternalDnsNameLabel *string `json:"internalDnsNameLabel,omitempty"` + InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty"` + InternalFqdn *string `json:"internalFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterfaceipconfiguration.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterfaceipconfiguration.go new file mode 100644 index 00000000000..cbe1f2ef1bc --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterfaceipconfiguration.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go new file mode 100644 index 00000000000..1901cc2fecb --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go @@ -0,0 +1,10 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties struct { + Fqdns *[]string `json:"fqdns,omitempty"` + GroupId *string `json:"groupId,omitempty"` + RequiredMemberName *string `json:"requiredMemberName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterfaceipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterfaceipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..a54e9fc0792 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterfaceipconfigurationpropertiesformat.go @@ -0,0 +1,22 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPropertiesFormat struct { + ApplicationGatewayBackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"applicationGatewayBackendAddressPools,omitempty"` + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + LoadBalancerBackendAddressPools *[]BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"` + LoadBalancerInboundNatRules *[]InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressPrefixLength *int64 `json:"privateIPAddressPrefixLength,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + PrivateLinkConnectionProperties *NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties `json:"privateLinkConnectionProperties,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` + VirtualNetworkTaps *[]VirtualNetworkTap `json:"virtualNetworkTaps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterfacepropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterfacepropertiesformat.go new file mode 100644 index 00000000000..d01f01f77fa --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterfacepropertiesformat.go @@ -0,0 +1,29 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfacePropertiesFormat struct { + AuxiliaryMode *NetworkInterfaceAuxiliaryMode `json:"auxiliaryMode,omitempty"` + AuxiliarySku *NetworkInterfaceAuxiliarySku `json:"auxiliarySku,omitempty"` + DisableTcpStateTracking *bool `json:"disableTcpStateTracking,omitempty"` + DnsSettings *NetworkInterfaceDnsSettings `json:"dnsSettings,omitempty"` + DscpConfiguration *SubResource `json:"dscpConfiguration,omitempty"` + EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"` + EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"` + HostedWorkloads *[]string `json:"hostedWorkloads,omitempty"` + IPConfigurations *[]NetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + MacAddress *string `json:"macAddress,omitempty"` + MigrationPhase *NetworkInterfaceMigrationPhase `json:"migrationPhase,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + NicType *NetworkInterfaceNicType `json:"nicType,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkService *PrivateLinkService `json:"privateLinkService,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + TapConfigurations *[]NetworkInterfaceTapConfiguration `json:"tapConfigurations,omitempty"` + VirtualMachine *SubResource `json:"virtualMachine,omitempty"` + VnetEncryptionSupported *bool `json:"vnetEncryptionSupported,omitempty"` + WorkloadType *string `json:"workloadType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterfacetapconfiguration.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterfacetapconfiguration.go new file mode 100644 index 00000000000..9141e163666 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterfacetapconfiguration.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceTapConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterfacetapconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterfacetapconfigurationpropertiesformat.go new file mode 100644 index 00000000000..b1504509e4c --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_networkinterfacetapconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualNetworkTap *VirtualNetworkTap `json:"virtualNetworkTap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_networksecuritygroup.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_networksecuritygroup.go new file mode 100644 index 00000000000..79ddb5537a1 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_networksecuritygroup.go @@ -0,0 +1,14 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_networksecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_networksecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..76177bde258 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_networksecuritygrouppropertiesformat.go @@ -0,0 +1,15 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupPropertiesFormat struct { + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + FlowLogs *[]FlowLog `json:"flowLogs,omitempty"` + FlushConnection *bool `json:"flushConnection,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_privateendpoint.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_privateendpoint.go new file mode 100644 index 00000000000..b8b7f950b24 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_privateendpoint.go @@ -0,0 +1,19 @@ +package dscpconfiguration + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpoint struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_privateendpointconnection.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_privateendpointconnection.go new file mode 100644 index 00000000000..f374ac95239 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_privateendpointconnection.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_privateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_privateendpointconnectionproperties.go new file mode 100644 index 00000000000..a3590daea44 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_privateendpointconnectionproperties.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateEndpointLocation *string `json:"privateEndpointLocation,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_privateendpointipconfiguration.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_privateendpointipconfiguration.go new file mode 100644 index 00000000000..d15e9404362 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_privateendpointipconfiguration.go @@ -0,0 +1,11 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_privateendpointipconfigurationproperties.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_privateendpointipconfigurationproperties.go new file mode 100644 index 00000000000..fbd74e39c9c --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_privateendpointipconfigurationproperties.go @@ -0,0 +1,10 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfigurationProperties struct { + GroupId *string `json:"groupId,omitempty"` + MemberName *string `json:"memberName,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_privateendpointproperties.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_privateendpointproperties.go new file mode 100644 index 00000000000..9bddc7a4349 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_privateendpointproperties.go @@ -0,0 +1,16 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointProperties struct { + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + CustomDnsConfigs *[]CustomDnsConfigPropertiesFormat `json:"customDnsConfigs,omitempty"` + CustomNetworkInterfaceName *string `json:"customNetworkInterfaceName,omitempty"` + IPConfigurations *[]PrivateEndpointIPConfiguration `json:"ipConfigurations,omitempty"` + ManualPrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"manualPrivateLinkServiceConnections,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"privateLinkServiceConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_privatelinkservice.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_privatelinkservice.go new file mode 100644 index 00000000000..3f4dea0d52f --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_privatelinkservice.go @@ -0,0 +1,19 @@ +package dscpconfiguration + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkService struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_privatelinkserviceconnection.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_privatelinkserviceconnection.go new file mode 100644 index 00000000000..ca5cf780e20 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_privatelinkserviceconnection.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_privatelinkserviceconnectionproperties.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_privatelinkserviceconnectionproperties.go new file mode 100644 index 00000000000..7fa3b795937 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_privatelinkserviceconnectionproperties.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionProperties struct { + GroupIds *[]string `json:"groupIds,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + PrivateLinkServiceId *string `json:"privateLinkServiceId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestMessage *string `json:"requestMessage,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_privatelinkserviceconnectionstate.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_privatelinkserviceconnectionstate.go new file mode 100644 index 00000000000..003e73140c9 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_privatelinkserviceconnectionstate.go @@ -0,0 +1,10 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionState struct { + ActionsRequired *string `json:"actionsRequired,omitempty"` + Description *string `json:"description,omitempty"` + Status *string `json:"status,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_privatelinkserviceipconfiguration.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_privatelinkserviceipconfiguration.go new file mode 100644 index 00000000000..1a98c978c4e --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_privatelinkserviceipconfiguration.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_privatelinkserviceipconfigurationproperties.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_privatelinkserviceipconfigurationproperties.go new file mode 100644 index 00000000000..298e27cde46 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_privatelinkserviceipconfigurationproperties.go @@ -0,0 +1,13 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_privatelinkserviceproperties.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_privatelinkserviceproperties.go new file mode 100644 index 00000000000..1852ce3fa31 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_privatelinkserviceproperties.go @@ -0,0 +1,17 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceProperties struct { + Alias *string `json:"alias,omitempty"` + AutoApproval *ResourceSet `json:"autoApproval,omitempty"` + EnableProxyProtocol *bool `json:"enableProxyProtocol,omitempty"` + Fqdns *[]string `json:"fqdns,omitempty"` + IPConfigurations *[]PrivateLinkServiceIPConfiguration `json:"ipConfigurations,omitempty"` + LoadBalancerFrontendIPConfigurations *[]FrontendIPConfiguration `json:"loadBalancerFrontendIpConfigurations,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Visibility *ResourceSet `json:"visibility,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_publicipaddress.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_publicipaddress.go new file mode 100644 index 00000000000..d57ce42d098 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_publicipaddress.go @@ -0,0 +1,22 @@ +package dscpconfiguration + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddress struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PublicIPAddressPropertiesFormat `json:"properties,omitempty"` + Sku *PublicIPAddressSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_publicipaddressdnssettings.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_publicipaddressdnssettings.go new file mode 100644 index 00000000000..9c3cb7a4ffe --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_publicipaddressdnssettings.go @@ -0,0 +1,11 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressDnsSettings struct { + DomainNameLabel *string `json:"domainNameLabel,omitempty"` + DomainNameLabelScope *PublicIPAddressDnsSettingsDomainNameLabelScope `json:"domainNameLabelScope,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + ReverseFqdn *string `json:"reverseFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_publicipaddresspropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_publicipaddresspropertiesformat.go new file mode 100644 index 00000000000..2745ba7952e --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_publicipaddresspropertiesformat.go @@ -0,0 +1,23 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressPropertiesFormat struct { + DdosSettings *DdosSettings `json:"ddosSettings,omitempty"` + DeleteOption *DeleteOptions `json:"deleteOption,omitempty"` + DnsSettings *PublicIPAddressDnsSettings `json:"dnsSettings,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty"` + IPTags *[]IPTag `json:"ipTags,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + LinkedPublicIPAddress *PublicIPAddress `json:"linkedPublicIPAddress,omitempty"` + MigrationPhase *PublicIPAddressMigrationPhase `json:"migrationPhase,omitempty"` + NatGateway *NatGateway `json:"natGateway,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"` + PublicIPAllocationMethod *IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServicePublicIPAddress *PublicIPAddress `json:"servicePublicIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_publicipaddresssku.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_publicipaddresssku.go new file mode 100644 index 00000000000..184f29e9bf9 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_publicipaddresssku.go @@ -0,0 +1,9 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressSku struct { + Name *PublicIPAddressSkuName `json:"name,omitempty"` + Tier *PublicIPAddressSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_qosdefinition.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_qosdefinition.go new file mode 100644 index 00000000000..ad3c5e88a17 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_qosdefinition.go @@ -0,0 +1,13 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type QosDefinition struct { + DestinationIPRanges *[]QosIPRange `json:"destinationIpRanges,omitempty"` + DestinationPortRanges *[]QosPortRange `json:"destinationPortRanges,omitempty"` + Markings *[]int64 `json:"markings,omitempty"` + Protocol *ProtocolType `json:"protocol,omitempty"` + SourceIPRanges *[]QosIPRange `json:"sourceIpRanges,omitempty"` + SourcePortRanges *[]QosPortRange `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_qosiprange.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_qosiprange.go new file mode 100644 index 00000000000..9de17d31fd5 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_qosiprange.go @@ -0,0 +1,9 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type QosIPRange struct { + EndIP *string `json:"endIP,omitempty"` + StartIP *string `json:"startIP,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_qosportrange.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_qosportrange.go new file mode 100644 index 00000000000..fec0d277115 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_qosportrange.go @@ -0,0 +1,9 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type QosPortRange struct { + End *int64 `json:"end,omitempty"` + Start *int64 `json:"start,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_resourcenavigationlink.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_resourcenavigationlink.go new file mode 100644 index 00000000000..e5b6bc9921c --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_resourcenavigationlink.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ResourceNavigationLinkFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_resourcenavigationlinkformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_resourcenavigationlinkformat.go new file mode 100644 index 00000000000..7119a8ad8fd --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_resourcenavigationlinkformat.go @@ -0,0 +1,10 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLinkFormat struct { + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_resourceset.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_resourceset.go new file mode 100644 index 00000000000..eb8146e0601 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_resourceset.go @@ -0,0 +1,8 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceSet struct { + Subscriptions *[]string `json:"subscriptions,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..73bc84cb5f0 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_route.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_route.go new file mode 100644 index 00000000000..43d479a10b9 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_route.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Route struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RoutePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_routepropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_routepropertiesformat.go new file mode 100644 index 00000000000..f0ba5752c84 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_routepropertiesformat.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutePropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + HasBgpOverride *bool `json:"hasBgpOverride,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + NextHopType RouteNextHopType `json:"nextHopType"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_routetable.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_routetable.go new file mode 100644 index 00000000000..ffa38a33f5c --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_routetable.go @@ -0,0 +1,14 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTable struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteTablePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_routetablepropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_routetablepropertiesformat.go new file mode 100644 index 00000000000..f2d7db2da04 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_routetablepropertiesformat.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTablePropertiesFormat struct { + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Routes *[]Route `json:"routes,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_securityrule.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_securityrule.go new file mode 100644 index 00000000000..670a04f125b --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_securityrule.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_securityrulepropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_securityrulepropertiesformat.go new file mode 100644 index 00000000000..313bad92221 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_securityrulepropertiesformat.go @@ -0,0 +1,23 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulePropertiesFormat struct { + Access SecurityRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction SecurityRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_serviceassociationlink.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_serviceassociationlink.go new file mode 100644 index 00000000000..51b7b88b0b4 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_serviceassociationlink.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceAssociationLinkPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_serviceassociationlinkpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_serviceassociationlinkpropertiesformat.go new file mode 100644 index 00000000000..e74136ad481 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_serviceassociationlinkpropertiesformat.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLinkPropertiesFormat struct { + AllowDelete *bool `json:"allowDelete,omitempty"` + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + Locations *[]string `json:"locations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_servicedelegationpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_servicedelegationpropertiesformat.go new file mode 100644 index 00000000000..ee33b9b67db --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_servicedelegationpropertiesformat.go @@ -0,0 +1,10 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceDelegationPropertiesFormat struct { + Actions *[]string `json:"actions,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_serviceendpointpolicy.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_serviceendpointpolicy.go new file mode 100644 index 00000000000..a4c7c550a6c --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_serviceendpointpolicy.go @@ -0,0 +1,15 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Kind *string `json:"kind,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_serviceendpointpolicydefinition.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_serviceendpointpolicydefinition.go new file mode 100644 index 00000000000..d902694b0cc --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_serviceendpointpolicydefinition.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinition struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_serviceendpointpolicydefinitionpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_serviceendpointpolicydefinitionpropertiesformat.go new file mode 100644 index 00000000000..acf884117e3 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_serviceendpointpolicydefinitionpropertiesformat.go @@ -0,0 +1,11 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionPropertiesFormat struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` + ServiceResources *[]string `json:"serviceResources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_serviceendpointpolicypropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_serviceendpointpolicypropertiesformat.go new file mode 100644 index 00000000000..94a2649c90d --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_serviceendpointpolicypropertiesformat.go @@ -0,0 +1,13 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyPropertiesFormat struct { + ContextualServiceEndpointPolicies *[]string `json:"contextualServiceEndpointPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServiceAlias *string `json:"serviceAlias,omitempty"` + ServiceEndpointPolicyDefinitions *[]ServiceEndpointPolicyDefinition `json:"serviceEndpointPolicyDefinitions,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_serviceendpointpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_serviceendpointpropertiesformat.go new file mode 100644 index 00000000000..aa82fc5a9eb --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_serviceendpointpropertiesformat.go @@ -0,0 +1,11 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPropertiesFormat struct { + Locations *[]string `json:"locations,omitempty"` + NetworkIdentifier *SubResource `json:"networkIdentifier,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_subnet.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_subnet.go new file mode 100644 index 00000000000..0c94d71385f --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_subnet.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Subnet struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SubnetPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_subnetpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_subnetpropertiesformat.go new file mode 100644 index 00000000000..4a93e0c3017 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_subnetpropertiesformat.go @@ -0,0 +1,28 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + ApplicationGatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"applicationGatewayIPConfigurations,omitempty"` + DefaultOutboundAccess *bool `json:"defaultOutboundAccess,omitempty"` + Delegations *[]Delegation `json:"delegations,omitempty"` + IPAllocations *[]SubResource `json:"ipAllocations,omitempty"` + IPConfigurationProfiles *[]IPConfigurationProfile `json:"ipConfigurationProfiles,omitempty"` + IPConfigurations *[]IPConfiguration `json:"ipConfigurations,omitempty"` + NatGateway *SubResource `json:"natGateway,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + PrivateEndpointNetworkPolicies *VirtualNetworkPrivateEndpointNetworkPolicies `json:"privateEndpointNetworkPolicies,omitempty"` + PrivateEndpoints *[]PrivateEndpoint `json:"privateEndpoints,omitempty"` + PrivateLinkServiceNetworkPolicies *VirtualNetworkPrivateLinkServiceNetworkPolicies `json:"privateLinkServiceNetworkPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Purpose *string `json:"purpose,omitempty"` + ResourceNavigationLinks *[]ResourceNavigationLink `json:"resourceNavigationLinks,omitempty"` + RouteTable *RouteTable `json:"routeTable,omitempty"` + ServiceAssociationLinks *[]ServiceAssociationLink `json:"serviceAssociationLinks,omitempty"` + ServiceEndpointPolicies *[]ServiceEndpointPolicy `json:"serviceEndpointPolicies,omitempty"` + ServiceEndpoints *[]ServiceEndpointPropertiesFormat `json:"serviceEndpoints,omitempty"` + SharingScope *SharingScope `json:"sharingScope,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_subresource.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_subresource.go new file mode 100644 index 00000000000..16bee506d8d --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_subresource.go @@ -0,0 +1,8 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..84d2f9e07a1 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..a1e61262ce4 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_virtualnetworktap.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_virtualnetworktap.go new file mode 100644 index 00000000000..6b0b8a746c6 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_virtualnetworktap.go @@ -0,0 +1,14 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkTapPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/model_virtualnetworktappropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfiguration/model_virtualnetworktappropertiesformat.go new file mode 100644 index 00000000000..cbbb01641bc --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/model_virtualnetworktappropertiesformat.go @@ -0,0 +1,13 @@ +package dscpconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapPropertiesFormat struct { + DestinationLoadBalancerFrontEndIPConfiguration *FrontendIPConfiguration `json:"destinationLoadBalancerFrontEndIPConfiguration,omitempty"` + DestinationNetworkInterfaceIPConfiguration *NetworkInterfaceIPConfiguration `json:"destinationNetworkInterfaceIPConfiguration,omitempty"` + DestinationPort *int64 `json:"destinationPort,omitempty"` + NetworkInterfaceTapConfigurations *[]NetworkInterfaceTapConfiguration `json:"networkInterfaceTapConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfiguration/version.go b/resource-manager/network/2024-01-01/dscpconfiguration/version.go new file mode 100644 index 00000000000..a3feaa39640 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfiguration/version.go @@ -0,0 +1,12 @@ +package dscpconfiguration + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/dscpconfiguration/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/README.md b/resource-manager/network/2024-01-01/dscpconfigurations/README.md new file mode 100644 index 00000000000..e801fe9cc08 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/README.md @@ -0,0 +1,55 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/dscpconfigurations` Documentation + +The `dscpconfigurations` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/dscpconfigurations" +``` + + +### Client Initialization + +```go +client := dscpconfigurations.NewDscpConfigurationsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `DscpConfigurationsClient.DscpConfigurationList` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.DscpConfigurationList(ctx, id)` can be used to do batched pagination +items, err := client.DscpConfigurationListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `DscpConfigurationsClient.DscpConfigurationListAll` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.DscpConfigurationListAll(ctx, id)` can be used to do batched pagination +items, err := client.DscpConfigurationListAllComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/client.go b/resource-manager/network/2024-01-01/dscpconfigurations/client.go new file mode 100644 index 00000000000..ef38b8d0533 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/client.go @@ -0,0 +1,26 @@ +package dscpconfigurations + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DscpConfigurationsClient struct { + Client *resourcemanager.Client +} + +func NewDscpConfigurationsClientWithBaseURI(sdkApi sdkEnv.Api) (*DscpConfigurationsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "dscpconfigurations", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating DscpConfigurationsClient: %+v", err) + } + + return &DscpConfigurationsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/constants.go b/resource-manager/network/2024-01-01/dscpconfigurations/constants.go new file mode 100644 index 00000000000..b23cdf20d54 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/constants.go @@ -0,0 +1,1260 @@ +package dscpconfigurations + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettingsProtectionMode string + +const ( + DdosSettingsProtectionModeDisabled DdosSettingsProtectionMode = "Disabled" + DdosSettingsProtectionModeEnabled DdosSettingsProtectionMode = "Enabled" + DdosSettingsProtectionModeVirtualNetworkInherited DdosSettingsProtectionMode = "VirtualNetworkInherited" +) + +func PossibleValuesForDdosSettingsProtectionMode() []string { + return []string{ + string(DdosSettingsProtectionModeDisabled), + string(DdosSettingsProtectionModeEnabled), + string(DdosSettingsProtectionModeVirtualNetworkInherited), + } +} + +func (s *DdosSettingsProtectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDdosSettingsProtectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDdosSettingsProtectionMode(input string) (*DdosSettingsProtectionMode, error) { + vals := map[string]DdosSettingsProtectionMode{ + "disabled": DdosSettingsProtectionModeDisabled, + "enabled": DdosSettingsProtectionModeEnabled, + "virtualnetworkinherited": DdosSettingsProtectionModeVirtualNetworkInherited, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DdosSettingsProtectionMode(input) + return &out, nil +} + +type DeleteOptions string + +const ( + DeleteOptionsDelete DeleteOptions = "Delete" + DeleteOptionsDetach DeleteOptions = "Detach" +) + +func PossibleValuesForDeleteOptions() []string { + return []string{ + string(DeleteOptionsDelete), + string(DeleteOptionsDetach), + } +} + +func (s *DeleteOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteOptions(input string) (*DeleteOptions, error) { + vals := map[string]DeleteOptions{ + "delete": DeleteOptionsDelete, + "detach": DeleteOptionsDetach, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteOptions(input) + return &out, nil +} + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelInterfaceType string + +const ( + GatewayLoadBalancerTunnelInterfaceTypeExternal GatewayLoadBalancerTunnelInterfaceType = "External" + GatewayLoadBalancerTunnelInterfaceTypeInternal GatewayLoadBalancerTunnelInterfaceType = "Internal" + GatewayLoadBalancerTunnelInterfaceTypeNone GatewayLoadBalancerTunnelInterfaceType = "None" +) + +func PossibleValuesForGatewayLoadBalancerTunnelInterfaceType() []string { + return []string{ + string(GatewayLoadBalancerTunnelInterfaceTypeExternal), + string(GatewayLoadBalancerTunnelInterfaceTypeInternal), + string(GatewayLoadBalancerTunnelInterfaceTypeNone), + } +} + +func (s *GatewayLoadBalancerTunnelInterfaceType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelInterfaceType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelInterfaceType(input string) (*GatewayLoadBalancerTunnelInterfaceType, error) { + vals := map[string]GatewayLoadBalancerTunnelInterfaceType{ + "external": GatewayLoadBalancerTunnelInterfaceTypeExternal, + "internal": GatewayLoadBalancerTunnelInterfaceTypeInternal, + "none": GatewayLoadBalancerTunnelInterfaceTypeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelInterfaceType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelProtocol string + +const ( + GatewayLoadBalancerTunnelProtocolNative GatewayLoadBalancerTunnelProtocol = "Native" + GatewayLoadBalancerTunnelProtocolNone GatewayLoadBalancerTunnelProtocol = "None" + GatewayLoadBalancerTunnelProtocolVXLAN GatewayLoadBalancerTunnelProtocol = "VXLAN" +) + +func PossibleValuesForGatewayLoadBalancerTunnelProtocol() []string { + return []string{ + string(GatewayLoadBalancerTunnelProtocolNative), + string(GatewayLoadBalancerTunnelProtocolNone), + string(GatewayLoadBalancerTunnelProtocolVXLAN), + } +} + +func (s *GatewayLoadBalancerTunnelProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelProtocol(input string) (*GatewayLoadBalancerTunnelProtocol, error) { + vals := map[string]GatewayLoadBalancerTunnelProtocol{ + "native": GatewayLoadBalancerTunnelProtocolNative, + "none": GatewayLoadBalancerTunnelProtocolNone, + "vxlan": GatewayLoadBalancerTunnelProtocolVXLAN, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelProtocol(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} + +type LoadBalancerBackendAddressAdminState string + +const ( + LoadBalancerBackendAddressAdminStateDown LoadBalancerBackendAddressAdminState = "Down" + LoadBalancerBackendAddressAdminStateNone LoadBalancerBackendAddressAdminState = "None" + LoadBalancerBackendAddressAdminStateUp LoadBalancerBackendAddressAdminState = "Up" +) + +func PossibleValuesForLoadBalancerBackendAddressAdminState() []string { + return []string{ + string(LoadBalancerBackendAddressAdminStateDown), + string(LoadBalancerBackendAddressAdminStateNone), + string(LoadBalancerBackendAddressAdminStateUp), + } +} + +func (s *LoadBalancerBackendAddressAdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerBackendAddressAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerBackendAddressAdminState(input string) (*LoadBalancerBackendAddressAdminState, error) { + vals := map[string]LoadBalancerBackendAddressAdminState{ + "down": LoadBalancerBackendAddressAdminStateDown, + "none": LoadBalancerBackendAddressAdminStateNone, + "up": LoadBalancerBackendAddressAdminStateUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerBackendAddressAdminState(input) + return &out, nil +} + +type NatGatewaySkuName string + +const ( + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +func PossibleValuesForNatGatewaySkuName() []string { + return []string{ + string(NatGatewaySkuNameStandard), + } +} + +func (s *NatGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNatGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNatGatewaySkuName(input string) (*NatGatewaySkuName, error) { + vals := map[string]NatGatewaySkuName{ + "standard": NatGatewaySkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NatGatewaySkuName(input) + return &out, nil +} + +type NetworkInterfaceAuxiliaryMode string + +const ( + NetworkInterfaceAuxiliaryModeAcceleratedConnections NetworkInterfaceAuxiliaryMode = "AcceleratedConnections" + NetworkInterfaceAuxiliaryModeFloating NetworkInterfaceAuxiliaryMode = "Floating" + NetworkInterfaceAuxiliaryModeMaxConnections NetworkInterfaceAuxiliaryMode = "MaxConnections" + NetworkInterfaceAuxiliaryModeNone NetworkInterfaceAuxiliaryMode = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliaryMode() []string { + return []string{ + string(NetworkInterfaceAuxiliaryModeAcceleratedConnections), + string(NetworkInterfaceAuxiliaryModeFloating), + string(NetworkInterfaceAuxiliaryModeMaxConnections), + string(NetworkInterfaceAuxiliaryModeNone), + } +} + +func (s *NetworkInterfaceAuxiliaryMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliaryMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliaryMode(input string) (*NetworkInterfaceAuxiliaryMode, error) { + vals := map[string]NetworkInterfaceAuxiliaryMode{ + "acceleratedconnections": NetworkInterfaceAuxiliaryModeAcceleratedConnections, + "floating": NetworkInterfaceAuxiliaryModeFloating, + "maxconnections": NetworkInterfaceAuxiliaryModeMaxConnections, + "none": NetworkInterfaceAuxiliaryModeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliaryMode(input) + return &out, nil +} + +type NetworkInterfaceAuxiliarySku string + +const ( + NetworkInterfaceAuxiliarySkuAEight NetworkInterfaceAuxiliarySku = "A8" + NetworkInterfaceAuxiliarySkuAFour NetworkInterfaceAuxiliarySku = "A4" + NetworkInterfaceAuxiliarySkuAOne NetworkInterfaceAuxiliarySku = "A1" + NetworkInterfaceAuxiliarySkuATwo NetworkInterfaceAuxiliarySku = "A2" + NetworkInterfaceAuxiliarySkuNone NetworkInterfaceAuxiliarySku = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliarySku() []string { + return []string{ + string(NetworkInterfaceAuxiliarySkuAEight), + string(NetworkInterfaceAuxiliarySkuAFour), + string(NetworkInterfaceAuxiliarySkuAOne), + string(NetworkInterfaceAuxiliarySkuATwo), + string(NetworkInterfaceAuxiliarySkuNone), + } +} + +func (s *NetworkInterfaceAuxiliarySku) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliarySku(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliarySku(input string) (*NetworkInterfaceAuxiliarySku, error) { + vals := map[string]NetworkInterfaceAuxiliarySku{ + "a8": NetworkInterfaceAuxiliarySkuAEight, + "a4": NetworkInterfaceAuxiliarySkuAFour, + "a1": NetworkInterfaceAuxiliarySkuAOne, + "a2": NetworkInterfaceAuxiliarySkuATwo, + "none": NetworkInterfaceAuxiliarySkuNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliarySku(input) + return &out, nil +} + +type NetworkInterfaceMigrationPhase string + +const ( + NetworkInterfaceMigrationPhaseAbort NetworkInterfaceMigrationPhase = "Abort" + NetworkInterfaceMigrationPhaseCommit NetworkInterfaceMigrationPhase = "Commit" + NetworkInterfaceMigrationPhaseCommitted NetworkInterfaceMigrationPhase = "Committed" + NetworkInterfaceMigrationPhaseNone NetworkInterfaceMigrationPhase = "None" + NetworkInterfaceMigrationPhasePrepare NetworkInterfaceMigrationPhase = "Prepare" +) + +func PossibleValuesForNetworkInterfaceMigrationPhase() []string { + return []string{ + string(NetworkInterfaceMigrationPhaseAbort), + string(NetworkInterfaceMigrationPhaseCommit), + string(NetworkInterfaceMigrationPhaseCommitted), + string(NetworkInterfaceMigrationPhaseNone), + string(NetworkInterfaceMigrationPhasePrepare), + } +} + +func (s *NetworkInterfaceMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceMigrationPhase(input string) (*NetworkInterfaceMigrationPhase, error) { + vals := map[string]NetworkInterfaceMigrationPhase{ + "abort": NetworkInterfaceMigrationPhaseAbort, + "commit": NetworkInterfaceMigrationPhaseCommit, + "committed": NetworkInterfaceMigrationPhaseCommitted, + "none": NetworkInterfaceMigrationPhaseNone, + "prepare": NetworkInterfaceMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceMigrationPhase(input) + return &out, nil +} + +type NetworkInterfaceNicType string + +const ( + NetworkInterfaceNicTypeElastic NetworkInterfaceNicType = "Elastic" + NetworkInterfaceNicTypeStandard NetworkInterfaceNicType = "Standard" +) + +func PossibleValuesForNetworkInterfaceNicType() []string { + return []string{ + string(NetworkInterfaceNicTypeElastic), + string(NetworkInterfaceNicTypeStandard), + } +} + +func (s *NetworkInterfaceNicType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceNicType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceNicType(input string) (*NetworkInterfaceNicType, error) { + vals := map[string]NetworkInterfaceNicType{ + "elastic": NetworkInterfaceNicTypeElastic, + "standard": NetworkInterfaceNicTypeStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceNicType(input) + return &out, nil +} + +type ProtocolType string + +const ( + ProtocolTypeAh ProtocolType = "Ah" + ProtocolTypeAll ProtocolType = "All" + ProtocolTypeDoNotUse ProtocolType = "DoNotUse" + ProtocolTypeEsp ProtocolType = "Esp" + ProtocolTypeGre ProtocolType = "Gre" + ProtocolTypeIcmp ProtocolType = "Icmp" + ProtocolTypeTcp ProtocolType = "Tcp" + ProtocolTypeUdp ProtocolType = "Udp" + ProtocolTypeVxlan ProtocolType = "Vxlan" +) + +func PossibleValuesForProtocolType() []string { + return []string{ + string(ProtocolTypeAh), + string(ProtocolTypeAll), + string(ProtocolTypeDoNotUse), + string(ProtocolTypeEsp), + string(ProtocolTypeGre), + string(ProtocolTypeIcmp), + string(ProtocolTypeTcp), + string(ProtocolTypeUdp), + string(ProtocolTypeVxlan), + } +} + +func (s *ProtocolType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProtocolType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProtocolType(input string) (*ProtocolType, error) { + vals := map[string]ProtocolType{ + "ah": ProtocolTypeAh, + "all": ProtocolTypeAll, + "donotuse": ProtocolTypeDoNotUse, + "esp": ProtocolTypeEsp, + "gre": ProtocolTypeGre, + "icmp": ProtocolTypeIcmp, + "tcp": ProtocolTypeTcp, + "udp": ProtocolTypeUdp, + "vxlan": ProtocolTypeVxlan, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProtocolType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type PublicIPAddressDnsSettingsDomainNameLabelScope string + +const ( + PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "NoReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "ResourceGroupReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "SubscriptionReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "TenantReuse" +) + +func PossibleValuesForPublicIPAddressDnsSettingsDomainNameLabelScope() []string { + return []string{ + string(PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse), + } +} + +func (s *PublicIPAddressDnsSettingsDomainNameLabelScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressDnsSettingsDomainNameLabelScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressDnsSettingsDomainNameLabelScope(input string) (*PublicIPAddressDnsSettingsDomainNameLabelScope, error) { + vals := map[string]PublicIPAddressDnsSettingsDomainNameLabelScope{ + "noreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse, + "resourcegroupreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse, + "subscriptionreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse, + "tenantreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressDnsSettingsDomainNameLabelScope(input) + return &out, nil +} + +type PublicIPAddressMigrationPhase string + +const ( + PublicIPAddressMigrationPhaseAbort PublicIPAddressMigrationPhase = "Abort" + PublicIPAddressMigrationPhaseCommit PublicIPAddressMigrationPhase = "Commit" + PublicIPAddressMigrationPhaseCommitted PublicIPAddressMigrationPhase = "Committed" + PublicIPAddressMigrationPhaseNone PublicIPAddressMigrationPhase = "None" + PublicIPAddressMigrationPhasePrepare PublicIPAddressMigrationPhase = "Prepare" +) + +func PossibleValuesForPublicIPAddressMigrationPhase() []string { + return []string{ + string(PublicIPAddressMigrationPhaseAbort), + string(PublicIPAddressMigrationPhaseCommit), + string(PublicIPAddressMigrationPhaseCommitted), + string(PublicIPAddressMigrationPhaseNone), + string(PublicIPAddressMigrationPhasePrepare), + } +} + +func (s *PublicIPAddressMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressMigrationPhase(input string) (*PublicIPAddressMigrationPhase, error) { + vals := map[string]PublicIPAddressMigrationPhase{ + "abort": PublicIPAddressMigrationPhaseAbort, + "commit": PublicIPAddressMigrationPhaseCommit, + "committed": PublicIPAddressMigrationPhaseCommitted, + "none": PublicIPAddressMigrationPhaseNone, + "prepare": PublicIPAddressMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressMigrationPhase(input) + return &out, nil +} + +type PublicIPAddressSkuName string + +const ( + PublicIPAddressSkuNameBasic PublicIPAddressSkuName = "Basic" + PublicIPAddressSkuNameStandard PublicIPAddressSkuName = "Standard" +) + +func PossibleValuesForPublicIPAddressSkuName() []string { + return []string{ + string(PublicIPAddressSkuNameBasic), + string(PublicIPAddressSkuNameStandard), + } +} + +func (s *PublicIPAddressSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuName(input string) (*PublicIPAddressSkuName, error) { + vals := map[string]PublicIPAddressSkuName{ + "basic": PublicIPAddressSkuNameBasic, + "standard": PublicIPAddressSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuName(input) + return &out, nil +} + +type PublicIPAddressSkuTier string + +const ( + PublicIPAddressSkuTierGlobal PublicIPAddressSkuTier = "Global" + PublicIPAddressSkuTierRegional PublicIPAddressSkuTier = "Regional" +) + +func PossibleValuesForPublicIPAddressSkuTier() []string { + return []string{ + string(PublicIPAddressSkuTierGlobal), + string(PublicIPAddressSkuTierRegional), + } +} + +func (s *PublicIPAddressSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuTier(input string) (*PublicIPAddressSkuTier, error) { + vals := map[string]PublicIPAddressSkuTier{ + "global": PublicIPAddressSkuTierGlobal, + "regional": PublicIPAddressSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuTier(input) + return &out, nil +} + +type RouteNextHopType string + +const ( + RouteNextHopTypeInternet RouteNextHopType = "Internet" + RouteNextHopTypeNone RouteNextHopType = "None" + RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" + RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" + RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" +) + +func PossibleValuesForRouteNextHopType() []string { + return []string{ + string(RouteNextHopTypeInternet), + string(RouteNextHopTypeNone), + string(RouteNextHopTypeVirtualAppliance), + string(RouteNextHopTypeVirtualNetworkGateway), + string(RouteNextHopTypeVnetLocal), + } +} + +func (s *RouteNextHopType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteNextHopType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteNextHopType(input string) (*RouteNextHopType, error) { + vals := map[string]RouteNextHopType{ + "internet": RouteNextHopTypeInternet, + "none": RouteNextHopTypeNone, + "virtualappliance": RouteNextHopTypeVirtualAppliance, + "virtualnetworkgateway": RouteNextHopTypeVirtualNetworkGateway, + "vnetlocal": RouteNextHopTypeVnetLocal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteNextHopType(input) + return &out, nil +} + +type SecurityRuleAccess string + +const ( + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +func PossibleValuesForSecurityRuleAccess() []string { + return []string{ + string(SecurityRuleAccessAllow), + string(SecurityRuleAccessDeny), + } +} + +func (s *SecurityRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleAccess(input string) (*SecurityRuleAccess, error) { + vals := map[string]SecurityRuleAccess{ + "allow": SecurityRuleAccessAllow, + "deny": SecurityRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleAccess(input) + return &out, nil +} + +type SecurityRuleDirection string + +const ( + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityRuleDirection() []string { + return []string{ + string(SecurityRuleDirectionInbound), + string(SecurityRuleDirectionOutbound), + } +} + +func (s *SecurityRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleDirection(input string) (*SecurityRuleDirection, error) { + vals := map[string]SecurityRuleDirection{ + "inbound": SecurityRuleDirectionInbound, + "outbound": SecurityRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleDirection(input) + return &out, nil +} + +type SecurityRuleProtocol string + +const ( + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + SecurityRuleProtocolAny SecurityRuleProtocol = "*" + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + SecurityRuleProtocolTcp SecurityRuleProtocol = "Tcp" + SecurityRuleProtocolUdp SecurityRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityRuleProtocol() []string { + return []string{ + string(SecurityRuleProtocolAh), + string(SecurityRuleProtocolAny), + string(SecurityRuleProtocolEsp), + string(SecurityRuleProtocolIcmp), + string(SecurityRuleProtocolTcp), + string(SecurityRuleProtocolUdp), + } +} + +func (s *SecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleProtocol(input string) (*SecurityRuleProtocol, error) { + vals := map[string]SecurityRuleProtocol{ + "ah": SecurityRuleProtocolAh, + "*": SecurityRuleProtocolAny, + "esp": SecurityRuleProtocolEsp, + "icmp": SecurityRuleProtocolIcmp, + "tcp": SecurityRuleProtocolTcp, + "udp": SecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleProtocol(input) + return &out, nil +} + +type SharingScope string + +const ( + SharingScopeDelegatedServices SharingScope = "DelegatedServices" + SharingScopeTenant SharingScope = "Tenant" +) + +func PossibleValuesForSharingScope() []string { + return []string{ + string(SharingScopeDelegatedServices), + string(SharingScopeTenant), + } +} + +func (s *SharingScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSharingScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSharingScope(input string) (*SharingScope, error) { + vals := map[string]SharingScope{ + "delegatedservices": SharingScopeDelegatedServices, + "tenant": SharingScopeTenant, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SharingScope(input) + return &out, nil +} + +type SyncMode string + +const ( + SyncModeAutomatic SyncMode = "Automatic" + SyncModeManual SyncMode = "Manual" +) + +func PossibleValuesForSyncMode() []string { + return []string{ + string(SyncModeAutomatic), + string(SyncModeManual), + } +} + +func (s *SyncMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSyncMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSyncMode(input string) (*SyncMode, error) { + vals := map[string]SyncMode{ + "automatic": SyncModeAutomatic, + "manual": SyncModeManual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SyncMode(input) + return &out, nil +} + +type TransportProtocol string + +const ( + TransportProtocolAll TransportProtocol = "All" + TransportProtocolTcp TransportProtocol = "Tcp" + TransportProtocolUdp TransportProtocol = "Udp" +) + +func PossibleValuesForTransportProtocol() []string { + return []string{ + string(TransportProtocolAll), + string(TransportProtocolTcp), + string(TransportProtocolUdp), + } +} + +func (s *TransportProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseTransportProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseTransportProtocol(input string) (*TransportProtocol, error) { + vals := map[string]TransportProtocol{ + "all": TransportProtocolAll, + "tcp": TransportProtocolTcp, + "udp": TransportProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := TransportProtocol(input) + return &out, nil +} + +type VirtualNetworkPrivateEndpointNetworkPolicies string + +const ( + VirtualNetworkPrivateEndpointNetworkPoliciesDisabled VirtualNetworkPrivateEndpointNetworkPolicies = "Disabled" + VirtualNetworkPrivateEndpointNetworkPoliciesEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "Enabled" + VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "NetworkSecurityGroupEnabled" + VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "RouteTableEnabled" +) + +func PossibleValuesForVirtualNetworkPrivateEndpointNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateEndpointNetworkPoliciesDisabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled), + } +} + +func (s *VirtualNetworkPrivateEndpointNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateEndpointNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateEndpointNetworkPolicies(input string) (*VirtualNetworkPrivateEndpointNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateEndpointNetworkPolicies{ + "disabled": VirtualNetworkPrivateEndpointNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateEndpointNetworkPoliciesEnabled, + "networksecuritygroupenabled": VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled, + "routetableenabled": VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateEndpointNetworkPolicies(input) + return &out, nil +} + +type VirtualNetworkPrivateLinkServiceNetworkPolicies string + +const ( + VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Disabled" + VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Enabled" +) + +func PossibleValuesForVirtualNetworkPrivateLinkServiceNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled), + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled), + } +} + +func (s *VirtualNetworkPrivateLinkServiceNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateLinkServiceNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateLinkServiceNetworkPolicies(input string) (*VirtualNetworkPrivateLinkServiceNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateLinkServiceNetworkPolicies{ + "disabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateLinkServiceNetworkPolicies(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/method_dscpconfigurationlist.go b/resource-manager/network/2024-01-01/dscpconfigurations/method_dscpconfigurationlist.go new file mode 100644 index 00000000000..7cfa7438cce --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/method_dscpconfigurationlist.go @@ -0,0 +1,93 @@ +package dscpconfigurations + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DscpConfigurationListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]DscpConfiguration +} + +type DscpConfigurationListCompleteResult struct { + LatestHttpResponse *http.Response + Items []DscpConfiguration +} + +// DscpConfigurationList ... +func (c DscpConfigurationsClient) DscpConfigurationList(ctx context.Context, id commonids.ResourceGroupId) (result DscpConfigurationListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/dscpConfigurations", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]DscpConfiguration `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// DscpConfigurationListComplete retrieves all the results into a single object +func (c DscpConfigurationsClient) DscpConfigurationListComplete(ctx context.Context, id commonids.ResourceGroupId) (DscpConfigurationListCompleteResult, error) { + return c.DscpConfigurationListCompleteMatchingPredicate(ctx, id, DscpConfigurationOperationPredicate{}) +} + +// DscpConfigurationListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c DscpConfigurationsClient) DscpConfigurationListCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate DscpConfigurationOperationPredicate) (result DscpConfigurationListCompleteResult, err error) { + items := make([]DscpConfiguration, 0) + + resp, err := c.DscpConfigurationList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = DscpConfigurationListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/method_dscpconfigurationlistall.go b/resource-manager/network/2024-01-01/dscpconfigurations/method_dscpconfigurationlistall.go new file mode 100644 index 00000000000..78754cede6d --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/method_dscpconfigurationlistall.go @@ -0,0 +1,93 @@ +package dscpconfigurations + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DscpConfigurationListAllOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]DscpConfiguration +} + +type DscpConfigurationListAllCompleteResult struct { + LatestHttpResponse *http.Response + Items []DscpConfiguration +} + +// DscpConfigurationListAll ... +func (c DscpConfigurationsClient) DscpConfigurationListAll(ctx context.Context, id commonids.SubscriptionId) (result DscpConfigurationListAllOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/dscpConfigurations", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]DscpConfiguration `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// DscpConfigurationListAllComplete retrieves all the results into a single object +func (c DscpConfigurationsClient) DscpConfigurationListAllComplete(ctx context.Context, id commonids.SubscriptionId) (DscpConfigurationListAllCompleteResult, error) { + return c.DscpConfigurationListAllCompleteMatchingPredicate(ctx, id, DscpConfigurationOperationPredicate{}) +} + +// DscpConfigurationListAllCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c DscpConfigurationsClient) DscpConfigurationListAllCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate DscpConfigurationOperationPredicate) (result DscpConfigurationListAllCompleteResult, err error) { + items := make([]DscpConfiguration, 0) + + resp, err := c.DscpConfigurationListAll(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = DscpConfigurationListAllCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_applicationgatewaybackendaddress.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_applicationgatewaybackendaddress.go new file mode 100644 index 00000000000..b7b1e084f2c --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_applicationgatewaybackendaddress.go @@ -0,0 +1,9 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddress struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_applicationgatewaybackendaddresspool.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_applicationgatewaybackendaddresspool.go new file mode 100644 index 00000000000..2ee5c1c3577 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_applicationgatewaybackendaddresspool.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_applicationgatewaybackendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_applicationgatewaybackendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..e420a9bdc67 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_applicationgatewaybackendaddresspoolpropertiesformat.go @@ -0,0 +1,10 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPoolPropertiesFormat struct { + BackendAddresses *[]ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"` + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_applicationgatewayipconfiguration.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_applicationgatewayipconfiguration.go new file mode 100644 index 00000000000..1c532c8b751 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_applicationgatewayipconfiguration.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_applicationgatewayipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_applicationgatewayipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..461f708325f --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_applicationgatewayipconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..7c885418df4 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..06db97d0e6f --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_backendaddresspool.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_backendaddresspool.go new file mode 100644 index 00000000000..9063fe9528b --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_backendaddresspool.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_backendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_backendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..9d15cc6c925 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_backendaddresspoolpropertiesformat.go @@ -0,0 +1,19 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPoolPropertiesFormat struct { + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + DrainPeriodInSeconds *int64 `json:"drainPeriodInSeconds,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancerBackendAddresses *[]LoadBalancerBackendAddress `json:"loadBalancerBackendAddresses,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + Location *string `json:"location,omitempty"` + OutboundRule *SubResource `json:"outboundRule,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SyncMode *SyncMode `json:"syncMode,omitempty"` + TunnelInterfaces *[]GatewayLoadBalancerTunnelInterface `json:"tunnelInterfaces,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_customdnsconfigpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_customdnsconfigpropertiesformat.go new file mode 100644 index 00000000000..29791c2c31f --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_customdnsconfigpropertiesformat.go @@ -0,0 +1,9 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomDnsConfigPropertiesFormat struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_ddossettings.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_ddossettings.go new file mode 100644 index 00000000000..0a6ba1cc0f5 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_ddossettings.go @@ -0,0 +1,9 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettings struct { + DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"` + ProtectionMode *DdosSettingsProtectionMode `json:"protectionMode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_delegation.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_delegation.go new file mode 100644 index 00000000000..3db69c6181a --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_delegation.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Delegation struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceDelegationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_dscpconfiguration.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_dscpconfiguration.go new file mode 100644 index 00000000000..addfd61ed3c --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_dscpconfiguration.go @@ -0,0 +1,14 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DscpConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *DscpConfigurationPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_dscpconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_dscpconfigurationpropertiesformat.go new file mode 100644 index 00000000000..3de3861ee9e --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_dscpconfigurationpropertiesformat.go @@ -0,0 +1,18 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DscpConfigurationPropertiesFormat struct { + AssociatedNetworkInterfaces *[]NetworkInterface `json:"associatedNetworkInterfaces,omitempty"` + DestinationIPRanges *[]QosIPRange `json:"destinationIpRanges,omitempty"` + DestinationPortRanges *[]QosPortRange `json:"destinationPortRanges,omitempty"` + Markings *[]int64 `json:"markings,omitempty"` + Protocol *ProtocolType `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + QosCollectionId *string `json:"qosCollectionId,omitempty"` + QosDefinitionCollection *[]QosDefinition `json:"qosDefinitionCollection,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SourceIPRanges *[]QosIPRange `json:"sourceIpRanges,omitempty"` + SourcePortRanges *[]QosPortRange `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_flowlog.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_flowlog.go new file mode 100644 index 00000000000..c4fcf026e8c --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_flowlog.go @@ -0,0 +1,19 @@ +package dscpconfigurations + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLog struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FlowLogPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_flowlogformatparameters.go new file mode 100644 index 00000000000..c2ca6492542 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_flowlogpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_flowlogpropertiesformat.go new file mode 100644 index 00000000000..70fecb2d852 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_flowlogpropertiesformat.go @@ -0,0 +1,15 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogPropertiesFormat struct { + Enabled *bool `json:"enabled,omitempty"` + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` + TargetResourceGuid *string `json:"targetResourceGuid,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_frontendipconfiguration.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_frontendipconfiguration.go new file mode 100644 index 00000000000..55b02b251ca --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_frontendipconfiguration.go @@ -0,0 +1,17 @@ +package dscpconfigurations + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_frontendipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_frontendipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..04b3e1aafc3 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_frontendipconfigurationpropertiesformat.go @@ -0,0 +1,19 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfigurationPropertiesFormat struct { + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + InboundNatPools *[]SubResource `json:"inboundNatPools,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_gatewayloadbalancertunnelinterface.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_gatewayloadbalancertunnelinterface.go new file mode 100644 index 00000000000..fba1a411047 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_gatewayloadbalancertunnelinterface.go @@ -0,0 +1,11 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayLoadBalancerTunnelInterface struct { + Identifier *int64 `json:"identifier,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *GatewayLoadBalancerTunnelProtocol `json:"protocol,omitempty"` + Type *GatewayLoadBalancerTunnelInterfaceType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_inboundnatrule.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_inboundnatrule.go new file mode 100644 index 00000000000..b60bfcd7088 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_inboundnatrule.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundNatRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_inboundnatrulepropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_inboundnatrulepropertiesformat.go new file mode 100644 index 00000000000..598cd5d43a5 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_inboundnatrulepropertiesformat.go @@ -0,0 +1,19 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendIPConfiguration *NetworkInterfaceIPConfiguration `json:"backendIPConfiguration,omitempty"` + BackendPort *int64 `json:"backendPort,omitempty"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + FrontendPortRangeEnd *int64 `json:"frontendPortRangeEnd,omitempty"` + FrontendPortRangeStart *int64 `json:"frontendPortRangeStart,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol *TransportProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_ipconfiguration.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_ipconfiguration.go new file mode 100644 index 00000000000..2532732b5b2 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_ipconfiguration.go @@ -0,0 +1,11 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_ipconfigurationprofile.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_ipconfigurationprofile.go new file mode 100644 index 00000000000..ce6d532c39b --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_ipconfigurationprofile.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationProfilePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_ipconfigurationprofilepropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_ipconfigurationprofilepropertiesformat.go new file mode 100644 index 00000000000..afde579aaa3 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_ipconfigurationprofilepropertiesformat.go @@ -0,0 +1,9 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfilePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_ipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_ipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..c5919fd2db3 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_ipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_iptag.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_iptag.go new file mode 100644 index 00000000000..f38ed9d8c65 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_iptag.go @@ -0,0 +1,9 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPTag struct { + IPTagType *string `json:"ipTagType,omitempty"` + Tag *string `json:"tag,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_loadbalancerbackendaddress.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_loadbalancerbackendaddress.go new file mode 100644 index 00000000000..7ad5779c262 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_loadbalancerbackendaddress.go @@ -0,0 +1,9 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddress struct { + Name *string `json:"name,omitempty"` + Properties *LoadBalancerBackendAddressPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_loadbalancerbackendaddresspropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_loadbalancerbackendaddresspropertiesformat.go new file mode 100644 index 00000000000..313080c155c --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_loadbalancerbackendaddresspropertiesformat.go @@ -0,0 +1,14 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPropertiesFormat struct { + AdminState *LoadBalancerBackendAddressAdminState `json:"adminState,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + InboundNatRulesPortMapping *[]NatRulePortMapping `json:"inboundNatRulesPortMapping,omitempty"` + LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIPConfiguration,omitempty"` + NetworkInterfaceIPConfiguration *SubResource `json:"networkInterfaceIPConfiguration,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_natgateway.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_natgateway.go new file mode 100644 index 00000000000..64ee487573f --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_natgateway.go @@ -0,0 +1,20 @@ +package dscpconfigurations + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"` + Sku *NatGatewaySku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_natgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_natgatewaypropertiesformat.go new file mode 100644 index 00000000000..d6a3124790e --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_natgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayPropertiesFormat struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]SubResource `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_natgatewaysku.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_natgatewaysku.go new file mode 100644 index 00000000000..f13dbd3d8fa --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_natgatewaysku.go @@ -0,0 +1,8 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySku struct { + Name *NatGatewaySkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_natruleportmapping.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_natruleportmapping.go new file mode 100644 index 00000000000..4f09709144d --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_natruleportmapping.go @@ -0,0 +1,10 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulePortMapping struct { + BackendPort *int64 `json:"backendPort,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + InboundNatRuleName *string `json:"inboundNatRuleName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterface.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterface.go new file mode 100644 index 00000000000..0b5454d16ca --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterface.go @@ -0,0 +1,19 @@ +package dscpconfigurations + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterface struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfacePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterfacednssettings.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterfacednssettings.go new file mode 100644 index 00000000000..11f9a45a307 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterfacednssettings.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceDnsSettings struct { + AppliedDnsServers *[]string `json:"appliedDnsServers,omitempty"` + DnsServers *[]string `json:"dnsServers,omitempty"` + InternalDnsNameLabel *string `json:"internalDnsNameLabel,omitempty"` + InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty"` + InternalFqdn *string `json:"internalFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterfaceipconfiguration.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterfaceipconfiguration.go new file mode 100644 index 00000000000..d4cb1b886b6 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterfaceipconfiguration.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go new file mode 100644 index 00000000000..0b175cf4025 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go @@ -0,0 +1,10 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties struct { + Fqdns *[]string `json:"fqdns,omitempty"` + GroupId *string `json:"groupId,omitempty"` + RequiredMemberName *string `json:"requiredMemberName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterfaceipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterfaceipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..ef75e49ef70 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterfaceipconfigurationpropertiesformat.go @@ -0,0 +1,22 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPropertiesFormat struct { + ApplicationGatewayBackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"applicationGatewayBackendAddressPools,omitempty"` + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + LoadBalancerBackendAddressPools *[]BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"` + LoadBalancerInboundNatRules *[]InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressPrefixLength *int64 `json:"privateIPAddressPrefixLength,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + PrivateLinkConnectionProperties *NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties `json:"privateLinkConnectionProperties,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` + VirtualNetworkTaps *[]VirtualNetworkTap `json:"virtualNetworkTaps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterfacepropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterfacepropertiesformat.go new file mode 100644 index 00000000000..1d542c19b57 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterfacepropertiesformat.go @@ -0,0 +1,29 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfacePropertiesFormat struct { + AuxiliaryMode *NetworkInterfaceAuxiliaryMode `json:"auxiliaryMode,omitempty"` + AuxiliarySku *NetworkInterfaceAuxiliarySku `json:"auxiliarySku,omitempty"` + DisableTcpStateTracking *bool `json:"disableTcpStateTracking,omitempty"` + DnsSettings *NetworkInterfaceDnsSettings `json:"dnsSettings,omitempty"` + DscpConfiguration *SubResource `json:"dscpConfiguration,omitempty"` + EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"` + EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"` + HostedWorkloads *[]string `json:"hostedWorkloads,omitempty"` + IPConfigurations *[]NetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + MacAddress *string `json:"macAddress,omitempty"` + MigrationPhase *NetworkInterfaceMigrationPhase `json:"migrationPhase,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + NicType *NetworkInterfaceNicType `json:"nicType,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkService *PrivateLinkService `json:"privateLinkService,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + TapConfigurations *[]NetworkInterfaceTapConfiguration `json:"tapConfigurations,omitempty"` + VirtualMachine *SubResource `json:"virtualMachine,omitempty"` + VnetEncryptionSupported *bool `json:"vnetEncryptionSupported,omitempty"` + WorkloadType *string `json:"workloadType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterfacetapconfiguration.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterfacetapconfiguration.go new file mode 100644 index 00000000000..134cf5c3661 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterfacetapconfiguration.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceTapConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterfacetapconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterfacetapconfigurationpropertiesformat.go new file mode 100644 index 00000000000..f77ecd6167d --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_networkinterfacetapconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualNetworkTap *VirtualNetworkTap `json:"virtualNetworkTap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_networksecuritygroup.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_networksecuritygroup.go new file mode 100644 index 00000000000..f9ea08d3a85 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_networksecuritygroup.go @@ -0,0 +1,14 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_networksecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_networksecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..0cac57de47f --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_networksecuritygrouppropertiesformat.go @@ -0,0 +1,15 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupPropertiesFormat struct { + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + FlowLogs *[]FlowLog `json:"flowLogs,omitempty"` + FlushConnection *bool `json:"flushConnection,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_privateendpoint.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_privateendpoint.go new file mode 100644 index 00000000000..0e5fb891d8c --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_privateendpoint.go @@ -0,0 +1,19 @@ +package dscpconfigurations + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpoint struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_privateendpointconnection.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_privateendpointconnection.go new file mode 100644 index 00000000000..64a8a54e559 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_privateendpointconnection.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_privateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_privateendpointconnectionproperties.go new file mode 100644 index 00000000000..b41f2269c5b --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_privateendpointconnectionproperties.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateEndpointLocation *string `json:"privateEndpointLocation,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_privateendpointipconfiguration.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_privateendpointipconfiguration.go new file mode 100644 index 00000000000..cee431f3b19 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_privateendpointipconfiguration.go @@ -0,0 +1,11 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_privateendpointipconfigurationproperties.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_privateendpointipconfigurationproperties.go new file mode 100644 index 00000000000..8ffd50d3002 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_privateendpointipconfigurationproperties.go @@ -0,0 +1,10 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfigurationProperties struct { + GroupId *string `json:"groupId,omitempty"` + MemberName *string `json:"memberName,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_privateendpointproperties.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_privateendpointproperties.go new file mode 100644 index 00000000000..b098e9d6023 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_privateendpointproperties.go @@ -0,0 +1,16 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointProperties struct { + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + CustomDnsConfigs *[]CustomDnsConfigPropertiesFormat `json:"customDnsConfigs,omitempty"` + CustomNetworkInterfaceName *string `json:"customNetworkInterfaceName,omitempty"` + IPConfigurations *[]PrivateEndpointIPConfiguration `json:"ipConfigurations,omitempty"` + ManualPrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"manualPrivateLinkServiceConnections,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"privateLinkServiceConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_privatelinkservice.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_privatelinkservice.go new file mode 100644 index 00000000000..60b183ef94a --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_privatelinkservice.go @@ -0,0 +1,19 @@ +package dscpconfigurations + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkService struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_privatelinkserviceconnection.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_privatelinkserviceconnection.go new file mode 100644 index 00000000000..963c255ab64 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_privatelinkserviceconnection.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_privatelinkserviceconnectionproperties.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_privatelinkserviceconnectionproperties.go new file mode 100644 index 00000000000..9f2e27f4720 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_privatelinkserviceconnectionproperties.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionProperties struct { + GroupIds *[]string `json:"groupIds,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + PrivateLinkServiceId *string `json:"privateLinkServiceId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestMessage *string `json:"requestMessage,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_privatelinkserviceconnectionstate.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_privatelinkserviceconnectionstate.go new file mode 100644 index 00000000000..3662d04a08f --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_privatelinkserviceconnectionstate.go @@ -0,0 +1,10 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionState struct { + ActionsRequired *string `json:"actionsRequired,omitempty"` + Description *string `json:"description,omitempty"` + Status *string `json:"status,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_privatelinkserviceipconfiguration.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_privatelinkserviceipconfiguration.go new file mode 100644 index 00000000000..d0932cbb597 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_privatelinkserviceipconfiguration.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_privatelinkserviceipconfigurationproperties.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_privatelinkserviceipconfigurationproperties.go new file mode 100644 index 00000000000..b471f35042f --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_privatelinkserviceipconfigurationproperties.go @@ -0,0 +1,13 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_privatelinkserviceproperties.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_privatelinkserviceproperties.go new file mode 100644 index 00000000000..0054e8840ee --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_privatelinkserviceproperties.go @@ -0,0 +1,17 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceProperties struct { + Alias *string `json:"alias,omitempty"` + AutoApproval *ResourceSet `json:"autoApproval,omitempty"` + EnableProxyProtocol *bool `json:"enableProxyProtocol,omitempty"` + Fqdns *[]string `json:"fqdns,omitempty"` + IPConfigurations *[]PrivateLinkServiceIPConfiguration `json:"ipConfigurations,omitempty"` + LoadBalancerFrontendIPConfigurations *[]FrontendIPConfiguration `json:"loadBalancerFrontendIpConfigurations,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Visibility *ResourceSet `json:"visibility,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_publicipaddress.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_publicipaddress.go new file mode 100644 index 00000000000..4fc95713929 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_publicipaddress.go @@ -0,0 +1,22 @@ +package dscpconfigurations + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddress struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PublicIPAddressPropertiesFormat `json:"properties,omitempty"` + Sku *PublicIPAddressSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_publicipaddressdnssettings.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_publicipaddressdnssettings.go new file mode 100644 index 00000000000..adee4abe556 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_publicipaddressdnssettings.go @@ -0,0 +1,11 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressDnsSettings struct { + DomainNameLabel *string `json:"domainNameLabel,omitempty"` + DomainNameLabelScope *PublicIPAddressDnsSettingsDomainNameLabelScope `json:"domainNameLabelScope,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + ReverseFqdn *string `json:"reverseFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_publicipaddresspropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_publicipaddresspropertiesformat.go new file mode 100644 index 00000000000..b1758ec95ac --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_publicipaddresspropertiesformat.go @@ -0,0 +1,23 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressPropertiesFormat struct { + DdosSettings *DdosSettings `json:"ddosSettings,omitempty"` + DeleteOption *DeleteOptions `json:"deleteOption,omitempty"` + DnsSettings *PublicIPAddressDnsSettings `json:"dnsSettings,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty"` + IPTags *[]IPTag `json:"ipTags,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + LinkedPublicIPAddress *PublicIPAddress `json:"linkedPublicIPAddress,omitempty"` + MigrationPhase *PublicIPAddressMigrationPhase `json:"migrationPhase,omitempty"` + NatGateway *NatGateway `json:"natGateway,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"` + PublicIPAllocationMethod *IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServicePublicIPAddress *PublicIPAddress `json:"servicePublicIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_publicipaddresssku.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_publicipaddresssku.go new file mode 100644 index 00000000000..a429ae17ad7 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_publicipaddresssku.go @@ -0,0 +1,9 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressSku struct { + Name *PublicIPAddressSkuName `json:"name,omitempty"` + Tier *PublicIPAddressSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_qosdefinition.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_qosdefinition.go new file mode 100644 index 00000000000..c578549b24d --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_qosdefinition.go @@ -0,0 +1,13 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type QosDefinition struct { + DestinationIPRanges *[]QosIPRange `json:"destinationIpRanges,omitempty"` + DestinationPortRanges *[]QosPortRange `json:"destinationPortRanges,omitempty"` + Markings *[]int64 `json:"markings,omitempty"` + Protocol *ProtocolType `json:"protocol,omitempty"` + SourceIPRanges *[]QosIPRange `json:"sourceIpRanges,omitempty"` + SourcePortRanges *[]QosPortRange `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_qosiprange.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_qosiprange.go new file mode 100644 index 00000000000..a7109f45e97 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_qosiprange.go @@ -0,0 +1,9 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type QosIPRange struct { + EndIP *string `json:"endIP,omitempty"` + StartIP *string `json:"startIP,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_qosportrange.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_qosportrange.go new file mode 100644 index 00000000000..1c241e416d6 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_qosportrange.go @@ -0,0 +1,9 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type QosPortRange struct { + End *int64 `json:"end,omitempty"` + Start *int64 `json:"start,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_resourcenavigationlink.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_resourcenavigationlink.go new file mode 100644 index 00000000000..a441a261d0b --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_resourcenavigationlink.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ResourceNavigationLinkFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_resourcenavigationlinkformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_resourcenavigationlinkformat.go new file mode 100644 index 00000000000..42c361f9ff9 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_resourcenavigationlinkformat.go @@ -0,0 +1,10 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLinkFormat struct { + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_resourceset.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_resourceset.go new file mode 100644 index 00000000000..36c2929fe5c --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_resourceset.go @@ -0,0 +1,8 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceSet struct { + Subscriptions *[]string `json:"subscriptions,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..6cb1197a4d8 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_route.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_route.go new file mode 100644 index 00000000000..58b9462885c --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_route.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Route struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RoutePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_routepropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_routepropertiesformat.go new file mode 100644 index 00000000000..57d611a55aa --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_routepropertiesformat.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutePropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + HasBgpOverride *bool `json:"hasBgpOverride,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + NextHopType RouteNextHopType `json:"nextHopType"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_routetable.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_routetable.go new file mode 100644 index 00000000000..3c19f2937d7 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_routetable.go @@ -0,0 +1,14 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTable struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteTablePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_routetablepropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_routetablepropertiesformat.go new file mode 100644 index 00000000000..8d9f9c65d1c --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_routetablepropertiesformat.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTablePropertiesFormat struct { + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Routes *[]Route `json:"routes,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_securityrule.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_securityrule.go new file mode 100644 index 00000000000..eefb302d3d0 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_securityrule.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_securityrulepropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_securityrulepropertiesformat.go new file mode 100644 index 00000000000..d43f1f5f3b1 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_securityrulepropertiesformat.go @@ -0,0 +1,23 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulePropertiesFormat struct { + Access SecurityRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction SecurityRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_serviceassociationlink.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_serviceassociationlink.go new file mode 100644 index 00000000000..e968a6667b0 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_serviceassociationlink.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceAssociationLinkPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_serviceassociationlinkpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_serviceassociationlinkpropertiesformat.go new file mode 100644 index 00000000000..3756e4aca2b --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_serviceassociationlinkpropertiesformat.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLinkPropertiesFormat struct { + AllowDelete *bool `json:"allowDelete,omitempty"` + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + Locations *[]string `json:"locations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_servicedelegationpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_servicedelegationpropertiesformat.go new file mode 100644 index 00000000000..4576bcc01d0 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_servicedelegationpropertiesformat.go @@ -0,0 +1,10 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceDelegationPropertiesFormat struct { + Actions *[]string `json:"actions,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_serviceendpointpolicy.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_serviceendpointpolicy.go new file mode 100644 index 00000000000..e1bf0604459 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_serviceendpointpolicy.go @@ -0,0 +1,15 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Kind *string `json:"kind,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_serviceendpointpolicydefinition.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_serviceendpointpolicydefinition.go new file mode 100644 index 00000000000..9693e4de6b7 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_serviceendpointpolicydefinition.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinition struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_serviceendpointpolicydefinitionpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_serviceendpointpolicydefinitionpropertiesformat.go new file mode 100644 index 00000000000..c277cb3ff86 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_serviceendpointpolicydefinitionpropertiesformat.go @@ -0,0 +1,11 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionPropertiesFormat struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` + ServiceResources *[]string `json:"serviceResources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_serviceendpointpolicypropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_serviceendpointpolicypropertiesformat.go new file mode 100644 index 00000000000..31009213cca --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_serviceendpointpolicypropertiesformat.go @@ -0,0 +1,13 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyPropertiesFormat struct { + ContextualServiceEndpointPolicies *[]string `json:"contextualServiceEndpointPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServiceAlias *string `json:"serviceAlias,omitempty"` + ServiceEndpointPolicyDefinitions *[]ServiceEndpointPolicyDefinition `json:"serviceEndpointPolicyDefinitions,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_serviceendpointpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_serviceendpointpropertiesformat.go new file mode 100644 index 00000000000..b8e43ff379c --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_serviceendpointpropertiesformat.go @@ -0,0 +1,11 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPropertiesFormat struct { + Locations *[]string `json:"locations,omitempty"` + NetworkIdentifier *SubResource `json:"networkIdentifier,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_subnet.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_subnet.go new file mode 100644 index 00000000000..6c58caf5de4 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_subnet.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Subnet struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SubnetPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_subnetpropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_subnetpropertiesformat.go new file mode 100644 index 00000000000..ca179c7e833 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_subnetpropertiesformat.go @@ -0,0 +1,28 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + ApplicationGatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"applicationGatewayIPConfigurations,omitempty"` + DefaultOutboundAccess *bool `json:"defaultOutboundAccess,omitempty"` + Delegations *[]Delegation `json:"delegations,omitempty"` + IPAllocations *[]SubResource `json:"ipAllocations,omitempty"` + IPConfigurationProfiles *[]IPConfigurationProfile `json:"ipConfigurationProfiles,omitempty"` + IPConfigurations *[]IPConfiguration `json:"ipConfigurations,omitempty"` + NatGateway *SubResource `json:"natGateway,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + PrivateEndpointNetworkPolicies *VirtualNetworkPrivateEndpointNetworkPolicies `json:"privateEndpointNetworkPolicies,omitempty"` + PrivateEndpoints *[]PrivateEndpoint `json:"privateEndpoints,omitempty"` + PrivateLinkServiceNetworkPolicies *VirtualNetworkPrivateLinkServiceNetworkPolicies `json:"privateLinkServiceNetworkPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Purpose *string `json:"purpose,omitempty"` + ResourceNavigationLinks *[]ResourceNavigationLink `json:"resourceNavigationLinks,omitempty"` + RouteTable *RouteTable `json:"routeTable,omitempty"` + ServiceAssociationLinks *[]ServiceAssociationLink `json:"serviceAssociationLinks,omitempty"` + ServiceEndpointPolicies *[]ServiceEndpointPolicy `json:"serviceEndpointPolicies,omitempty"` + ServiceEndpoints *[]ServiceEndpointPropertiesFormat `json:"serviceEndpoints,omitempty"` + SharingScope *SharingScope `json:"sharingScope,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_subresource.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_subresource.go new file mode 100644 index 00000000000..f4f23a8234b --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_subresource.go @@ -0,0 +1,8 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..f9dd4dab77f --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..6e509b308b5 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_virtualnetworktap.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_virtualnetworktap.go new file mode 100644 index 00000000000..ae0f9ad6412 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_virtualnetworktap.go @@ -0,0 +1,14 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkTapPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/model_virtualnetworktappropertiesformat.go b/resource-manager/network/2024-01-01/dscpconfigurations/model_virtualnetworktappropertiesformat.go new file mode 100644 index 00000000000..bc1c19bd39f --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/model_virtualnetworktappropertiesformat.go @@ -0,0 +1,13 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapPropertiesFormat struct { + DestinationLoadBalancerFrontEndIPConfiguration *FrontendIPConfiguration `json:"destinationLoadBalancerFrontEndIPConfiguration,omitempty"` + DestinationNetworkInterfaceIPConfiguration *NetworkInterfaceIPConfiguration `json:"destinationNetworkInterfaceIPConfiguration,omitempty"` + DestinationPort *int64 `json:"destinationPort,omitempty"` + NetworkInterfaceTapConfigurations *[]NetworkInterfaceTapConfiguration `json:"networkInterfaceTapConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/predicates.go b/resource-manager/network/2024-01-01/dscpconfigurations/predicates.go new file mode 100644 index 00000000000..7628df6beb6 --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/predicates.go @@ -0,0 +1,37 @@ +package dscpconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DscpConfigurationOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p DscpConfigurationOperationPredicate) Matches(input DscpConfiguration) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/dscpconfigurations/version.go b/resource-manager/network/2024-01-01/dscpconfigurations/version.go new file mode 100644 index 00000000000..82c9311c21a --- /dev/null +++ b/resource-manager/network/2024-01-01/dscpconfigurations/version.go @@ -0,0 +1,12 @@ +package dscpconfigurations + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/dscpconfigurations/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/endpointservices/README.md b/resource-manager/network/2024-01-01/endpointservices/README.md new file mode 100644 index 00000000000..d4684934dff --- /dev/null +++ b/resource-manager/network/2024-01-01/endpointservices/README.md @@ -0,0 +1,37 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/endpointservices` Documentation + +The `endpointservices` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/endpointservices" +``` + + +### Client Initialization + +```go +client := endpointservices.NewEndpointServicesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `EndpointServicesClient.AvailableEndpointServicesList` + +```go +ctx := context.TODO() +id := endpointservices.NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue") + +// alternatively `client.AvailableEndpointServicesList(ctx, id)` can be used to do batched pagination +items, err := client.AvailableEndpointServicesListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/endpointservices/client.go b/resource-manager/network/2024-01-01/endpointservices/client.go new file mode 100644 index 00000000000..c04faa1ffd8 --- /dev/null +++ b/resource-manager/network/2024-01-01/endpointservices/client.go @@ -0,0 +1,26 @@ +package endpointservices + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type EndpointServicesClient struct { + Client *resourcemanager.Client +} + +func NewEndpointServicesClientWithBaseURI(sdkApi sdkEnv.Api) (*EndpointServicesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "endpointservices", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating EndpointServicesClient: %+v", err) + } + + return &EndpointServicesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/endpointservices/id_location.go b/resource-manager/network/2024-01-01/endpointservices/id_location.go new file mode 100644 index 00000000000..b3f9df03861 --- /dev/null +++ b/resource-manager/network/2024-01-01/endpointservices/id_location.go @@ -0,0 +1,121 @@ +package endpointservices + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&LocationId{}) +} + +var _ resourceids.ResourceId = &LocationId{} + +// LocationId is a struct representing the Resource ID for a Location +type LocationId struct { + SubscriptionId string + LocationName string +} + +// NewLocationID returns a new LocationId struct +func NewLocationID(subscriptionId string, locationName string) LocationId { + return LocationId{ + SubscriptionId: subscriptionId, + LocationName: locationName, + } +} + +// ParseLocationID parses 'input' into a LocationId +func ParseLocationID(input string) (*LocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&LocationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseLocationIDInsensitively parses 'input' case-insensitively into a LocationId +// note: this method should only be used for API response data and not user input +func ParseLocationIDInsensitively(input string) (*LocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&LocationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *LocationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.LocationName, ok = input.Parsed["locationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "locationName", input) + } + + return nil +} + +// ValidateLocationID checks that 'input' can be parsed as a Location ID +func ValidateLocationID(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 := ParseLocationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Location ID +func (id LocationId) ID() string { + fmtString := "/subscriptions/%s/providers/Microsoft.Network/locations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.LocationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Location ID +func (id LocationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLocations", "locations", "locations"), + resourceids.UserSpecifiedSegment("locationName", "locationValue"), + } +} + +// String returns a human-readable description of this Location ID +func (id LocationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Location Name: %q", id.LocationName), + } + return fmt.Sprintf("Location (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/endpointservices/id_location_test.go b/resource-manager/network/2024-01-01/endpointservices/id_location_test.go new file mode 100644 index 00000000000..3d471721e64 --- /dev/null +++ b/resource-manager/network/2024-01-01/endpointservices/id_location_test.go @@ -0,0 +1,237 @@ +package endpointservices + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &LocationId{} + +func TestNewLocationID(t *testing.T) { + id := NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.LocationName != "locationValue" { + t.Fatalf("Expected %q but got %q for Segment 'LocationName'", id.LocationName, "locationValue") + } +} + +func TestFormatLocationID(t *testing.T) { + actual := NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseLocationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLocationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestParseLocationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "lOcAtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLocationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestSegmentsForLocationId(t *testing.T) { + segments := LocationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("LocationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/endpointservices/method_availableendpointserviceslist.go b/resource-manager/network/2024-01-01/endpointservices/method_availableendpointserviceslist.go new file mode 100644 index 00000000000..d1653d6f5bd --- /dev/null +++ b/resource-manager/network/2024-01-01/endpointservices/method_availableendpointserviceslist.go @@ -0,0 +1,92 @@ +package endpointservices + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AvailableEndpointServicesListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]EndpointServiceResult +} + +type AvailableEndpointServicesListCompleteResult struct { + LatestHttpResponse *http.Response + Items []EndpointServiceResult +} + +// AvailableEndpointServicesList ... +func (c EndpointServicesClient) AvailableEndpointServicesList(ctx context.Context, id LocationId) (result AvailableEndpointServicesListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/virtualNetworkAvailableEndpointServices", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]EndpointServiceResult `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// AvailableEndpointServicesListComplete retrieves all the results into a single object +func (c EndpointServicesClient) AvailableEndpointServicesListComplete(ctx context.Context, id LocationId) (AvailableEndpointServicesListCompleteResult, error) { + return c.AvailableEndpointServicesListCompleteMatchingPredicate(ctx, id, EndpointServiceResultOperationPredicate{}) +} + +// AvailableEndpointServicesListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c EndpointServicesClient) AvailableEndpointServicesListCompleteMatchingPredicate(ctx context.Context, id LocationId, predicate EndpointServiceResultOperationPredicate) (result AvailableEndpointServicesListCompleteResult, err error) { + items := make([]EndpointServiceResult, 0) + + resp, err := c.AvailableEndpointServicesList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = AvailableEndpointServicesListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/endpointservices/model_endpointserviceresult.go b/resource-manager/network/2024-01-01/endpointservices/model_endpointserviceresult.go new file mode 100644 index 00000000000..eae6c698d45 --- /dev/null +++ b/resource-manager/network/2024-01-01/endpointservices/model_endpointserviceresult.go @@ -0,0 +1,10 @@ +package endpointservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type EndpointServiceResult struct { + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/endpointservices/predicates.go b/resource-manager/network/2024-01-01/endpointservices/predicates.go new file mode 100644 index 00000000000..9a5ec06a288 --- /dev/null +++ b/resource-manager/network/2024-01-01/endpointservices/predicates.go @@ -0,0 +1,27 @@ +package endpointservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type EndpointServiceResultOperationPredicate struct { + Id *string + Name *string + Type *string +} + +func (p EndpointServiceResultOperationPredicate) Matches(input EndpointServiceResult) bool { + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/endpointservices/version.go b/resource-manager/network/2024-01-01/endpointservices/version.go new file mode 100644 index 00000000000..49cbea98867 --- /dev/null +++ b/resource-manager/network/2024-01-01/endpointservices/version.go @@ -0,0 +1,12 @@ +package endpointservices + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/endpointservices/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitarptable/README.md b/resource-manager/network/2024-01-01/expressroutecircuitarptable/README.md new file mode 100644 index 00000000000..c398c31319f --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitarptable/README.md @@ -0,0 +1,37 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuitarptable` Documentation + +The `expressroutecircuitarptable` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuitarptable" +``` + + +### Client Initialization + +```go +client := expressroutecircuitarptable.NewExpressRouteCircuitArpTableClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ExpressRouteCircuitArpTableClient.ExpressRouteCircuitsListArpTable` + +```go +ctx := context.TODO() +id := expressroutecircuitarptable.NewArpTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "peeringValue", "arpTableValue") + +// alternatively `client.ExpressRouteCircuitsListArpTable(ctx, id)` can be used to do batched pagination +items, err := client.ExpressRouteCircuitsListArpTableComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/expressroutecircuitarptable/client.go b/resource-manager/network/2024-01-01/expressroutecircuitarptable/client.go new file mode 100644 index 00000000000..a927b3e2a41 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitarptable/client.go @@ -0,0 +1,26 @@ +package expressroutecircuitarptable + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitArpTableClient struct { + Client *resourcemanager.Client +} + +func NewExpressRouteCircuitArpTableClientWithBaseURI(sdkApi sdkEnv.Api) (*ExpressRouteCircuitArpTableClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "expressroutecircuitarptable", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ExpressRouteCircuitArpTableClient: %+v", err) + } + + return &ExpressRouteCircuitArpTableClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitarptable/id_arptable.go b/resource-manager/network/2024-01-01/expressroutecircuitarptable/id_arptable.go new file mode 100644 index 00000000000..c01410283c1 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitarptable/id_arptable.go @@ -0,0 +1,148 @@ +package expressroutecircuitarptable + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ArpTableId{}) +} + +var _ resourceids.ResourceId = &ArpTableId{} + +// ArpTableId is a struct representing the Resource ID for a Arp Table +type ArpTableId struct { + SubscriptionId string + ResourceGroupName string + ExpressRouteCircuitName string + PeeringName string + ArpTableName string +} + +// NewArpTableID returns a new ArpTableId struct +func NewArpTableID(subscriptionId string, resourceGroupName string, expressRouteCircuitName string, peeringName string, arpTableName string) ArpTableId { + return ArpTableId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRouteCircuitName: expressRouteCircuitName, + PeeringName: peeringName, + ArpTableName: arpTableName, + } +} + +// ParseArpTableID parses 'input' into a ArpTableId +func ParseArpTableID(input string) (*ArpTableId, error) { + parser := resourceids.NewParserFromResourceIdType(&ArpTableId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ArpTableId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseArpTableIDInsensitively parses 'input' case-insensitively into a ArpTableId +// note: this method should only be used for API response data and not user input +func ParseArpTableIDInsensitively(input string) (*ArpTableId, error) { + parser := resourceids.NewParserFromResourceIdType(&ArpTableId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ArpTableId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ArpTableId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRouteCircuitName, ok = input.Parsed["expressRouteCircuitName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRouteCircuitName", input) + } + + if id.PeeringName, ok = input.Parsed["peeringName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "peeringName", input) + } + + if id.ArpTableName, ok = input.Parsed["arpTableName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "arpTableName", input) + } + + return nil +} + +// ValidateArpTableID checks that 'input' can be parsed as a Arp Table ID +func ValidateArpTableID(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 := ParseArpTableID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Arp Table ID +func (id ArpTableId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRouteCircuits/%s/peerings/%s/arpTables/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRouteCircuitName, id.PeeringName, id.ArpTableName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Arp Table ID +func (id ArpTableId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRouteCircuits", "expressRouteCircuits", "expressRouteCircuits"), + resourceids.UserSpecifiedSegment("expressRouteCircuitName", "expressRouteCircuitValue"), + resourceids.StaticSegment("staticPeerings", "peerings", "peerings"), + resourceids.UserSpecifiedSegment("peeringName", "peeringValue"), + resourceids.StaticSegment("staticArpTables", "arpTables", "arpTables"), + resourceids.UserSpecifiedSegment("arpTableName", "arpTableValue"), + } +} + +// String returns a human-readable description of this Arp Table ID +func (id ArpTableId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Circuit Name: %q", id.ExpressRouteCircuitName), + fmt.Sprintf("Peering Name: %q", id.PeeringName), + fmt.Sprintf("Arp Table Name: %q", id.ArpTableName), + } + return fmt.Sprintf("Arp Table (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitarptable/id_arptable_test.go b/resource-manager/network/2024-01-01/expressroutecircuitarptable/id_arptable_test.go new file mode 100644 index 00000000000..1221091045b --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitarptable/id_arptable_test.go @@ -0,0 +1,372 @@ +package expressroutecircuitarptable + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ArpTableId{} + +func TestNewArpTableID(t *testing.T) { + id := NewArpTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "peeringValue", "arpTableValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRouteCircuitName != "expressRouteCircuitValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRouteCircuitName'", id.ExpressRouteCircuitName, "expressRouteCircuitValue") + } + + if id.PeeringName != "peeringValue" { + t.Fatalf("Expected %q but got %q for Segment 'PeeringName'", id.PeeringName, "peeringValue") + } + + if id.ArpTableName != "arpTableValue" { + t.Fatalf("Expected %q but got %q for Segment 'ArpTableName'", id.ArpTableName, "arpTableValue") + } +} + +func TestFormatArpTableID(t *testing.T) { + actual := NewArpTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "peeringValue", "arpTableValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/arpTables/arpTableValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseArpTableID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ArpTableId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/arpTables", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/arpTables/arpTableValue", + Expected: &ArpTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCircuitName: "expressRouteCircuitValue", + PeeringName: "peeringValue", + ArpTableName: "arpTableValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/arpTables/arpTableValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseArpTableID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCircuitName != v.Expected.ExpressRouteCircuitName { + t.Fatalf("Expected %q but got %q for ExpressRouteCircuitName", v.Expected.ExpressRouteCircuitName, actual.ExpressRouteCircuitName) + } + + if actual.PeeringName != v.Expected.PeeringName { + t.Fatalf("Expected %q but got %q for PeeringName", v.Expected.PeeringName, actual.PeeringName) + } + + if actual.ArpTableName != v.Expected.ArpTableName { + t.Fatalf("Expected %q but got %q for ArpTableName", v.Expected.ArpTableName, actual.ArpTableName) + } + + } +} + +func TestParseArpTableIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ArpTableId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS/pEeRiNgVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/arpTables", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS/pEeRiNgVaLuE/aRpTaBlEs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/arpTables/arpTableValue", + Expected: &ArpTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCircuitName: "expressRouteCircuitValue", + PeeringName: "peeringValue", + ArpTableName: "arpTableValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/arpTables/arpTableValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS/pEeRiNgVaLuE/aRpTaBlEs/aRpTaBlEvAlUe", + Expected: &ArpTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRouteCircuitName: "eXpReSsRoUtEcIrCuItVaLuE", + PeeringName: "pEeRiNgVaLuE", + ArpTableName: "aRpTaBlEvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS/pEeRiNgVaLuE/aRpTaBlEs/aRpTaBlEvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseArpTableIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCircuitName != v.Expected.ExpressRouteCircuitName { + t.Fatalf("Expected %q but got %q for ExpressRouteCircuitName", v.Expected.ExpressRouteCircuitName, actual.ExpressRouteCircuitName) + } + + if actual.PeeringName != v.Expected.PeeringName { + t.Fatalf("Expected %q but got %q for PeeringName", v.Expected.PeeringName, actual.PeeringName) + } + + if actual.ArpTableName != v.Expected.ArpTableName { + t.Fatalf("Expected %q but got %q for ArpTableName", v.Expected.ArpTableName, actual.ArpTableName) + } + + } +} + +func TestSegmentsForArpTableId(t *testing.T) { + segments := ArpTableId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ArpTableId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitarptable/method_expressroutecircuitslistarptable.go b/resource-manager/network/2024-01-01/expressroutecircuitarptable/method_expressroutecircuitslistarptable.go new file mode 100644 index 00000000000..6e9e9491ca8 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitarptable/method_expressroutecircuitslistarptable.go @@ -0,0 +1,76 @@ +package expressroutecircuitarptable + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitsListArpTableOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *[]ExpressRouteCircuitArpTable +} + +type ExpressRouteCircuitsListArpTableCompleteResult struct { + LatestHttpResponse *http.Response + Items []ExpressRouteCircuitArpTable +} + +// ExpressRouteCircuitsListArpTable ... +func (c ExpressRouteCircuitArpTableClient) ExpressRouteCircuitsListArpTable(ctx context.Context, id ArpTableId) (result ExpressRouteCircuitsListArpTableOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// ExpressRouteCircuitsListArpTableThenPoll performs ExpressRouteCircuitsListArpTable then polls until it's completed +func (c ExpressRouteCircuitArpTableClient) ExpressRouteCircuitsListArpTableThenPoll(ctx context.Context, id ArpTableId) error { + result, err := c.ExpressRouteCircuitsListArpTable(ctx, id) + if err != nil { + return fmt.Errorf("performing ExpressRouteCircuitsListArpTable: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after ExpressRouteCircuitsListArpTable: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitarptable/model_expressroutecircuitarptable.go b/resource-manager/network/2024-01-01/expressroutecircuitarptable/model_expressroutecircuitarptable.go new file mode 100644 index 00000000000..8b4183dd49f --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitarptable/model_expressroutecircuitarptable.go @@ -0,0 +1,11 @@ +package expressroutecircuitarptable + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitArpTable struct { + Age *int64 `json:"age,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + Interface *string `json:"interface,omitempty"` + MacAddress *string `json:"macAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitarptable/predicates.go b/resource-manager/network/2024-01-01/expressroutecircuitarptable/predicates.go new file mode 100644 index 00000000000..4143b82875f --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitarptable/predicates.go @@ -0,0 +1,32 @@ +package expressroutecircuitarptable + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitArpTableOperationPredicate struct { + Age *int64 + IPAddress *string + Interface *string + MacAddress *string +} + +func (p ExpressRouteCircuitArpTableOperationPredicate) Matches(input ExpressRouteCircuitArpTable) bool { + + if p.Age != nil && (input.Age == nil || *p.Age != *input.Age) { + return false + } + + if p.IPAddress != nil && (input.IPAddress == nil || *p.IPAddress != *input.IPAddress) { + return false + } + + if p.Interface != nil && (input.Interface == nil || *p.Interface != *input.Interface) { + return false + } + + if p.MacAddress != nil && (input.MacAddress == nil || *p.MacAddress != *input.MacAddress) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitarptable/version.go b/resource-manager/network/2024-01-01/expressroutecircuitarptable/version.go new file mode 100644 index 00000000000..c8627ec7856 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitarptable/version.go @@ -0,0 +1,12 @@ +package expressroutecircuitarptable + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/expressroutecircuitarptable/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/README.md b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/README.md new file mode 100644 index 00000000000..4008ebff991 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/README.md @@ -0,0 +1,82 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuitauthorizations` Documentation + +The `expressroutecircuitauthorizations` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuitauthorizations" +``` + + +### Client Initialization + +```go +client := expressroutecircuitauthorizations.NewExpressRouteCircuitAuthorizationsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ExpressRouteCircuitAuthorizationsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := expressroutecircuitauthorizations.NewAuthorizationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "authorizationValue") + +payload := expressroutecircuitauthorizations.ExpressRouteCircuitAuthorization{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `ExpressRouteCircuitAuthorizationsClient.Delete` + +```go +ctx := context.TODO() +id := expressroutecircuitauthorizations.NewAuthorizationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "authorizationValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `ExpressRouteCircuitAuthorizationsClient.Get` + +```go +ctx := context.TODO() +id := expressroutecircuitauthorizations.NewAuthorizationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "authorizationValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ExpressRouteCircuitAuthorizationsClient.List` + +```go +ctx := context.TODO() +id := expressroutecircuitauthorizations.NewExpressRouteCircuitID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/client.go b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/client.go new file mode 100644 index 00000000000..8060a80be1e --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/client.go @@ -0,0 +1,26 @@ +package expressroutecircuitauthorizations + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitAuthorizationsClient struct { + Client *resourcemanager.Client +} + +func NewExpressRouteCircuitAuthorizationsClientWithBaseURI(sdkApi sdkEnv.Api) (*ExpressRouteCircuitAuthorizationsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "expressroutecircuitauthorizations", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ExpressRouteCircuitAuthorizationsClient: %+v", err) + } + + return &ExpressRouteCircuitAuthorizationsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/constants.go b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/constants.go new file mode 100644 index 00000000000..052d235a64f --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/constants.go @@ -0,0 +1,98 @@ +package expressroutecircuitauthorizations + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AuthorizationUseStatus string + +const ( + AuthorizationUseStatusAvailable AuthorizationUseStatus = "Available" + AuthorizationUseStatusInUse AuthorizationUseStatus = "InUse" +) + +func PossibleValuesForAuthorizationUseStatus() []string { + return []string{ + string(AuthorizationUseStatusAvailable), + string(AuthorizationUseStatusInUse), + } +} + +func (s *AuthorizationUseStatus) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAuthorizationUseStatus(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAuthorizationUseStatus(input string) (*AuthorizationUseStatus, error) { + vals := map[string]AuthorizationUseStatus{ + "available": AuthorizationUseStatusAvailable, + "inuse": AuthorizationUseStatusInUse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := AuthorizationUseStatus(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/id_authorization.go b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/id_authorization.go new file mode 100644 index 00000000000..b659c5a5b8c --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/id_authorization.go @@ -0,0 +1,139 @@ +package expressroutecircuitauthorizations + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&AuthorizationId{}) +} + +var _ resourceids.ResourceId = &AuthorizationId{} + +// AuthorizationId is a struct representing the Resource ID for a Authorization +type AuthorizationId struct { + SubscriptionId string + ResourceGroupName string + ExpressRouteCircuitName string + AuthorizationName string +} + +// NewAuthorizationID returns a new AuthorizationId struct +func NewAuthorizationID(subscriptionId string, resourceGroupName string, expressRouteCircuitName string, authorizationName string) AuthorizationId { + return AuthorizationId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRouteCircuitName: expressRouteCircuitName, + AuthorizationName: authorizationName, + } +} + +// ParseAuthorizationID parses 'input' into a AuthorizationId +func ParseAuthorizationID(input string) (*AuthorizationId, error) { + parser := resourceids.NewParserFromResourceIdType(&AuthorizationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := AuthorizationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseAuthorizationIDInsensitively parses 'input' case-insensitively into a AuthorizationId +// note: this method should only be used for API response data and not user input +func ParseAuthorizationIDInsensitively(input string) (*AuthorizationId, error) { + parser := resourceids.NewParserFromResourceIdType(&AuthorizationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := AuthorizationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *AuthorizationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRouteCircuitName, ok = input.Parsed["expressRouteCircuitName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRouteCircuitName", input) + } + + if id.AuthorizationName, ok = input.Parsed["authorizationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "authorizationName", input) + } + + return nil +} + +// ValidateAuthorizationID checks that 'input' can be parsed as a Authorization ID +func ValidateAuthorizationID(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 := ParseAuthorizationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Authorization ID +func (id AuthorizationId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRouteCircuits/%s/authorizations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRouteCircuitName, id.AuthorizationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Authorization ID +func (id AuthorizationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRouteCircuits", "expressRouteCircuits", "expressRouteCircuits"), + resourceids.UserSpecifiedSegment("expressRouteCircuitName", "expressRouteCircuitValue"), + resourceids.StaticSegment("staticAuthorizations", "authorizations", "authorizations"), + resourceids.UserSpecifiedSegment("authorizationName", "authorizationValue"), + } +} + +// String returns a human-readable description of this Authorization ID +func (id AuthorizationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Circuit Name: %q", id.ExpressRouteCircuitName), + fmt.Sprintf("Authorization Name: %q", id.AuthorizationName), + } + return fmt.Sprintf("Authorization (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/id_authorization_test.go b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/id_authorization_test.go new file mode 100644 index 00000000000..1f61685e6e4 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/id_authorization_test.go @@ -0,0 +1,327 @@ +package expressroutecircuitauthorizations + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &AuthorizationId{} + +func TestNewAuthorizationID(t *testing.T) { + id := NewAuthorizationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "authorizationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRouteCircuitName != "expressRouteCircuitValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRouteCircuitName'", id.ExpressRouteCircuitName, "expressRouteCircuitValue") + } + + if id.AuthorizationName != "authorizationValue" { + t.Fatalf("Expected %q but got %q for Segment 'AuthorizationName'", id.AuthorizationName, "authorizationValue") + } +} + +func TestFormatAuthorizationID(t *testing.T) { + actual := NewAuthorizationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "authorizationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/authorizations/authorizationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseAuthorizationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *AuthorizationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/authorizations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/authorizations/authorizationValue", + Expected: &AuthorizationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCircuitName: "expressRouteCircuitValue", + AuthorizationName: "authorizationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/authorizations/authorizationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseAuthorizationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCircuitName != v.Expected.ExpressRouteCircuitName { + t.Fatalf("Expected %q but got %q for ExpressRouteCircuitName", v.Expected.ExpressRouteCircuitName, actual.ExpressRouteCircuitName) + } + + if actual.AuthorizationName != v.Expected.AuthorizationName { + t.Fatalf("Expected %q but got %q for AuthorizationName", v.Expected.AuthorizationName, actual.AuthorizationName) + } + + } +} + +func TestParseAuthorizationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *AuthorizationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/authorizations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/aUtHoRiZaTiOnS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/authorizations/authorizationValue", + Expected: &AuthorizationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCircuitName: "expressRouteCircuitValue", + AuthorizationName: "authorizationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/authorizations/authorizationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/aUtHoRiZaTiOnS/aUtHoRiZaTiOnVaLuE", + Expected: &AuthorizationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRouteCircuitName: "eXpReSsRoUtEcIrCuItVaLuE", + AuthorizationName: "aUtHoRiZaTiOnVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/aUtHoRiZaTiOnS/aUtHoRiZaTiOnVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseAuthorizationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCircuitName != v.Expected.ExpressRouteCircuitName { + t.Fatalf("Expected %q but got %q for ExpressRouteCircuitName", v.Expected.ExpressRouteCircuitName, actual.ExpressRouteCircuitName) + } + + if actual.AuthorizationName != v.Expected.AuthorizationName { + t.Fatalf("Expected %q but got %q for AuthorizationName", v.Expected.AuthorizationName, actual.AuthorizationName) + } + + } +} + +func TestSegmentsForAuthorizationId(t *testing.T) { + segments := AuthorizationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("AuthorizationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/id_expressroutecircuit.go b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/id_expressroutecircuit.go new file mode 100644 index 00000000000..a46fa52bf5d --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/id_expressroutecircuit.go @@ -0,0 +1,130 @@ +package expressroutecircuitauthorizations + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ExpressRouteCircuitId{}) +} + +var _ resourceids.ResourceId = &ExpressRouteCircuitId{} + +// ExpressRouteCircuitId is a struct representing the Resource ID for a Express Route Circuit +type ExpressRouteCircuitId struct { + SubscriptionId string + ResourceGroupName string + ExpressRouteCircuitName string +} + +// NewExpressRouteCircuitID returns a new ExpressRouteCircuitId struct +func NewExpressRouteCircuitID(subscriptionId string, resourceGroupName string, expressRouteCircuitName string) ExpressRouteCircuitId { + return ExpressRouteCircuitId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRouteCircuitName: expressRouteCircuitName, + } +} + +// ParseExpressRouteCircuitID parses 'input' into a ExpressRouteCircuitId +func ParseExpressRouteCircuitID(input string) (*ExpressRouteCircuitId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRouteCircuitId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRouteCircuitId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseExpressRouteCircuitIDInsensitively parses 'input' case-insensitively into a ExpressRouteCircuitId +// note: this method should only be used for API response data and not user input +func ParseExpressRouteCircuitIDInsensitively(input string) (*ExpressRouteCircuitId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRouteCircuitId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRouteCircuitId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ExpressRouteCircuitId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRouteCircuitName, ok = input.Parsed["expressRouteCircuitName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRouteCircuitName", input) + } + + return nil +} + +// ValidateExpressRouteCircuitID checks that 'input' can be parsed as a Express Route Circuit ID +func ValidateExpressRouteCircuitID(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 := ParseExpressRouteCircuitID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Express Route Circuit ID +func (id ExpressRouteCircuitId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRouteCircuits/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRouteCircuitName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Express Route Circuit ID +func (id ExpressRouteCircuitId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRouteCircuits", "expressRouteCircuits", "expressRouteCircuits"), + resourceids.UserSpecifiedSegment("expressRouteCircuitName", "expressRouteCircuitValue"), + } +} + +// String returns a human-readable description of this Express Route Circuit ID +func (id ExpressRouteCircuitId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Circuit Name: %q", id.ExpressRouteCircuitName), + } + return fmt.Sprintf("Express Route Circuit (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/id_expressroutecircuit_test.go b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/id_expressroutecircuit_test.go new file mode 100644 index 00000000000..d174a2ea14b --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/id_expressroutecircuit_test.go @@ -0,0 +1,282 @@ +package expressroutecircuitauthorizations + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ExpressRouteCircuitId{} + +func TestNewExpressRouteCircuitID(t *testing.T) { + id := NewExpressRouteCircuitID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRouteCircuitName != "expressRouteCircuitValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRouteCircuitName'", id.ExpressRouteCircuitName, "expressRouteCircuitValue") + } +} + +func TestFormatExpressRouteCircuitID(t *testing.T) { + actual := NewExpressRouteCircuitID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseExpressRouteCircuitID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRouteCircuitId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue", + Expected: &ExpressRouteCircuitId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCircuitName: "expressRouteCircuitValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRouteCircuitID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCircuitName != v.Expected.ExpressRouteCircuitName { + t.Fatalf("Expected %q but got %q for ExpressRouteCircuitName", v.Expected.ExpressRouteCircuitName, actual.ExpressRouteCircuitName) + } + + } +} + +func TestParseExpressRouteCircuitIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRouteCircuitId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue", + Expected: &ExpressRouteCircuitId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCircuitName: "expressRouteCircuitValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE", + Expected: &ExpressRouteCircuitId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRouteCircuitName: "eXpReSsRoUtEcIrCuItVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRouteCircuitIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCircuitName != v.Expected.ExpressRouteCircuitName { + t.Fatalf("Expected %q but got %q for ExpressRouteCircuitName", v.Expected.ExpressRouteCircuitName, actual.ExpressRouteCircuitName) + } + + } +} + +func TestSegmentsForExpressRouteCircuitId(t *testing.T) { + segments := ExpressRouteCircuitId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ExpressRouteCircuitId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/method_createorupdate.go b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/method_createorupdate.go new file mode 100644 index 00000000000..5fe3d709320 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/method_createorupdate.go @@ -0,0 +1,75 @@ +package expressroutecircuitauthorizations + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteCircuitAuthorization +} + +// CreateOrUpdate ... +func (c ExpressRouteCircuitAuthorizationsClient) CreateOrUpdate(ctx context.Context, id AuthorizationId, input ExpressRouteCircuitAuthorization) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c ExpressRouteCircuitAuthorizationsClient) CreateOrUpdateThenPoll(ctx context.Context, id AuthorizationId, input ExpressRouteCircuitAuthorization) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/method_delete.go b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/method_delete.go new file mode 100644 index 00000000000..b2c01bb7f11 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/method_delete.go @@ -0,0 +1,71 @@ +package expressroutecircuitauthorizations + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c ExpressRouteCircuitAuthorizationsClient) Delete(ctx context.Context, id AuthorizationId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c ExpressRouteCircuitAuthorizationsClient) DeleteThenPoll(ctx context.Context, id AuthorizationId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/method_get.go b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/method_get.go new file mode 100644 index 00000000000..19e783a8675 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/method_get.go @@ -0,0 +1,54 @@ +package expressroutecircuitauthorizations + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteCircuitAuthorization +} + +// Get ... +func (c ExpressRouteCircuitAuthorizationsClient) Get(ctx context.Context, id AuthorizationId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ExpressRouteCircuitAuthorization + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/method_list.go b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/method_list.go new file mode 100644 index 00000000000..a689b8d8595 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/method_list.go @@ -0,0 +1,92 @@ +package expressroutecircuitauthorizations + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ExpressRouteCircuitAuthorization +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []ExpressRouteCircuitAuthorization +} + +// List ... +func (c ExpressRouteCircuitAuthorizationsClient) List(ctx context.Context, id ExpressRouteCircuitId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/authorizations", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ExpressRouteCircuitAuthorization `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c ExpressRouteCircuitAuthorizationsClient) ListComplete(ctx context.Context, id ExpressRouteCircuitId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, ExpressRouteCircuitAuthorizationOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ExpressRouteCircuitAuthorizationsClient) ListCompleteMatchingPredicate(ctx context.Context, id ExpressRouteCircuitId, predicate ExpressRouteCircuitAuthorizationOperationPredicate) (result ListCompleteResult, err error) { + items := make([]ExpressRouteCircuitAuthorization, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/model_authorizationpropertiesformat.go b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/model_authorizationpropertiesformat.go new file mode 100644 index 00000000000..0aa969a9e6f --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/model_authorizationpropertiesformat.go @@ -0,0 +1,11 @@ +package expressroutecircuitauthorizations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AuthorizationPropertiesFormat struct { + AuthorizationKey *string `json:"authorizationKey,omitempty"` + AuthorizationUseStatus *AuthorizationUseStatus `json:"authorizationUseStatus,omitempty"` + ConnectionResourceUri *string `json:"connectionResourceUri,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/model_expressroutecircuitauthorization.go b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/model_expressroutecircuitauthorization.go new file mode 100644 index 00000000000..b4b084362fc --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/model_expressroutecircuitauthorization.go @@ -0,0 +1,12 @@ +package expressroutecircuitauthorizations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitAuthorization struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *AuthorizationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/predicates.go b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/predicates.go new file mode 100644 index 00000000000..3533e80a13e --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/predicates.go @@ -0,0 +1,32 @@ +package expressroutecircuitauthorizations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitAuthorizationOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p ExpressRouteCircuitAuthorizationOperationPredicate) Matches(input ExpressRouteCircuitAuthorization) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/version.go b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/version.go new file mode 100644 index 00000000000..a162f67150a --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitauthorizations/version.go @@ -0,0 +1,12 @@ +package expressroutecircuitauthorizations + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/expressroutecircuitauthorizations/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitconnections/README.md b/resource-manager/network/2024-01-01/expressroutecircuitconnections/README.md new file mode 100644 index 00000000000..bb30c8dda10 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitconnections/README.md @@ -0,0 +1,83 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuitconnections` Documentation + +The `expressroutecircuitconnections` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuitconnections" +``` + + +### Client Initialization + +```go +client := expressroutecircuitconnections.NewExpressRouteCircuitConnectionsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ExpressRouteCircuitConnectionsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := expressroutecircuitconnections.NewPeeringConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "peeringValue", "connectionValue") + +payload := expressroutecircuitconnections.ExpressRouteCircuitConnection{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `ExpressRouteCircuitConnectionsClient.Delete` + +```go +ctx := context.TODO() +id := expressroutecircuitconnections.NewPeeringConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "peeringValue", "connectionValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `ExpressRouteCircuitConnectionsClient.Get` + +```go +ctx := context.TODO() +id := expressroutecircuitconnections.NewPeeringConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "peeringValue", "connectionValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ExpressRouteCircuitConnectionsClient.List` + +```go +ctx := context.TODO() +id := commonids.NewExpressRouteCircuitPeeringID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "peeringValue") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/expressroutecircuitconnections/client.go b/resource-manager/network/2024-01-01/expressroutecircuitconnections/client.go new file mode 100644 index 00000000000..333eff0e189 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitconnections/client.go @@ -0,0 +1,26 @@ +package expressroutecircuitconnections + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitConnectionsClient struct { + Client *resourcemanager.Client +} + +func NewExpressRouteCircuitConnectionsClientWithBaseURI(sdkApi sdkEnv.Api) (*ExpressRouteCircuitConnectionsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "expressroutecircuitconnections", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ExpressRouteCircuitConnectionsClient: %+v", err) + } + + return &ExpressRouteCircuitConnectionsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitconnections/constants.go b/resource-manager/network/2024-01-01/expressroutecircuitconnections/constants.go new file mode 100644 index 00000000000..8bfeb3344f9 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitconnections/constants.go @@ -0,0 +1,101 @@ +package expressroutecircuitconnections + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CircuitConnectionStatus string + +const ( + CircuitConnectionStatusConnected CircuitConnectionStatus = "Connected" + CircuitConnectionStatusConnecting CircuitConnectionStatus = "Connecting" + CircuitConnectionStatusDisconnected CircuitConnectionStatus = "Disconnected" +) + +func PossibleValuesForCircuitConnectionStatus() []string { + return []string{ + string(CircuitConnectionStatusConnected), + string(CircuitConnectionStatusConnecting), + string(CircuitConnectionStatusDisconnected), + } +} + +func (s *CircuitConnectionStatus) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseCircuitConnectionStatus(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseCircuitConnectionStatus(input string) (*CircuitConnectionStatus, error) { + vals := map[string]CircuitConnectionStatus{ + "connected": CircuitConnectionStatusConnected, + "connecting": CircuitConnectionStatusConnecting, + "disconnected": CircuitConnectionStatusDisconnected, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := CircuitConnectionStatus(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitconnections/id_peeringconnection.go b/resource-manager/network/2024-01-01/expressroutecircuitconnections/id_peeringconnection.go new file mode 100644 index 00000000000..0e2e6d6c894 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitconnections/id_peeringconnection.go @@ -0,0 +1,148 @@ +package expressroutecircuitconnections + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&PeeringConnectionId{}) +} + +var _ resourceids.ResourceId = &PeeringConnectionId{} + +// PeeringConnectionId is a struct representing the Resource ID for a Peering Connection +type PeeringConnectionId struct { + SubscriptionId string + ResourceGroupName string + ExpressRouteCircuitName string + PeeringName string + ConnectionName string +} + +// NewPeeringConnectionID returns a new PeeringConnectionId struct +func NewPeeringConnectionID(subscriptionId string, resourceGroupName string, expressRouteCircuitName string, peeringName string, connectionName string) PeeringConnectionId { + return PeeringConnectionId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRouteCircuitName: expressRouteCircuitName, + PeeringName: peeringName, + ConnectionName: connectionName, + } +} + +// ParsePeeringConnectionID parses 'input' into a PeeringConnectionId +func ParsePeeringConnectionID(input string) (*PeeringConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&PeeringConnectionId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PeeringConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParsePeeringConnectionIDInsensitively parses 'input' case-insensitively into a PeeringConnectionId +// note: this method should only be used for API response data and not user input +func ParsePeeringConnectionIDInsensitively(input string) (*PeeringConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&PeeringConnectionId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PeeringConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *PeeringConnectionId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRouteCircuitName, ok = input.Parsed["expressRouteCircuitName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRouteCircuitName", input) + } + + if id.PeeringName, ok = input.Parsed["peeringName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "peeringName", input) + } + + if id.ConnectionName, ok = input.Parsed["connectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "connectionName", input) + } + + return nil +} + +// ValidatePeeringConnectionID checks that 'input' can be parsed as a Peering Connection ID +func ValidatePeeringConnectionID(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 := ParsePeeringConnectionID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Peering Connection ID +func (id PeeringConnectionId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRouteCircuits/%s/peerings/%s/connections/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRouteCircuitName, id.PeeringName, id.ConnectionName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Peering Connection ID +func (id PeeringConnectionId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRouteCircuits", "expressRouteCircuits", "expressRouteCircuits"), + resourceids.UserSpecifiedSegment("expressRouteCircuitName", "expressRouteCircuitValue"), + resourceids.StaticSegment("staticPeerings", "peerings", "peerings"), + resourceids.UserSpecifiedSegment("peeringName", "peeringValue"), + resourceids.StaticSegment("staticConnections", "connections", "connections"), + resourceids.UserSpecifiedSegment("connectionName", "connectionValue"), + } +} + +// String returns a human-readable description of this Peering Connection ID +func (id PeeringConnectionId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Circuit Name: %q", id.ExpressRouteCircuitName), + fmt.Sprintf("Peering Name: %q", id.PeeringName), + fmt.Sprintf("Connection Name: %q", id.ConnectionName), + } + return fmt.Sprintf("Peering Connection (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitconnections/id_peeringconnection_test.go b/resource-manager/network/2024-01-01/expressroutecircuitconnections/id_peeringconnection_test.go new file mode 100644 index 00000000000..4a132672fdf --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitconnections/id_peeringconnection_test.go @@ -0,0 +1,372 @@ +package expressroutecircuitconnections + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &PeeringConnectionId{} + +func TestNewPeeringConnectionID(t *testing.T) { + id := NewPeeringConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "peeringValue", "connectionValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRouteCircuitName != "expressRouteCircuitValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRouteCircuitName'", id.ExpressRouteCircuitName, "expressRouteCircuitValue") + } + + if id.PeeringName != "peeringValue" { + t.Fatalf("Expected %q but got %q for Segment 'PeeringName'", id.PeeringName, "peeringValue") + } + + if id.ConnectionName != "connectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'ConnectionName'", id.ConnectionName, "connectionValue") + } +} + +func TestFormatPeeringConnectionID(t *testing.T) { + actual := NewPeeringConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "peeringValue", "connectionValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/connections/connectionValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParsePeeringConnectionID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PeeringConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/connections", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/connections/connectionValue", + Expected: &PeeringConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCircuitName: "expressRouteCircuitValue", + PeeringName: "peeringValue", + ConnectionName: "connectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/connections/connectionValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePeeringConnectionID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCircuitName != v.Expected.ExpressRouteCircuitName { + t.Fatalf("Expected %q but got %q for ExpressRouteCircuitName", v.Expected.ExpressRouteCircuitName, actual.ExpressRouteCircuitName) + } + + if actual.PeeringName != v.Expected.PeeringName { + t.Fatalf("Expected %q but got %q for PeeringName", v.Expected.PeeringName, actual.PeeringName) + } + + if actual.ConnectionName != v.Expected.ConnectionName { + t.Fatalf("Expected %q but got %q for ConnectionName", v.Expected.ConnectionName, actual.ConnectionName) + } + + } +} + +func TestParsePeeringConnectionIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PeeringConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS/pEeRiNgVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/connections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS/pEeRiNgVaLuE/cOnNeCtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/connections/connectionValue", + Expected: &PeeringConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCircuitName: "expressRouteCircuitValue", + PeeringName: "peeringValue", + ConnectionName: "connectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/connections/connectionValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS/pEeRiNgVaLuE/cOnNeCtIoNs/cOnNeCtIoNvAlUe", + Expected: &PeeringConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRouteCircuitName: "eXpReSsRoUtEcIrCuItVaLuE", + PeeringName: "pEeRiNgVaLuE", + ConnectionName: "cOnNeCtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS/pEeRiNgVaLuE/cOnNeCtIoNs/cOnNeCtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePeeringConnectionIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCircuitName != v.Expected.ExpressRouteCircuitName { + t.Fatalf("Expected %q but got %q for ExpressRouteCircuitName", v.Expected.ExpressRouteCircuitName, actual.ExpressRouteCircuitName) + } + + if actual.PeeringName != v.Expected.PeeringName { + t.Fatalf("Expected %q but got %q for PeeringName", v.Expected.PeeringName, actual.PeeringName) + } + + if actual.ConnectionName != v.Expected.ConnectionName { + t.Fatalf("Expected %q but got %q for ConnectionName", v.Expected.ConnectionName, actual.ConnectionName) + } + + } +} + +func TestSegmentsForPeeringConnectionId(t *testing.T) { + segments := PeeringConnectionId{}.Segments() + if len(segments) == 0 { + t.Fatalf("PeeringConnectionId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitconnections/method_createorupdate.go b/resource-manager/network/2024-01-01/expressroutecircuitconnections/method_createorupdate.go new file mode 100644 index 00000000000..25bb50bd1b3 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitconnections/method_createorupdate.go @@ -0,0 +1,75 @@ +package expressroutecircuitconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteCircuitConnection +} + +// CreateOrUpdate ... +func (c ExpressRouteCircuitConnectionsClient) CreateOrUpdate(ctx context.Context, id PeeringConnectionId, input ExpressRouteCircuitConnection) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c ExpressRouteCircuitConnectionsClient) CreateOrUpdateThenPoll(ctx context.Context, id PeeringConnectionId, input ExpressRouteCircuitConnection) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitconnections/method_delete.go b/resource-manager/network/2024-01-01/expressroutecircuitconnections/method_delete.go new file mode 100644 index 00000000000..1d813338ead --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitconnections/method_delete.go @@ -0,0 +1,71 @@ +package expressroutecircuitconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c ExpressRouteCircuitConnectionsClient) Delete(ctx context.Context, id PeeringConnectionId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c ExpressRouteCircuitConnectionsClient) DeleteThenPoll(ctx context.Context, id PeeringConnectionId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitconnections/method_get.go b/resource-manager/network/2024-01-01/expressroutecircuitconnections/method_get.go new file mode 100644 index 00000000000..0a4a18dd7cc --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitconnections/method_get.go @@ -0,0 +1,54 @@ +package expressroutecircuitconnections + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteCircuitConnection +} + +// Get ... +func (c ExpressRouteCircuitConnectionsClient) Get(ctx context.Context, id PeeringConnectionId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ExpressRouteCircuitConnection + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitconnections/method_list.go b/resource-manager/network/2024-01-01/expressroutecircuitconnections/method_list.go new file mode 100644 index 00000000000..706c24c1571 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitconnections/method_list.go @@ -0,0 +1,93 @@ +package expressroutecircuitconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ExpressRouteCircuitConnection +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []ExpressRouteCircuitConnection +} + +// List ... +func (c ExpressRouteCircuitConnectionsClient) List(ctx context.Context, id commonids.ExpressRouteCircuitPeeringId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/connections", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ExpressRouteCircuitConnection `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c ExpressRouteCircuitConnectionsClient) ListComplete(ctx context.Context, id commonids.ExpressRouteCircuitPeeringId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, ExpressRouteCircuitConnectionOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ExpressRouteCircuitConnectionsClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ExpressRouteCircuitPeeringId, predicate ExpressRouteCircuitConnectionOperationPredicate) (result ListCompleteResult, err error) { + items := make([]ExpressRouteCircuitConnection, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitconnections/model_expressroutecircuitconnection.go b/resource-manager/network/2024-01-01/expressroutecircuitconnections/model_expressroutecircuitconnection.go new file mode 100644 index 00000000000..689bf9a8e12 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitconnections/model_expressroutecircuitconnection.go @@ -0,0 +1,12 @@ +package expressroutecircuitconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ExpressRouteCircuitConnectionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitconnections/model_expressroutecircuitconnectionpropertiesformat.go b/resource-manager/network/2024-01-01/expressroutecircuitconnections/model_expressroutecircuitconnectionpropertiesformat.go new file mode 100644 index 00000000000..a1bf981acf3 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitconnections/model_expressroutecircuitconnectionpropertiesformat.go @@ -0,0 +1,14 @@ +package expressroutecircuitconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitConnectionPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AuthorizationKey *string `json:"authorizationKey,omitempty"` + CircuitConnectionStatus *CircuitConnectionStatus `json:"circuitConnectionStatus,omitempty"` + ExpressRouteCircuitPeering *SubResource `json:"expressRouteCircuitPeering,omitempty"` + IPv6CircuitConnectionConfig *IPv6CircuitConnectionConfig `json:"ipv6CircuitConnectionConfig,omitempty"` + PeerExpressRouteCircuitPeering *SubResource `json:"peerExpressRouteCircuitPeering,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitconnections/model_ipv6circuitconnectionconfig.go b/resource-manager/network/2024-01-01/expressroutecircuitconnections/model_ipv6circuitconnectionconfig.go new file mode 100644 index 00000000000..580b8a8dcd7 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitconnections/model_ipv6circuitconnectionconfig.go @@ -0,0 +1,9 @@ +package expressroutecircuitconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPv6CircuitConnectionConfig struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + CircuitConnectionStatus *CircuitConnectionStatus `json:"circuitConnectionStatus,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitconnections/model_subresource.go b/resource-manager/network/2024-01-01/expressroutecircuitconnections/model_subresource.go new file mode 100644 index 00000000000..d6673ed96dc --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitconnections/model_subresource.go @@ -0,0 +1,8 @@ +package expressroutecircuitconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitconnections/predicates.go b/resource-manager/network/2024-01-01/expressroutecircuitconnections/predicates.go new file mode 100644 index 00000000000..6c65b4df05d --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitconnections/predicates.go @@ -0,0 +1,32 @@ +package expressroutecircuitconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitConnectionOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p ExpressRouteCircuitConnectionOperationPredicate) Matches(input ExpressRouteCircuitConnection) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitconnections/version.go b/resource-manager/network/2024-01-01/expressroutecircuitconnections/version.go new file mode 100644 index 00000000000..0d2415b4bdd --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitconnections/version.go @@ -0,0 +1,12 @@ +package expressroutecircuitconnections + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/expressroutecircuitconnections/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitpeerings/README.md b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/README.md new file mode 100644 index 00000000000..5de24b5c4d3 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/README.md @@ -0,0 +1,83 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuitpeerings` Documentation + +The `expressroutecircuitpeerings` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuitpeerings" +``` + + +### Client Initialization + +```go +client := expressroutecircuitpeerings.NewExpressRouteCircuitPeeringsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ExpressRouteCircuitPeeringsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := commonids.NewExpressRouteCircuitPeeringID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "peeringValue") + +payload := expressroutecircuitpeerings.ExpressRouteCircuitPeering{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `ExpressRouteCircuitPeeringsClient.Delete` + +```go +ctx := context.TODO() +id := commonids.NewExpressRouteCircuitPeeringID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "peeringValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `ExpressRouteCircuitPeeringsClient.Get` + +```go +ctx := context.TODO() +id := commonids.NewExpressRouteCircuitPeeringID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "peeringValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ExpressRouteCircuitPeeringsClient.List` + +```go +ctx := context.TODO() +id := expressroutecircuitpeerings.NewExpressRouteCircuitID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/expressroutecircuitpeerings/client.go b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/client.go new file mode 100644 index 00000000000..63ac4daefad --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/client.go @@ -0,0 +1,26 @@ +package expressroutecircuitpeerings + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitPeeringsClient struct { + Client *resourcemanager.Client +} + +func NewExpressRouteCircuitPeeringsClientWithBaseURI(sdkApi sdkEnv.Api) (*ExpressRouteCircuitPeeringsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "expressroutecircuitpeerings", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ExpressRouteCircuitPeeringsClient: %+v", err) + } + + return &ExpressRouteCircuitPeeringsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitpeerings/constants.go b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/constants.go new file mode 100644 index 00000000000..98d21da2c70 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/constants.go @@ -0,0 +1,274 @@ +package expressroutecircuitpeerings + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CircuitConnectionStatus string + +const ( + CircuitConnectionStatusConnected CircuitConnectionStatus = "Connected" + CircuitConnectionStatusConnecting CircuitConnectionStatus = "Connecting" + CircuitConnectionStatusDisconnected CircuitConnectionStatus = "Disconnected" +) + +func PossibleValuesForCircuitConnectionStatus() []string { + return []string{ + string(CircuitConnectionStatusConnected), + string(CircuitConnectionStatusConnecting), + string(CircuitConnectionStatusDisconnected), + } +} + +func (s *CircuitConnectionStatus) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseCircuitConnectionStatus(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseCircuitConnectionStatus(input string) (*CircuitConnectionStatus, error) { + vals := map[string]CircuitConnectionStatus{ + "connected": CircuitConnectionStatusConnected, + "connecting": CircuitConnectionStatusConnecting, + "disconnected": CircuitConnectionStatusDisconnected, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := CircuitConnectionStatus(input) + return &out, nil +} + +type ExpressRouteCircuitPeeringAdvertisedPublicPrefixState string + +const ( + ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfigured ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "Configured" + ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfiguring ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "Configuring" + ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateNotConfigured ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "NotConfigured" + ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateValidationNeeded ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "ValidationNeeded" +) + +func PossibleValuesForExpressRouteCircuitPeeringAdvertisedPublicPrefixState() []string { + return []string{ + string(ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfigured), + string(ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfiguring), + string(ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateNotConfigured), + string(ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateValidationNeeded), + } +} + +func (s *ExpressRouteCircuitPeeringAdvertisedPublicPrefixState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRouteCircuitPeeringAdvertisedPublicPrefixState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRouteCircuitPeeringAdvertisedPublicPrefixState(input string) (*ExpressRouteCircuitPeeringAdvertisedPublicPrefixState, error) { + vals := map[string]ExpressRouteCircuitPeeringAdvertisedPublicPrefixState{ + "configured": ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfigured, + "configuring": ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfiguring, + "notconfigured": ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateNotConfigured, + "validationneeded": ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateValidationNeeded, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRouteCircuitPeeringAdvertisedPublicPrefixState(input) + return &out, nil +} + +type ExpressRouteCircuitPeeringState string + +const ( + ExpressRouteCircuitPeeringStateDisabled ExpressRouteCircuitPeeringState = "Disabled" + ExpressRouteCircuitPeeringStateEnabled ExpressRouteCircuitPeeringState = "Enabled" +) + +func PossibleValuesForExpressRouteCircuitPeeringState() []string { + return []string{ + string(ExpressRouteCircuitPeeringStateDisabled), + string(ExpressRouteCircuitPeeringStateEnabled), + } +} + +func (s *ExpressRouteCircuitPeeringState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRouteCircuitPeeringState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRouteCircuitPeeringState(input string) (*ExpressRouteCircuitPeeringState, error) { + vals := map[string]ExpressRouteCircuitPeeringState{ + "disabled": ExpressRouteCircuitPeeringStateDisabled, + "enabled": ExpressRouteCircuitPeeringStateEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRouteCircuitPeeringState(input) + return &out, nil +} + +type ExpressRoutePeeringState string + +const ( + ExpressRoutePeeringStateDisabled ExpressRoutePeeringState = "Disabled" + ExpressRoutePeeringStateEnabled ExpressRoutePeeringState = "Enabled" +) + +func PossibleValuesForExpressRoutePeeringState() []string { + return []string{ + string(ExpressRoutePeeringStateDisabled), + string(ExpressRoutePeeringStateEnabled), + } +} + +func (s *ExpressRoutePeeringState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRoutePeeringState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRoutePeeringState(input string) (*ExpressRoutePeeringState, error) { + vals := map[string]ExpressRoutePeeringState{ + "disabled": ExpressRoutePeeringStateDisabled, + "enabled": ExpressRoutePeeringStateEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRoutePeeringState(input) + return &out, nil +} + +type ExpressRoutePeeringType string + +const ( + ExpressRoutePeeringTypeAzurePrivatePeering ExpressRoutePeeringType = "AzurePrivatePeering" + ExpressRoutePeeringTypeAzurePublicPeering ExpressRoutePeeringType = "AzurePublicPeering" + ExpressRoutePeeringTypeMicrosoftPeering ExpressRoutePeeringType = "MicrosoftPeering" +) + +func PossibleValuesForExpressRoutePeeringType() []string { + return []string{ + string(ExpressRoutePeeringTypeAzurePrivatePeering), + string(ExpressRoutePeeringTypeAzurePublicPeering), + string(ExpressRoutePeeringTypeMicrosoftPeering), + } +} + +func (s *ExpressRoutePeeringType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRoutePeeringType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRoutePeeringType(input string) (*ExpressRoutePeeringType, error) { + vals := map[string]ExpressRoutePeeringType{ + "azureprivatepeering": ExpressRoutePeeringTypeAzurePrivatePeering, + "azurepublicpeering": ExpressRoutePeeringTypeAzurePublicPeering, + "microsoftpeering": ExpressRoutePeeringTypeMicrosoftPeering, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRoutePeeringType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitpeerings/id_expressroutecircuit.go b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/id_expressroutecircuit.go new file mode 100644 index 00000000000..51f74b9a362 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/id_expressroutecircuit.go @@ -0,0 +1,130 @@ +package expressroutecircuitpeerings + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ExpressRouteCircuitId{}) +} + +var _ resourceids.ResourceId = &ExpressRouteCircuitId{} + +// ExpressRouteCircuitId is a struct representing the Resource ID for a Express Route Circuit +type ExpressRouteCircuitId struct { + SubscriptionId string + ResourceGroupName string + ExpressRouteCircuitName string +} + +// NewExpressRouteCircuitID returns a new ExpressRouteCircuitId struct +func NewExpressRouteCircuitID(subscriptionId string, resourceGroupName string, expressRouteCircuitName string) ExpressRouteCircuitId { + return ExpressRouteCircuitId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRouteCircuitName: expressRouteCircuitName, + } +} + +// ParseExpressRouteCircuitID parses 'input' into a ExpressRouteCircuitId +func ParseExpressRouteCircuitID(input string) (*ExpressRouteCircuitId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRouteCircuitId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRouteCircuitId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseExpressRouteCircuitIDInsensitively parses 'input' case-insensitively into a ExpressRouteCircuitId +// note: this method should only be used for API response data and not user input +func ParseExpressRouteCircuitIDInsensitively(input string) (*ExpressRouteCircuitId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRouteCircuitId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRouteCircuitId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ExpressRouteCircuitId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRouteCircuitName, ok = input.Parsed["expressRouteCircuitName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRouteCircuitName", input) + } + + return nil +} + +// ValidateExpressRouteCircuitID checks that 'input' can be parsed as a Express Route Circuit ID +func ValidateExpressRouteCircuitID(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 := ParseExpressRouteCircuitID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Express Route Circuit ID +func (id ExpressRouteCircuitId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRouteCircuits/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRouteCircuitName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Express Route Circuit ID +func (id ExpressRouteCircuitId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRouteCircuits", "expressRouteCircuits", "expressRouteCircuits"), + resourceids.UserSpecifiedSegment("expressRouteCircuitName", "expressRouteCircuitValue"), + } +} + +// String returns a human-readable description of this Express Route Circuit ID +func (id ExpressRouteCircuitId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Circuit Name: %q", id.ExpressRouteCircuitName), + } + return fmt.Sprintf("Express Route Circuit (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitpeerings/id_expressroutecircuit_test.go b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/id_expressroutecircuit_test.go new file mode 100644 index 00000000000..13448a74c27 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/id_expressroutecircuit_test.go @@ -0,0 +1,282 @@ +package expressroutecircuitpeerings + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ExpressRouteCircuitId{} + +func TestNewExpressRouteCircuitID(t *testing.T) { + id := NewExpressRouteCircuitID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRouteCircuitName != "expressRouteCircuitValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRouteCircuitName'", id.ExpressRouteCircuitName, "expressRouteCircuitValue") + } +} + +func TestFormatExpressRouteCircuitID(t *testing.T) { + actual := NewExpressRouteCircuitID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseExpressRouteCircuitID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRouteCircuitId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue", + Expected: &ExpressRouteCircuitId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCircuitName: "expressRouteCircuitValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRouteCircuitID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCircuitName != v.Expected.ExpressRouteCircuitName { + t.Fatalf("Expected %q but got %q for ExpressRouteCircuitName", v.Expected.ExpressRouteCircuitName, actual.ExpressRouteCircuitName) + } + + } +} + +func TestParseExpressRouteCircuitIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRouteCircuitId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue", + Expected: &ExpressRouteCircuitId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCircuitName: "expressRouteCircuitValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE", + Expected: &ExpressRouteCircuitId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRouteCircuitName: "eXpReSsRoUtEcIrCuItVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRouteCircuitIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCircuitName != v.Expected.ExpressRouteCircuitName { + t.Fatalf("Expected %q but got %q for ExpressRouteCircuitName", v.Expected.ExpressRouteCircuitName, actual.ExpressRouteCircuitName) + } + + } +} + +func TestSegmentsForExpressRouteCircuitId(t *testing.T) { + segments := ExpressRouteCircuitId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ExpressRouteCircuitId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitpeerings/method_createorupdate.go b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/method_createorupdate.go new file mode 100644 index 00000000000..a9056870582 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/method_createorupdate.go @@ -0,0 +1,76 @@ +package expressroutecircuitpeerings + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteCircuitPeering +} + +// CreateOrUpdate ... +func (c ExpressRouteCircuitPeeringsClient) CreateOrUpdate(ctx context.Context, id commonids.ExpressRouteCircuitPeeringId, input ExpressRouteCircuitPeering) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c ExpressRouteCircuitPeeringsClient) CreateOrUpdateThenPoll(ctx context.Context, id commonids.ExpressRouteCircuitPeeringId, input ExpressRouteCircuitPeering) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitpeerings/method_delete.go b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/method_delete.go new file mode 100644 index 00000000000..241c45fa414 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/method_delete.go @@ -0,0 +1,72 @@ +package expressroutecircuitpeerings + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c ExpressRouteCircuitPeeringsClient) Delete(ctx context.Context, id commonids.ExpressRouteCircuitPeeringId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c ExpressRouteCircuitPeeringsClient) DeleteThenPoll(ctx context.Context, id commonids.ExpressRouteCircuitPeeringId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitpeerings/method_get.go b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/method_get.go new file mode 100644 index 00000000000..0937d0e96a9 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/method_get.go @@ -0,0 +1,55 @@ +package expressroutecircuitpeerings + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteCircuitPeering +} + +// Get ... +func (c ExpressRouteCircuitPeeringsClient) Get(ctx context.Context, id commonids.ExpressRouteCircuitPeeringId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ExpressRouteCircuitPeering + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitpeerings/method_list.go b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/method_list.go new file mode 100644 index 00000000000..684b16dc8db --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/method_list.go @@ -0,0 +1,92 @@ +package expressroutecircuitpeerings + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ExpressRouteCircuitPeering +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []ExpressRouteCircuitPeering +} + +// List ... +func (c ExpressRouteCircuitPeeringsClient) List(ctx context.Context, id ExpressRouteCircuitId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/peerings", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ExpressRouteCircuitPeering `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c ExpressRouteCircuitPeeringsClient) ListComplete(ctx context.Context, id ExpressRouteCircuitId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, ExpressRouteCircuitPeeringOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ExpressRouteCircuitPeeringsClient) ListCompleteMatchingPredicate(ctx context.Context, id ExpressRouteCircuitId, predicate ExpressRouteCircuitPeeringOperationPredicate) (result ListCompleteResult, err error) { + items := make([]ExpressRouteCircuitPeering, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_expressroutecircuitconnection.go b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_expressroutecircuitconnection.go new file mode 100644 index 00000000000..f0bf62174ce --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_expressroutecircuitconnection.go @@ -0,0 +1,12 @@ +package expressroutecircuitpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ExpressRouteCircuitConnectionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_expressroutecircuitconnectionpropertiesformat.go b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_expressroutecircuitconnectionpropertiesformat.go new file mode 100644 index 00000000000..f89ab3b51e4 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_expressroutecircuitconnectionpropertiesformat.go @@ -0,0 +1,14 @@ +package expressroutecircuitpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitConnectionPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AuthorizationKey *string `json:"authorizationKey,omitempty"` + CircuitConnectionStatus *CircuitConnectionStatus `json:"circuitConnectionStatus,omitempty"` + ExpressRouteCircuitPeering *SubResource `json:"expressRouteCircuitPeering,omitempty"` + IPv6CircuitConnectionConfig *IPv6CircuitConnectionConfig `json:"ipv6CircuitConnectionConfig,omitempty"` + PeerExpressRouteCircuitPeering *SubResource `json:"peerExpressRouteCircuitPeering,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_expressroutecircuitpeering.go b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_expressroutecircuitpeering.go new file mode 100644 index 00000000000..5e47a7f0266 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_expressroutecircuitpeering.go @@ -0,0 +1,12 @@ +package expressroutecircuitpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitPeering struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ExpressRouteCircuitPeeringPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_expressroutecircuitpeeringconfig.go b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_expressroutecircuitpeeringconfig.go new file mode 100644 index 00000000000..67b575213fe --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_expressroutecircuitpeeringconfig.go @@ -0,0 +1,13 @@ +package expressroutecircuitpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitPeeringConfig struct { + AdvertisedCommunities *[]string `json:"advertisedCommunities,omitempty"` + AdvertisedPublicPrefixes *[]string `json:"advertisedPublicPrefixes,omitempty"` + AdvertisedPublicPrefixesState *ExpressRouteCircuitPeeringAdvertisedPublicPrefixState `json:"advertisedPublicPrefixesState,omitempty"` + CustomerASN *int64 `json:"customerASN,omitempty"` + LegacyMode *int64 `json:"legacyMode,omitempty"` + RoutingRegistryName *string `json:"routingRegistryName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_expressroutecircuitpeeringpropertiesformat.go b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_expressroutecircuitpeeringpropertiesformat.go new file mode 100644 index 00000000000..a54ef389df4 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_expressroutecircuitpeeringpropertiesformat.go @@ -0,0 +1,27 @@ +package expressroutecircuitpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitPeeringPropertiesFormat struct { + AzureASN *int64 `json:"azureASN,omitempty"` + Connections *[]ExpressRouteCircuitConnection `json:"connections,omitempty"` + ExpressRouteConnection *ExpressRouteConnectionId `json:"expressRouteConnection,omitempty"` + GatewayManagerEtag *string `json:"gatewayManagerEtag,omitempty"` + IPv6PeeringConfig *IPv6ExpressRouteCircuitPeeringConfig `json:"ipv6PeeringConfig,omitempty"` + LastModifiedBy *string `json:"lastModifiedBy,omitempty"` + MicrosoftPeeringConfig *ExpressRouteCircuitPeeringConfig `json:"microsoftPeeringConfig,omitempty"` + PeerASN *int64 `json:"peerASN,omitempty"` + PeeredConnections *[]PeerExpressRouteCircuitConnection `json:"peeredConnections,omitempty"` + PeeringType *ExpressRoutePeeringType `json:"peeringType,omitempty"` + PrimaryAzurePort *string `json:"primaryAzurePort,omitempty"` + PrimaryPeerAddressPrefix *string `json:"primaryPeerAddressPrefix,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RouteFilter *SubResource `json:"routeFilter,omitempty"` + SecondaryAzurePort *string `json:"secondaryAzurePort,omitempty"` + SecondaryPeerAddressPrefix *string `json:"secondaryPeerAddressPrefix,omitempty"` + SharedKey *string `json:"sharedKey,omitempty"` + State *ExpressRoutePeeringState `json:"state,omitempty"` + Stats *ExpressRouteCircuitStats `json:"stats,omitempty"` + VlanId *int64 `json:"vlanId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_expressroutecircuitstats.go b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_expressroutecircuitstats.go new file mode 100644 index 00000000000..8239e6299db --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_expressroutecircuitstats.go @@ -0,0 +1,11 @@ +package expressroutecircuitpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitStats struct { + PrimarybytesIn *int64 `json:"primarybytesIn,omitempty"` + PrimarybytesOut *int64 `json:"primarybytesOut,omitempty"` + SecondarybytesIn *int64 `json:"secondarybytesIn,omitempty"` + SecondarybytesOut *int64 `json:"secondarybytesOut,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_expressrouteconnectionid.go b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_expressrouteconnectionid.go new file mode 100644 index 00000000000..f06a355d7fa --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_expressrouteconnectionid.go @@ -0,0 +1,8 @@ +package expressroutecircuitpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteConnectionId struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_ipv6circuitconnectionconfig.go b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_ipv6circuitconnectionconfig.go new file mode 100644 index 00000000000..ae00db3c45c --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_ipv6circuitconnectionconfig.go @@ -0,0 +1,9 @@ +package expressroutecircuitpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPv6CircuitConnectionConfig struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + CircuitConnectionStatus *CircuitConnectionStatus `json:"circuitConnectionStatus,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_ipv6expressroutecircuitpeeringconfig.go b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_ipv6expressroutecircuitpeeringconfig.go new file mode 100644 index 00000000000..93ee020eec6 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_ipv6expressroutecircuitpeeringconfig.go @@ -0,0 +1,12 @@ +package expressroutecircuitpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPv6ExpressRouteCircuitPeeringConfig struct { + MicrosoftPeeringConfig *ExpressRouteCircuitPeeringConfig `json:"microsoftPeeringConfig,omitempty"` + PrimaryPeerAddressPrefix *string `json:"primaryPeerAddressPrefix,omitempty"` + RouteFilter *SubResource `json:"routeFilter,omitempty"` + SecondaryPeerAddressPrefix *string `json:"secondaryPeerAddressPrefix,omitempty"` + State *ExpressRouteCircuitPeeringState `json:"state,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_peerexpressroutecircuitconnection.go b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_peerexpressroutecircuitconnection.go new file mode 100644 index 00000000000..bc9218f9280 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_peerexpressroutecircuitconnection.go @@ -0,0 +1,12 @@ +package expressroutecircuitpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PeerExpressRouteCircuitConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PeerExpressRouteCircuitConnectionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_peerexpressroutecircuitconnectionpropertiesformat.go b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_peerexpressroutecircuitconnectionpropertiesformat.go new file mode 100644 index 00000000000..72eba9f327f --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_peerexpressroutecircuitconnectionpropertiesformat.go @@ -0,0 +1,14 @@ +package expressroutecircuitpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PeerExpressRouteCircuitConnectionPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AuthResourceGuid *string `json:"authResourceGuid,omitempty"` + CircuitConnectionStatus *CircuitConnectionStatus `json:"circuitConnectionStatus,omitempty"` + ConnectionName *string `json:"connectionName,omitempty"` + ExpressRouteCircuitPeering *SubResource `json:"expressRouteCircuitPeering,omitempty"` + PeerExpressRouteCircuitPeering *SubResource `json:"peerExpressRouteCircuitPeering,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_subresource.go b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_subresource.go new file mode 100644 index 00000000000..3143d87b0ee --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/model_subresource.go @@ -0,0 +1,8 @@ +package expressroutecircuitpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitpeerings/predicates.go b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/predicates.go new file mode 100644 index 00000000000..1e725c4e63a --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/predicates.go @@ -0,0 +1,32 @@ +package expressroutecircuitpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitPeeringOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p ExpressRouteCircuitPeeringOperationPredicate) Matches(input ExpressRouteCircuitPeering) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitpeerings/version.go b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/version.go new file mode 100644 index 00000000000..b6eca6dd69b --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitpeerings/version.go @@ -0,0 +1,12 @@ +package expressroutecircuitpeerings + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/expressroutecircuitpeerings/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitroutestable/README.md b/resource-manager/network/2024-01-01/expressroutecircuitroutestable/README.md new file mode 100644 index 00000000000..dd36f0e9b37 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitroutestable/README.md @@ -0,0 +1,37 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuitroutestable` Documentation + +The `expressroutecircuitroutestable` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuitroutestable" +``` + + +### Client Initialization + +```go +client := expressroutecircuitroutestable.NewExpressRouteCircuitRoutesTableClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ExpressRouteCircuitRoutesTableClient.ExpressRouteCircuitsListRoutesTable` + +```go +ctx := context.TODO() +id := expressroutecircuitroutestable.NewPeeringRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "peeringValue", "routeTableValue") + +// alternatively `client.ExpressRouteCircuitsListRoutesTable(ctx, id)` can be used to do batched pagination +items, err := client.ExpressRouteCircuitsListRoutesTableComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/expressroutecircuitroutestable/client.go b/resource-manager/network/2024-01-01/expressroutecircuitroutestable/client.go new file mode 100644 index 00000000000..925b7f29bae --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitroutestable/client.go @@ -0,0 +1,26 @@ +package expressroutecircuitroutestable + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitRoutesTableClient struct { + Client *resourcemanager.Client +} + +func NewExpressRouteCircuitRoutesTableClientWithBaseURI(sdkApi sdkEnv.Api) (*ExpressRouteCircuitRoutesTableClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "expressroutecircuitroutestable", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ExpressRouteCircuitRoutesTableClient: %+v", err) + } + + return &ExpressRouteCircuitRoutesTableClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitroutestable/id_peeringroutetable.go b/resource-manager/network/2024-01-01/expressroutecircuitroutestable/id_peeringroutetable.go new file mode 100644 index 00000000000..895e343bf35 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitroutestable/id_peeringroutetable.go @@ -0,0 +1,148 @@ +package expressroutecircuitroutestable + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&PeeringRouteTableId{}) +} + +var _ resourceids.ResourceId = &PeeringRouteTableId{} + +// PeeringRouteTableId is a struct representing the Resource ID for a Peering Route Table +type PeeringRouteTableId struct { + SubscriptionId string + ResourceGroupName string + ExpressRouteCircuitName string + PeeringName string + RouteTableName string +} + +// NewPeeringRouteTableID returns a new PeeringRouteTableId struct +func NewPeeringRouteTableID(subscriptionId string, resourceGroupName string, expressRouteCircuitName string, peeringName string, routeTableName string) PeeringRouteTableId { + return PeeringRouteTableId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRouteCircuitName: expressRouteCircuitName, + PeeringName: peeringName, + RouteTableName: routeTableName, + } +} + +// ParsePeeringRouteTableID parses 'input' into a PeeringRouteTableId +func ParsePeeringRouteTableID(input string) (*PeeringRouteTableId, error) { + parser := resourceids.NewParserFromResourceIdType(&PeeringRouteTableId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PeeringRouteTableId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParsePeeringRouteTableIDInsensitively parses 'input' case-insensitively into a PeeringRouteTableId +// note: this method should only be used for API response data and not user input +func ParsePeeringRouteTableIDInsensitively(input string) (*PeeringRouteTableId, error) { + parser := resourceids.NewParserFromResourceIdType(&PeeringRouteTableId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PeeringRouteTableId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *PeeringRouteTableId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRouteCircuitName, ok = input.Parsed["expressRouteCircuitName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRouteCircuitName", input) + } + + if id.PeeringName, ok = input.Parsed["peeringName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "peeringName", input) + } + + if id.RouteTableName, ok = input.Parsed["routeTableName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "routeTableName", input) + } + + return nil +} + +// ValidatePeeringRouteTableID checks that 'input' can be parsed as a Peering Route Table ID +func ValidatePeeringRouteTableID(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 := ParsePeeringRouteTableID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Peering Route Table ID +func (id PeeringRouteTableId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRouteCircuits/%s/peerings/%s/routeTables/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRouteCircuitName, id.PeeringName, id.RouteTableName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Peering Route Table ID +func (id PeeringRouteTableId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRouteCircuits", "expressRouteCircuits", "expressRouteCircuits"), + resourceids.UserSpecifiedSegment("expressRouteCircuitName", "expressRouteCircuitValue"), + resourceids.StaticSegment("staticPeerings", "peerings", "peerings"), + resourceids.UserSpecifiedSegment("peeringName", "peeringValue"), + resourceids.StaticSegment("staticRouteTables", "routeTables", "routeTables"), + resourceids.UserSpecifiedSegment("routeTableName", "routeTableValue"), + } +} + +// String returns a human-readable description of this Peering Route Table ID +func (id PeeringRouteTableId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Circuit Name: %q", id.ExpressRouteCircuitName), + fmt.Sprintf("Peering Name: %q", id.PeeringName), + fmt.Sprintf("Route Table Name: %q", id.RouteTableName), + } + return fmt.Sprintf("Peering Route Table (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitroutestable/id_peeringroutetable_test.go b/resource-manager/network/2024-01-01/expressroutecircuitroutestable/id_peeringroutetable_test.go new file mode 100644 index 00000000000..d631d27ad1b --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitroutestable/id_peeringroutetable_test.go @@ -0,0 +1,372 @@ +package expressroutecircuitroutestable + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &PeeringRouteTableId{} + +func TestNewPeeringRouteTableID(t *testing.T) { + id := NewPeeringRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "peeringValue", "routeTableValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRouteCircuitName != "expressRouteCircuitValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRouteCircuitName'", id.ExpressRouteCircuitName, "expressRouteCircuitValue") + } + + if id.PeeringName != "peeringValue" { + t.Fatalf("Expected %q but got %q for Segment 'PeeringName'", id.PeeringName, "peeringValue") + } + + if id.RouteTableName != "routeTableValue" { + t.Fatalf("Expected %q but got %q for Segment 'RouteTableName'", id.RouteTableName, "routeTableValue") + } +} + +func TestFormatPeeringRouteTableID(t *testing.T) { + actual := NewPeeringRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "peeringValue", "routeTableValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/routeTables/routeTableValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParsePeeringRouteTableID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PeeringRouteTableId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/routeTables", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/routeTables/routeTableValue", + Expected: &PeeringRouteTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCircuitName: "expressRouteCircuitValue", + PeeringName: "peeringValue", + RouteTableName: "routeTableValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/routeTables/routeTableValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePeeringRouteTableID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCircuitName != v.Expected.ExpressRouteCircuitName { + t.Fatalf("Expected %q but got %q for ExpressRouteCircuitName", v.Expected.ExpressRouteCircuitName, actual.ExpressRouteCircuitName) + } + + if actual.PeeringName != v.Expected.PeeringName { + t.Fatalf("Expected %q but got %q for PeeringName", v.Expected.PeeringName, actual.PeeringName) + } + + if actual.RouteTableName != v.Expected.RouteTableName { + t.Fatalf("Expected %q but got %q for RouteTableName", v.Expected.RouteTableName, actual.RouteTableName) + } + + } +} + +func TestParsePeeringRouteTableIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PeeringRouteTableId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS/pEeRiNgVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/routeTables", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS/pEeRiNgVaLuE/rOuTeTaBlEs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/routeTables/routeTableValue", + Expected: &PeeringRouteTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCircuitName: "expressRouteCircuitValue", + PeeringName: "peeringValue", + RouteTableName: "routeTableValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/routeTables/routeTableValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS/pEeRiNgVaLuE/rOuTeTaBlEs/rOuTeTaBlEvAlUe", + Expected: &PeeringRouteTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRouteCircuitName: "eXpReSsRoUtEcIrCuItVaLuE", + PeeringName: "pEeRiNgVaLuE", + RouteTableName: "rOuTeTaBlEvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS/pEeRiNgVaLuE/rOuTeTaBlEs/rOuTeTaBlEvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePeeringRouteTableIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCircuitName != v.Expected.ExpressRouteCircuitName { + t.Fatalf("Expected %q but got %q for ExpressRouteCircuitName", v.Expected.ExpressRouteCircuitName, actual.ExpressRouteCircuitName) + } + + if actual.PeeringName != v.Expected.PeeringName { + t.Fatalf("Expected %q but got %q for PeeringName", v.Expected.PeeringName, actual.PeeringName) + } + + if actual.RouteTableName != v.Expected.RouteTableName { + t.Fatalf("Expected %q but got %q for RouteTableName", v.Expected.RouteTableName, actual.RouteTableName) + } + + } +} + +func TestSegmentsForPeeringRouteTableId(t *testing.T) { + segments := PeeringRouteTableId{}.Segments() + if len(segments) == 0 { + t.Fatalf("PeeringRouteTableId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitroutestable/method_expressroutecircuitslistroutestable.go b/resource-manager/network/2024-01-01/expressroutecircuitroutestable/method_expressroutecircuitslistroutestable.go new file mode 100644 index 00000000000..0d55eeb8353 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitroutestable/method_expressroutecircuitslistroutestable.go @@ -0,0 +1,76 @@ +package expressroutecircuitroutestable + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitsListRoutesTableOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *[]ExpressRouteCircuitRoutesTable +} + +type ExpressRouteCircuitsListRoutesTableCompleteResult struct { + LatestHttpResponse *http.Response + Items []ExpressRouteCircuitRoutesTable +} + +// ExpressRouteCircuitsListRoutesTable ... +func (c ExpressRouteCircuitRoutesTableClient) ExpressRouteCircuitsListRoutesTable(ctx context.Context, id PeeringRouteTableId) (result ExpressRouteCircuitsListRoutesTableOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// ExpressRouteCircuitsListRoutesTableThenPoll performs ExpressRouteCircuitsListRoutesTable then polls until it's completed +func (c ExpressRouteCircuitRoutesTableClient) ExpressRouteCircuitsListRoutesTableThenPoll(ctx context.Context, id PeeringRouteTableId) error { + result, err := c.ExpressRouteCircuitsListRoutesTable(ctx, id) + if err != nil { + return fmt.Errorf("performing ExpressRouteCircuitsListRoutesTable: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after ExpressRouteCircuitsListRoutesTable: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitroutestable/model_expressroutecircuitroutestable.go b/resource-manager/network/2024-01-01/expressroutecircuitroutestable/model_expressroutecircuitroutestable.go new file mode 100644 index 00000000000..d70d9310d29 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitroutestable/model_expressroutecircuitroutestable.go @@ -0,0 +1,12 @@ +package expressroutecircuitroutestable + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitRoutesTable struct { + LocPrf *string `json:"locPrf,omitempty"` + Network *string `json:"network,omitempty"` + NextHop *string `json:"nextHop,omitempty"` + Path *string `json:"path,omitempty"` + Weight *int64 `json:"weight,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitroutestable/predicates.go b/resource-manager/network/2024-01-01/expressroutecircuitroutestable/predicates.go new file mode 100644 index 00000000000..81d29805310 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitroutestable/predicates.go @@ -0,0 +1,37 @@ +package expressroutecircuitroutestable + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitRoutesTableOperationPredicate struct { + LocPrf *string + Network *string + NextHop *string + Path *string + Weight *int64 +} + +func (p ExpressRouteCircuitRoutesTableOperationPredicate) Matches(input ExpressRouteCircuitRoutesTable) bool { + + if p.LocPrf != nil && (input.LocPrf == nil || *p.LocPrf != *input.LocPrf) { + return false + } + + if p.Network != nil && (input.Network == nil || *p.Network != *input.Network) { + return false + } + + if p.NextHop != nil && (input.NextHop == nil || *p.NextHop != *input.NextHop) { + return false + } + + if p.Path != nil && (input.Path == nil || *p.Path != *input.Path) { + return false + } + + if p.Weight != nil && (input.Weight == nil || *p.Weight != *input.Weight) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitroutestable/version.go b/resource-manager/network/2024-01-01/expressroutecircuitroutestable/version.go new file mode 100644 index 00000000000..90494bd9eb5 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitroutestable/version.go @@ -0,0 +1,12 @@ +package expressroutecircuitroutestable + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/expressroutecircuitroutestable/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/README.md b/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/README.md new file mode 100644 index 00000000000..0a69e6e2997 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/README.md @@ -0,0 +1,37 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary` Documentation + +The `expressroutecircuitroutestablesummary` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary" +``` + + +### Client Initialization + +```go +client := expressroutecircuitroutestablesummary.NewExpressRouteCircuitRoutesTableSummaryClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ExpressRouteCircuitRoutesTableSummaryClient.ExpressRouteCircuitsListRoutesTableSummary` + +```go +ctx := context.TODO() +id := expressroutecircuitroutestablesummary.NewRouteTablesSummaryID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "peeringValue", "routeTablesSummaryValue") + +// alternatively `client.ExpressRouteCircuitsListRoutesTableSummary(ctx, id)` can be used to do batched pagination +items, err := client.ExpressRouteCircuitsListRoutesTableSummaryComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/client.go b/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/client.go new file mode 100644 index 00000000000..5565926cb76 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/client.go @@ -0,0 +1,26 @@ +package expressroutecircuitroutestablesummary + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitRoutesTableSummaryClient struct { + Client *resourcemanager.Client +} + +func NewExpressRouteCircuitRoutesTableSummaryClientWithBaseURI(sdkApi sdkEnv.Api) (*ExpressRouteCircuitRoutesTableSummaryClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "expressroutecircuitroutestablesummary", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ExpressRouteCircuitRoutesTableSummaryClient: %+v", err) + } + + return &ExpressRouteCircuitRoutesTableSummaryClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/id_routetablessummary.go b/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/id_routetablessummary.go new file mode 100644 index 00000000000..16c5b0c301a --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/id_routetablessummary.go @@ -0,0 +1,148 @@ +package expressroutecircuitroutestablesummary + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&RouteTablesSummaryId{}) +} + +var _ resourceids.ResourceId = &RouteTablesSummaryId{} + +// RouteTablesSummaryId is a struct representing the Resource ID for a Route Tables Summary +type RouteTablesSummaryId struct { + SubscriptionId string + ResourceGroupName string + ExpressRouteCircuitName string + PeeringName string + RouteTablesSummaryName string +} + +// NewRouteTablesSummaryID returns a new RouteTablesSummaryId struct +func NewRouteTablesSummaryID(subscriptionId string, resourceGroupName string, expressRouteCircuitName string, peeringName string, routeTablesSummaryName string) RouteTablesSummaryId { + return RouteTablesSummaryId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRouteCircuitName: expressRouteCircuitName, + PeeringName: peeringName, + RouteTablesSummaryName: routeTablesSummaryName, + } +} + +// ParseRouteTablesSummaryID parses 'input' into a RouteTablesSummaryId +func ParseRouteTablesSummaryID(input string) (*RouteTablesSummaryId, error) { + parser := resourceids.NewParserFromResourceIdType(&RouteTablesSummaryId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RouteTablesSummaryId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseRouteTablesSummaryIDInsensitively parses 'input' case-insensitively into a RouteTablesSummaryId +// note: this method should only be used for API response data and not user input +func ParseRouteTablesSummaryIDInsensitively(input string) (*RouteTablesSummaryId, error) { + parser := resourceids.NewParserFromResourceIdType(&RouteTablesSummaryId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RouteTablesSummaryId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *RouteTablesSummaryId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRouteCircuitName, ok = input.Parsed["expressRouteCircuitName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRouteCircuitName", input) + } + + if id.PeeringName, ok = input.Parsed["peeringName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "peeringName", input) + } + + if id.RouteTablesSummaryName, ok = input.Parsed["routeTablesSummaryName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "routeTablesSummaryName", input) + } + + return nil +} + +// ValidateRouteTablesSummaryID checks that 'input' can be parsed as a Route Tables Summary ID +func ValidateRouteTablesSummaryID(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 := ParseRouteTablesSummaryID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Route Tables Summary ID +func (id RouteTablesSummaryId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRouteCircuits/%s/peerings/%s/routeTablesSummary/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRouteCircuitName, id.PeeringName, id.RouteTablesSummaryName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Route Tables Summary ID +func (id RouteTablesSummaryId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRouteCircuits", "expressRouteCircuits", "expressRouteCircuits"), + resourceids.UserSpecifiedSegment("expressRouteCircuitName", "expressRouteCircuitValue"), + resourceids.StaticSegment("staticPeerings", "peerings", "peerings"), + resourceids.UserSpecifiedSegment("peeringName", "peeringValue"), + resourceids.StaticSegment("staticRouteTablesSummary", "routeTablesSummary", "routeTablesSummary"), + resourceids.UserSpecifiedSegment("routeTablesSummaryName", "routeTablesSummaryValue"), + } +} + +// String returns a human-readable description of this Route Tables Summary ID +func (id RouteTablesSummaryId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Circuit Name: %q", id.ExpressRouteCircuitName), + fmt.Sprintf("Peering Name: %q", id.PeeringName), + fmt.Sprintf("Route Tables Summary Name: %q", id.RouteTablesSummaryName), + } + return fmt.Sprintf("Route Tables Summary (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/id_routetablessummary_test.go b/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/id_routetablessummary_test.go new file mode 100644 index 00000000000..a011758594c --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/id_routetablessummary_test.go @@ -0,0 +1,372 @@ +package expressroutecircuitroutestablesummary + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &RouteTablesSummaryId{} + +func TestNewRouteTablesSummaryID(t *testing.T) { + id := NewRouteTablesSummaryID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "peeringValue", "routeTablesSummaryValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRouteCircuitName != "expressRouteCircuitValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRouteCircuitName'", id.ExpressRouteCircuitName, "expressRouteCircuitValue") + } + + if id.PeeringName != "peeringValue" { + t.Fatalf("Expected %q but got %q for Segment 'PeeringName'", id.PeeringName, "peeringValue") + } + + if id.RouteTablesSummaryName != "routeTablesSummaryValue" { + t.Fatalf("Expected %q but got %q for Segment 'RouteTablesSummaryName'", id.RouteTablesSummaryName, "routeTablesSummaryValue") + } +} + +func TestFormatRouteTablesSummaryID(t *testing.T) { + actual := NewRouteTablesSummaryID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "peeringValue", "routeTablesSummaryValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/routeTablesSummary/routeTablesSummaryValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseRouteTablesSummaryID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RouteTablesSummaryId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/routeTablesSummary", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/routeTablesSummary/routeTablesSummaryValue", + Expected: &RouteTablesSummaryId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCircuitName: "expressRouteCircuitValue", + PeeringName: "peeringValue", + RouteTablesSummaryName: "routeTablesSummaryValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/routeTablesSummary/routeTablesSummaryValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRouteTablesSummaryID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCircuitName != v.Expected.ExpressRouteCircuitName { + t.Fatalf("Expected %q but got %q for ExpressRouteCircuitName", v.Expected.ExpressRouteCircuitName, actual.ExpressRouteCircuitName) + } + + if actual.PeeringName != v.Expected.PeeringName { + t.Fatalf("Expected %q but got %q for PeeringName", v.Expected.PeeringName, actual.PeeringName) + } + + if actual.RouteTablesSummaryName != v.Expected.RouteTablesSummaryName { + t.Fatalf("Expected %q but got %q for RouteTablesSummaryName", v.Expected.RouteTablesSummaryName, actual.RouteTablesSummaryName) + } + + } +} + +func TestParseRouteTablesSummaryIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RouteTablesSummaryId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS/pEeRiNgVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/routeTablesSummary", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS/pEeRiNgVaLuE/rOuTeTaBlEsSuMmArY", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/routeTablesSummary/routeTablesSummaryValue", + Expected: &RouteTablesSummaryId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCircuitName: "expressRouteCircuitValue", + PeeringName: "peeringValue", + RouteTablesSummaryName: "routeTablesSummaryValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/routeTablesSummary/routeTablesSummaryValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS/pEeRiNgVaLuE/rOuTeTaBlEsSuMmArY/rOuTeTaBlEsSuMmArYvAlUe", + Expected: &RouteTablesSummaryId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRouteCircuitName: "eXpReSsRoUtEcIrCuItVaLuE", + PeeringName: "pEeRiNgVaLuE", + RouteTablesSummaryName: "rOuTeTaBlEsSuMmArYvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS/pEeRiNgVaLuE/rOuTeTaBlEsSuMmArY/rOuTeTaBlEsSuMmArYvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRouteTablesSummaryIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCircuitName != v.Expected.ExpressRouteCircuitName { + t.Fatalf("Expected %q but got %q for ExpressRouteCircuitName", v.Expected.ExpressRouteCircuitName, actual.ExpressRouteCircuitName) + } + + if actual.PeeringName != v.Expected.PeeringName { + t.Fatalf("Expected %q but got %q for PeeringName", v.Expected.PeeringName, actual.PeeringName) + } + + if actual.RouteTablesSummaryName != v.Expected.RouteTablesSummaryName { + t.Fatalf("Expected %q but got %q for RouteTablesSummaryName", v.Expected.RouteTablesSummaryName, actual.RouteTablesSummaryName) + } + + } +} + +func TestSegmentsForRouteTablesSummaryId(t *testing.T) { + segments := RouteTablesSummaryId{}.Segments() + if len(segments) == 0 { + t.Fatalf("RouteTablesSummaryId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/method_expressroutecircuitslistroutestablesummary.go b/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/method_expressroutecircuitslistroutestablesummary.go new file mode 100644 index 00000000000..200e1b6b1e8 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/method_expressroutecircuitslistroutestablesummary.go @@ -0,0 +1,76 @@ +package expressroutecircuitroutestablesummary + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitsListRoutesTableSummaryOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *[]ExpressRouteCircuitRoutesTableSummary +} + +type ExpressRouteCircuitsListRoutesTableSummaryCompleteResult struct { + LatestHttpResponse *http.Response + Items []ExpressRouteCircuitRoutesTableSummary +} + +// ExpressRouteCircuitsListRoutesTableSummary ... +func (c ExpressRouteCircuitRoutesTableSummaryClient) ExpressRouteCircuitsListRoutesTableSummary(ctx context.Context, id RouteTablesSummaryId) (result ExpressRouteCircuitsListRoutesTableSummaryOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// ExpressRouteCircuitsListRoutesTableSummaryThenPoll performs ExpressRouteCircuitsListRoutesTableSummary then polls until it's completed +func (c ExpressRouteCircuitRoutesTableSummaryClient) ExpressRouteCircuitsListRoutesTableSummaryThenPoll(ctx context.Context, id RouteTablesSummaryId) error { + result, err := c.ExpressRouteCircuitsListRoutesTableSummary(ctx, id) + if err != nil { + return fmt.Errorf("performing ExpressRouteCircuitsListRoutesTableSummary: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after ExpressRouteCircuitsListRoutesTableSummary: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/model_expressroutecircuitroutestablesummary.go b/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/model_expressroutecircuitroutestablesummary.go new file mode 100644 index 00000000000..926fc450623 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/model_expressroutecircuitroutestablesummary.go @@ -0,0 +1,12 @@ +package expressroutecircuitroutestablesummary + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitRoutesTableSummary struct { + As *int64 `json:"as,omitempty"` + Neighbor *string `json:"neighbor,omitempty"` + StatePfxRcd *string `json:"statePfxRcd,omitempty"` + UpDown *string `json:"upDown,omitempty"` + V *int64 `json:"v,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/predicates.go b/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/predicates.go new file mode 100644 index 00000000000..1d9991e4b00 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/predicates.go @@ -0,0 +1,37 @@ +package expressroutecircuitroutestablesummary + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitRoutesTableSummaryOperationPredicate struct { + As *int64 + Neighbor *string + StatePfxRcd *string + UpDown *string + V *int64 +} + +func (p ExpressRouteCircuitRoutesTableSummaryOperationPredicate) Matches(input ExpressRouteCircuitRoutesTableSummary) bool { + + if p.As != nil && (input.As == nil || *p.As != *input.As) { + return false + } + + if p.Neighbor != nil && (input.Neighbor == nil || *p.Neighbor != *input.Neighbor) { + return false + } + + if p.StatePfxRcd != nil && (input.StatePfxRcd == nil || *p.StatePfxRcd != *input.StatePfxRcd) { + return false + } + + if p.UpDown != nil && (input.UpDown == nil || *p.UpDown != *input.UpDown) { + return false + } + + if p.V != nil && (input.V == nil || *p.V != *input.V) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/version.go b/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/version.go new file mode 100644 index 00000000000..e6872b3bb34 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitroutestablesummary/version.go @@ -0,0 +1,12 @@ +package expressroutecircuitroutestablesummary + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/expressroutecircuitroutestablesummary/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/README.md b/resource-manager/network/2024-01-01/expressroutecircuits/README.md new file mode 100644 index 00000000000..bf0471973b2 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/README.md @@ -0,0 +1,121 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuits` Documentation + +The `expressroutecircuits` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuits" +``` + + +### Client Initialization + +```go +client := expressroutecircuits.NewExpressRouteCircuitsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ExpressRouteCircuitsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := expressroutecircuits.NewExpressRouteCircuitID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue") + +payload := expressroutecircuits.ExpressRouteCircuit{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `ExpressRouteCircuitsClient.Delete` + +```go +ctx := context.TODO() +id := expressroutecircuits.NewExpressRouteCircuitID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `ExpressRouteCircuitsClient.Get` + +```go +ctx := context.TODO() +id := expressroutecircuits.NewExpressRouteCircuitID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ExpressRouteCircuitsClient.List` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `ExpressRouteCircuitsClient.ListAll` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.ListAll(ctx, id)` can be used to do batched pagination +items, err := client.ListAllComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `ExpressRouteCircuitsClient.UpdateTags` + +```go +ctx := context.TODO() +id := expressroutecircuits.NewExpressRouteCircuitID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue") + +payload := expressroutecircuits.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/client.go b/resource-manager/network/2024-01-01/expressroutecircuits/client.go new file mode 100644 index 00000000000..cd12ab163e6 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/client.go @@ -0,0 +1,26 @@ +package expressroutecircuits + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitsClient struct { + Client *resourcemanager.Client +} + +func NewExpressRouteCircuitsClientWithBaseURI(sdkApi sdkEnv.Api) (*ExpressRouteCircuitsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "expressroutecircuits", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ExpressRouteCircuitsClient: %+v", err) + } + + return &ExpressRouteCircuitsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/constants.go b/resource-manager/network/2024-01-01/expressroutecircuits/constants.go new file mode 100644 index 00000000000..017902fa091 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/constants.go @@ -0,0 +1,450 @@ +package expressroutecircuits + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AuthorizationUseStatus string + +const ( + AuthorizationUseStatusAvailable AuthorizationUseStatus = "Available" + AuthorizationUseStatusInUse AuthorizationUseStatus = "InUse" +) + +func PossibleValuesForAuthorizationUseStatus() []string { + return []string{ + string(AuthorizationUseStatusAvailable), + string(AuthorizationUseStatusInUse), + } +} + +func (s *AuthorizationUseStatus) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAuthorizationUseStatus(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAuthorizationUseStatus(input string) (*AuthorizationUseStatus, error) { + vals := map[string]AuthorizationUseStatus{ + "available": AuthorizationUseStatusAvailable, + "inuse": AuthorizationUseStatusInUse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := AuthorizationUseStatus(input) + return &out, nil +} + +type CircuitConnectionStatus string + +const ( + CircuitConnectionStatusConnected CircuitConnectionStatus = "Connected" + CircuitConnectionStatusConnecting CircuitConnectionStatus = "Connecting" + CircuitConnectionStatusDisconnected CircuitConnectionStatus = "Disconnected" +) + +func PossibleValuesForCircuitConnectionStatus() []string { + return []string{ + string(CircuitConnectionStatusConnected), + string(CircuitConnectionStatusConnecting), + string(CircuitConnectionStatusDisconnected), + } +} + +func (s *CircuitConnectionStatus) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseCircuitConnectionStatus(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseCircuitConnectionStatus(input string) (*CircuitConnectionStatus, error) { + vals := map[string]CircuitConnectionStatus{ + "connected": CircuitConnectionStatusConnected, + "connecting": CircuitConnectionStatusConnecting, + "disconnected": CircuitConnectionStatusDisconnected, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := CircuitConnectionStatus(input) + return &out, nil +} + +type ExpressRouteCircuitPeeringAdvertisedPublicPrefixState string + +const ( + ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfigured ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "Configured" + ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfiguring ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "Configuring" + ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateNotConfigured ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "NotConfigured" + ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateValidationNeeded ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "ValidationNeeded" +) + +func PossibleValuesForExpressRouteCircuitPeeringAdvertisedPublicPrefixState() []string { + return []string{ + string(ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfigured), + string(ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfiguring), + string(ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateNotConfigured), + string(ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateValidationNeeded), + } +} + +func (s *ExpressRouteCircuitPeeringAdvertisedPublicPrefixState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRouteCircuitPeeringAdvertisedPublicPrefixState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRouteCircuitPeeringAdvertisedPublicPrefixState(input string) (*ExpressRouteCircuitPeeringAdvertisedPublicPrefixState, error) { + vals := map[string]ExpressRouteCircuitPeeringAdvertisedPublicPrefixState{ + "configured": ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfigured, + "configuring": ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfiguring, + "notconfigured": ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateNotConfigured, + "validationneeded": ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateValidationNeeded, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRouteCircuitPeeringAdvertisedPublicPrefixState(input) + return &out, nil +} + +type ExpressRouteCircuitPeeringState string + +const ( + ExpressRouteCircuitPeeringStateDisabled ExpressRouteCircuitPeeringState = "Disabled" + ExpressRouteCircuitPeeringStateEnabled ExpressRouteCircuitPeeringState = "Enabled" +) + +func PossibleValuesForExpressRouteCircuitPeeringState() []string { + return []string{ + string(ExpressRouteCircuitPeeringStateDisabled), + string(ExpressRouteCircuitPeeringStateEnabled), + } +} + +func (s *ExpressRouteCircuitPeeringState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRouteCircuitPeeringState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRouteCircuitPeeringState(input string) (*ExpressRouteCircuitPeeringState, error) { + vals := map[string]ExpressRouteCircuitPeeringState{ + "disabled": ExpressRouteCircuitPeeringStateDisabled, + "enabled": ExpressRouteCircuitPeeringStateEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRouteCircuitPeeringState(input) + return &out, nil +} + +type ExpressRouteCircuitSkuFamily string + +const ( + ExpressRouteCircuitSkuFamilyMeteredData ExpressRouteCircuitSkuFamily = "MeteredData" + ExpressRouteCircuitSkuFamilyUnlimitedData ExpressRouteCircuitSkuFamily = "UnlimitedData" +) + +func PossibleValuesForExpressRouteCircuitSkuFamily() []string { + return []string{ + string(ExpressRouteCircuitSkuFamilyMeteredData), + string(ExpressRouteCircuitSkuFamilyUnlimitedData), + } +} + +func (s *ExpressRouteCircuitSkuFamily) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRouteCircuitSkuFamily(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRouteCircuitSkuFamily(input string) (*ExpressRouteCircuitSkuFamily, error) { + vals := map[string]ExpressRouteCircuitSkuFamily{ + "metereddata": ExpressRouteCircuitSkuFamilyMeteredData, + "unlimiteddata": ExpressRouteCircuitSkuFamilyUnlimitedData, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRouteCircuitSkuFamily(input) + return &out, nil +} + +type ExpressRouteCircuitSkuTier string + +const ( + ExpressRouteCircuitSkuTierBasic ExpressRouteCircuitSkuTier = "Basic" + ExpressRouteCircuitSkuTierLocal ExpressRouteCircuitSkuTier = "Local" + ExpressRouteCircuitSkuTierPremium ExpressRouteCircuitSkuTier = "Premium" + ExpressRouteCircuitSkuTierStandard ExpressRouteCircuitSkuTier = "Standard" +) + +func PossibleValuesForExpressRouteCircuitSkuTier() []string { + return []string{ + string(ExpressRouteCircuitSkuTierBasic), + string(ExpressRouteCircuitSkuTierLocal), + string(ExpressRouteCircuitSkuTierPremium), + string(ExpressRouteCircuitSkuTierStandard), + } +} + +func (s *ExpressRouteCircuitSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRouteCircuitSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRouteCircuitSkuTier(input string) (*ExpressRouteCircuitSkuTier, error) { + vals := map[string]ExpressRouteCircuitSkuTier{ + "basic": ExpressRouteCircuitSkuTierBasic, + "local": ExpressRouteCircuitSkuTierLocal, + "premium": ExpressRouteCircuitSkuTierPremium, + "standard": ExpressRouteCircuitSkuTierStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRouteCircuitSkuTier(input) + return &out, nil +} + +type ExpressRoutePeeringState string + +const ( + ExpressRoutePeeringStateDisabled ExpressRoutePeeringState = "Disabled" + ExpressRoutePeeringStateEnabled ExpressRoutePeeringState = "Enabled" +) + +func PossibleValuesForExpressRoutePeeringState() []string { + return []string{ + string(ExpressRoutePeeringStateDisabled), + string(ExpressRoutePeeringStateEnabled), + } +} + +func (s *ExpressRoutePeeringState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRoutePeeringState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRoutePeeringState(input string) (*ExpressRoutePeeringState, error) { + vals := map[string]ExpressRoutePeeringState{ + "disabled": ExpressRoutePeeringStateDisabled, + "enabled": ExpressRoutePeeringStateEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRoutePeeringState(input) + return &out, nil +} + +type ExpressRoutePeeringType string + +const ( + ExpressRoutePeeringTypeAzurePrivatePeering ExpressRoutePeeringType = "AzurePrivatePeering" + ExpressRoutePeeringTypeAzurePublicPeering ExpressRoutePeeringType = "AzurePublicPeering" + ExpressRoutePeeringTypeMicrosoftPeering ExpressRoutePeeringType = "MicrosoftPeering" +) + +func PossibleValuesForExpressRoutePeeringType() []string { + return []string{ + string(ExpressRoutePeeringTypeAzurePrivatePeering), + string(ExpressRoutePeeringTypeAzurePublicPeering), + string(ExpressRoutePeeringTypeMicrosoftPeering), + } +} + +func (s *ExpressRoutePeeringType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRoutePeeringType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRoutePeeringType(input string) (*ExpressRoutePeeringType, error) { + vals := map[string]ExpressRoutePeeringType{ + "azureprivatepeering": ExpressRoutePeeringTypeAzurePrivatePeering, + "azurepublicpeering": ExpressRoutePeeringTypeAzurePublicPeering, + "microsoftpeering": ExpressRoutePeeringTypeMicrosoftPeering, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRoutePeeringType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type ServiceProviderProvisioningState string + +const ( + ServiceProviderProvisioningStateDeprovisioning ServiceProviderProvisioningState = "Deprovisioning" + ServiceProviderProvisioningStateNotProvisioned ServiceProviderProvisioningState = "NotProvisioned" + ServiceProviderProvisioningStateProvisioned ServiceProviderProvisioningState = "Provisioned" + ServiceProviderProvisioningStateProvisioning ServiceProviderProvisioningState = "Provisioning" +) + +func PossibleValuesForServiceProviderProvisioningState() []string { + return []string{ + string(ServiceProviderProvisioningStateDeprovisioning), + string(ServiceProviderProvisioningStateNotProvisioned), + string(ServiceProviderProvisioningStateProvisioned), + string(ServiceProviderProvisioningStateProvisioning), + } +} + +func (s *ServiceProviderProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseServiceProviderProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseServiceProviderProvisioningState(input string) (*ServiceProviderProvisioningState, error) { + vals := map[string]ServiceProviderProvisioningState{ + "deprovisioning": ServiceProviderProvisioningStateDeprovisioning, + "notprovisioned": ServiceProviderProvisioningStateNotProvisioned, + "provisioned": ServiceProviderProvisioningStateProvisioned, + "provisioning": ServiceProviderProvisioningStateProvisioning, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ServiceProviderProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/id_expressroutecircuit.go b/resource-manager/network/2024-01-01/expressroutecircuits/id_expressroutecircuit.go new file mode 100644 index 00000000000..d48e8e429e7 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/id_expressroutecircuit.go @@ -0,0 +1,130 @@ +package expressroutecircuits + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ExpressRouteCircuitId{}) +} + +var _ resourceids.ResourceId = &ExpressRouteCircuitId{} + +// ExpressRouteCircuitId is a struct representing the Resource ID for a Express Route Circuit +type ExpressRouteCircuitId struct { + SubscriptionId string + ResourceGroupName string + ExpressRouteCircuitName string +} + +// NewExpressRouteCircuitID returns a new ExpressRouteCircuitId struct +func NewExpressRouteCircuitID(subscriptionId string, resourceGroupName string, expressRouteCircuitName string) ExpressRouteCircuitId { + return ExpressRouteCircuitId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRouteCircuitName: expressRouteCircuitName, + } +} + +// ParseExpressRouteCircuitID parses 'input' into a ExpressRouteCircuitId +func ParseExpressRouteCircuitID(input string) (*ExpressRouteCircuitId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRouteCircuitId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRouteCircuitId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseExpressRouteCircuitIDInsensitively parses 'input' case-insensitively into a ExpressRouteCircuitId +// note: this method should only be used for API response data and not user input +func ParseExpressRouteCircuitIDInsensitively(input string) (*ExpressRouteCircuitId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRouteCircuitId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRouteCircuitId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ExpressRouteCircuitId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRouteCircuitName, ok = input.Parsed["expressRouteCircuitName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRouteCircuitName", input) + } + + return nil +} + +// ValidateExpressRouteCircuitID checks that 'input' can be parsed as a Express Route Circuit ID +func ValidateExpressRouteCircuitID(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 := ParseExpressRouteCircuitID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Express Route Circuit ID +func (id ExpressRouteCircuitId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRouteCircuits/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRouteCircuitName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Express Route Circuit ID +func (id ExpressRouteCircuitId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRouteCircuits", "expressRouteCircuits", "expressRouteCircuits"), + resourceids.UserSpecifiedSegment("expressRouteCircuitName", "expressRouteCircuitValue"), + } +} + +// String returns a human-readable description of this Express Route Circuit ID +func (id ExpressRouteCircuitId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Circuit Name: %q", id.ExpressRouteCircuitName), + } + return fmt.Sprintf("Express Route Circuit (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/id_expressroutecircuit_test.go b/resource-manager/network/2024-01-01/expressroutecircuits/id_expressroutecircuit_test.go new file mode 100644 index 00000000000..f5006a32349 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/id_expressroutecircuit_test.go @@ -0,0 +1,282 @@ +package expressroutecircuits + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ExpressRouteCircuitId{} + +func TestNewExpressRouteCircuitID(t *testing.T) { + id := NewExpressRouteCircuitID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRouteCircuitName != "expressRouteCircuitValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRouteCircuitName'", id.ExpressRouteCircuitName, "expressRouteCircuitValue") + } +} + +func TestFormatExpressRouteCircuitID(t *testing.T) { + actual := NewExpressRouteCircuitID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseExpressRouteCircuitID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRouteCircuitId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue", + Expected: &ExpressRouteCircuitId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCircuitName: "expressRouteCircuitValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRouteCircuitID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCircuitName != v.Expected.ExpressRouteCircuitName { + t.Fatalf("Expected %q but got %q for ExpressRouteCircuitName", v.Expected.ExpressRouteCircuitName, actual.ExpressRouteCircuitName) + } + + } +} + +func TestParseExpressRouteCircuitIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRouteCircuitId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue", + Expected: &ExpressRouteCircuitId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCircuitName: "expressRouteCircuitValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE", + Expected: &ExpressRouteCircuitId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRouteCircuitName: "eXpReSsRoUtEcIrCuItVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRouteCircuitIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCircuitName != v.Expected.ExpressRouteCircuitName { + t.Fatalf("Expected %q but got %q for ExpressRouteCircuitName", v.Expected.ExpressRouteCircuitName, actual.ExpressRouteCircuitName) + } + + } +} + +func TestSegmentsForExpressRouteCircuitId(t *testing.T) { + segments := ExpressRouteCircuitId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ExpressRouteCircuitId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/method_createorupdate.go b/resource-manager/network/2024-01-01/expressroutecircuits/method_createorupdate.go new file mode 100644 index 00000000000..399156eb14e --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/method_createorupdate.go @@ -0,0 +1,75 @@ +package expressroutecircuits + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteCircuit +} + +// CreateOrUpdate ... +func (c ExpressRouteCircuitsClient) CreateOrUpdate(ctx context.Context, id ExpressRouteCircuitId, input ExpressRouteCircuit) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c ExpressRouteCircuitsClient) CreateOrUpdateThenPoll(ctx context.Context, id ExpressRouteCircuitId, input ExpressRouteCircuit) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/method_delete.go b/resource-manager/network/2024-01-01/expressroutecircuits/method_delete.go new file mode 100644 index 00000000000..91f8aa53bed --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/method_delete.go @@ -0,0 +1,71 @@ +package expressroutecircuits + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c ExpressRouteCircuitsClient) Delete(ctx context.Context, id ExpressRouteCircuitId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c ExpressRouteCircuitsClient) DeleteThenPoll(ctx context.Context, id ExpressRouteCircuitId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/method_get.go b/resource-manager/network/2024-01-01/expressroutecircuits/method_get.go new file mode 100644 index 00000000000..2047441e60b --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/method_get.go @@ -0,0 +1,54 @@ +package expressroutecircuits + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteCircuit +} + +// Get ... +func (c ExpressRouteCircuitsClient) Get(ctx context.Context, id ExpressRouteCircuitId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ExpressRouteCircuit + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/method_list.go b/resource-manager/network/2024-01-01/expressroutecircuits/method_list.go new file mode 100644 index 00000000000..7b016449fdc --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/method_list.go @@ -0,0 +1,93 @@ +package expressroutecircuits + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ExpressRouteCircuit +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []ExpressRouteCircuit +} + +// List ... +func (c ExpressRouteCircuitsClient) List(ctx context.Context, id commonids.ResourceGroupId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/expressRouteCircuits", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ExpressRouteCircuit `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c ExpressRouteCircuitsClient) ListComplete(ctx context.Context, id commonids.ResourceGroupId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, ExpressRouteCircuitOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ExpressRouteCircuitsClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate ExpressRouteCircuitOperationPredicate) (result ListCompleteResult, err error) { + items := make([]ExpressRouteCircuit, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/method_listall.go b/resource-manager/network/2024-01-01/expressroutecircuits/method_listall.go new file mode 100644 index 00000000000..0f6630e21c9 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/method_listall.go @@ -0,0 +1,93 @@ +package expressroutecircuits + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAllOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ExpressRouteCircuit +} + +type ListAllCompleteResult struct { + LatestHttpResponse *http.Response + Items []ExpressRouteCircuit +} + +// ListAll ... +func (c ExpressRouteCircuitsClient) ListAll(ctx context.Context, id commonids.SubscriptionId) (result ListAllOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/expressRouteCircuits", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ExpressRouteCircuit `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListAllComplete retrieves all the results into a single object +func (c ExpressRouteCircuitsClient) ListAllComplete(ctx context.Context, id commonids.SubscriptionId) (ListAllCompleteResult, error) { + return c.ListAllCompleteMatchingPredicate(ctx, id, ExpressRouteCircuitOperationPredicate{}) +} + +// ListAllCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ExpressRouteCircuitsClient) ListAllCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate ExpressRouteCircuitOperationPredicate) (result ListAllCompleteResult, err error) { + items := make([]ExpressRouteCircuit, 0) + + resp, err := c.ListAll(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListAllCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/method_updatetags.go b/resource-manager/network/2024-01-01/expressroutecircuits/method_updatetags.go new file mode 100644 index 00000000000..8426eb683b2 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/method_updatetags.go @@ -0,0 +1,58 @@ +package expressroutecircuits + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteCircuit +} + +// UpdateTags ... +func (c ExpressRouteCircuitsClient) UpdateTags(ctx context.Context, id ExpressRouteCircuitId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ExpressRouteCircuit + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/model_authorizationpropertiesformat.go b/resource-manager/network/2024-01-01/expressroutecircuits/model_authorizationpropertiesformat.go new file mode 100644 index 00000000000..65f50c0d659 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/model_authorizationpropertiesformat.go @@ -0,0 +1,11 @@ +package expressroutecircuits + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AuthorizationPropertiesFormat struct { + AuthorizationKey *string `json:"authorizationKey,omitempty"` + AuthorizationUseStatus *AuthorizationUseStatus `json:"authorizationUseStatus,omitempty"` + ConnectionResourceUri *string `json:"connectionResourceUri,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuit.go b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuit.go new file mode 100644 index 00000000000..a74493fcec8 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuit.go @@ -0,0 +1,15 @@ +package expressroutecircuits + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuit struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ExpressRouteCircuitPropertiesFormat `json:"properties,omitempty"` + Sku *ExpressRouteCircuitSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitauthorization.go b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitauthorization.go new file mode 100644 index 00000000000..2942811a91c --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitauthorization.go @@ -0,0 +1,12 @@ +package expressroutecircuits + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitAuthorization struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *AuthorizationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitconnection.go b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitconnection.go new file mode 100644 index 00000000000..901ef503724 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitconnection.go @@ -0,0 +1,12 @@ +package expressroutecircuits + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ExpressRouteCircuitConnectionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitconnectionpropertiesformat.go b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitconnectionpropertiesformat.go new file mode 100644 index 00000000000..897f772964a --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitconnectionpropertiesformat.go @@ -0,0 +1,14 @@ +package expressroutecircuits + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitConnectionPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AuthorizationKey *string `json:"authorizationKey,omitempty"` + CircuitConnectionStatus *CircuitConnectionStatus `json:"circuitConnectionStatus,omitempty"` + ExpressRouteCircuitPeering *SubResource `json:"expressRouteCircuitPeering,omitempty"` + IPv6CircuitConnectionConfig *IPv6CircuitConnectionConfig `json:"ipv6CircuitConnectionConfig,omitempty"` + PeerExpressRouteCircuitPeering *SubResource `json:"peerExpressRouteCircuitPeering,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitpeering.go b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitpeering.go new file mode 100644 index 00000000000..d7431190482 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitpeering.go @@ -0,0 +1,12 @@ +package expressroutecircuits + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitPeering struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ExpressRouteCircuitPeeringPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitpeeringconfig.go b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitpeeringconfig.go new file mode 100644 index 00000000000..836b1d5e963 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitpeeringconfig.go @@ -0,0 +1,13 @@ +package expressroutecircuits + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitPeeringConfig struct { + AdvertisedCommunities *[]string `json:"advertisedCommunities,omitempty"` + AdvertisedPublicPrefixes *[]string `json:"advertisedPublicPrefixes,omitempty"` + AdvertisedPublicPrefixesState *ExpressRouteCircuitPeeringAdvertisedPublicPrefixState `json:"advertisedPublicPrefixesState,omitempty"` + CustomerASN *int64 `json:"customerASN,omitempty"` + LegacyMode *int64 `json:"legacyMode,omitempty"` + RoutingRegistryName *string `json:"routingRegistryName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitpeeringpropertiesformat.go b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitpeeringpropertiesformat.go new file mode 100644 index 00000000000..87a88e75638 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitpeeringpropertiesformat.go @@ -0,0 +1,27 @@ +package expressroutecircuits + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitPeeringPropertiesFormat struct { + AzureASN *int64 `json:"azureASN,omitempty"` + Connections *[]ExpressRouteCircuitConnection `json:"connections,omitempty"` + ExpressRouteConnection *ExpressRouteConnectionId `json:"expressRouteConnection,omitempty"` + GatewayManagerEtag *string `json:"gatewayManagerEtag,omitempty"` + IPv6PeeringConfig *IPv6ExpressRouteCircuitPeeringConfig `json:"ipv6PeeringConfig,omitempty"` + LastModifiedBy *string `json:"lastModifiedBy,omitempty"` + MicrosoftPeeringConfig *ExpressRouteCircuitPeeringConfig `json:"microsoftPeeringConfig,omitempty"` + PeerASN *int64 `json:"peerASN,omitempty"` + PeeredConnections *[]PeerExpressRouteCircuitConnection `json:"peeredConnections,omitempty"` + PeeringType *ExpressRoutePeeringType `json:"peeringType,omitempty"` + PrimaryAzurePort *string `json:"primaryAzurePort,omitempty"` + PrimaryPeerAddressPrefix *string `json:"primaryPeerAddressPrefix,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RouteFilter *SubResource `json:"routeFilter,omitempty"` + SecondaryAzurePort *string `json:"secondaryAzurePort,omitempty"` + SecondaryPeerAddressPrefix *string `json:"secondaryPeerAddressPrefix,omitempty"` + SharedKey *string `json:"sharedKey,omitempty"` + State *ExpressRoutePeeringState `json:"state,omitempty"` + Stats *ExpressRouteCircuitStats `json:"stats,omitempty"` + VlanId *int64 `json:"vlanId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitpropertiesformat.go b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitpropertiesformat.go new file mode 100644 index 00000000000..250eb3de724 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitpropertiesformat.go @@ -0,0 +1,24 @@ +package expressroutecircuits + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitPropertiesFormat struct { + AllowClassicOperations *bool `json:"allowClassicOperations,omitempty"` + AuthorizationKey *string `json:"authorizationKey,omitempty"` + AuthorizationStatus *string `json:"authorizationStatus,omitempty"` + Authorizations *[]ExpressRouteCircuitAuthorization `json:"authorizations,omitempty"` + BandwidthInGbps *float64 `json:"bandwidthInGbps,omitempty"` + CircuitProvisioningState *string `json:"circuitProvisioningState,omitempty"` + EnableDirectPortRateLimit *bool `json:"enableDirectPortRateLimit,omitempty"` + ExpressRoutePort *SubResource `json:"expressRoutePort,omitempty"` + GatewayManagerEtag *string `json:"gatewayManagerEtag,omitempty"` + GlobalReachEnabled *bool `json:"globalReachEnabled,omitempty"` + Peerings *[]ExpressRouteCircuitPeering `json:"peerings,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ServiceKey *string `json:"serviceKey,omitempty"` + ServiceProviderNotes *string `json:"serviceProviderNotes,omitempty"` + ServiceProviderProperties *ExpressRouteCircuitServiceProviderProperties `json:"serviceProviderProperties,omitempty"` + ServiceProviderProvisioningState *ServiceProviderProvisioningState `json:"serviceProviderProvisioningState,omitempty"` + Stag *int64 `json:"stag,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitserviceproviderproperties.go b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitserviceproviderproperties.go new file mode 100644 index 00000000000..432cdaf5a4a --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitserviceproviderproperties.go @@ -0,0 +1,10 @@ +package expressroutecircuits + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitServiceProviderProperties struct { + BandwidthInMbps *int64 `json:"bandwidthInMbps,omitempty"` + PeeringLocation *string `json:"peeringLocation,omitempty"` + ServiceProviderName *string `json:"serviceProviderName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitsku.go b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitsku.go new file mode 100644 index 00000000000..186629b51a6 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitsku.go @@ -0,0 +1,10 @@ +package expressroutecircuits + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitSku struct { + Family *ExpressRouteCircuitSkuFamily `json:"family,omitempty"` + Name *string `json:"name,omitempty"` + Tier *ExpressRouteCircuitSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitstats.go b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitstats.go new file mode 100644 index 00000000000..ca8cd2c52bc --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressroutecircuitstats.go @@ -0,0 +1,11 @@ +package expressroutecircuits + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitStats struct { + PrimarybytesIn *int64 `json:"primarybytesIn,omitempty"` + PrimarybytesOut *int64 `json:"primarybytesOut,omitempty"` + SecondarybytesIn *int64 `json:"secondarybytesIn,omitempty"` + SecondarybytesOut *int64 `json:"secondarybytesOut,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/model_expressrouteconnectionid.go b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressrouteconnectionid.go new file mode 100644 index 00000000000..70b79aa3ec7 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/model_expressrouteconnectionid.go @@ -0,0 +1,8 @@ +package expressroutecircuits + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteConnectionId struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/model_ipv6circuitconnectionconfig.go b/resource-manager/network/2024-01-01/expressroutecircuits/model_ipv6circuitconnectionconfig.go new file mode 100644 index 00000000000..49a42177273 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/model_ipv6circuitconnectionconfig.go @@ -0,0 +1,9 @@ +package expressroutecircuits + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPv6CircuitConnectionConfig struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + CircuitConnectionStatus *CircuitConnectionStatus `json:"circuitConnectionStatus,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/model_ipv6expressroutecircuitpeeringconfig.go b/resource-manager/network/2024-01-01/expressroutecircuits/model_ipv6expressroutecircuitpeeringconfig.go new file mode 100644 index 00000000000..02e4a94b316 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/model_ipv6expressroutecircuitpeeringconfig.go @@ -0,0 +1,12 @@ +package expressroutecircuits + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPv6ExpressRouteCircuitPeeringConfig struct { + MicrosoftPeeringConfig *ExpressRouteCircuitPeeringConfig `json:"microsoftPeeringConfig,omitempty"` + PrimaryPeerAddressPrefix *string `json:"primaryPeerAddressPrefix,omitempty"` + RouteFilter *SubResource `json:"routeFilter,omitempty"` + SecondaryPeerAddressPrefix *string `json:"secondaryPeerAddressPrefix,omitempty"` + State *ExpressRouteCircuitPeeringState `json:"state,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/model_peerexpressroutecircuitconnection.go b/resource-manager/network/2024-01-01/expressroutecircuits/model_peerexpressroutecircuitconnection.go new file mode 100644 index 00000000000..e52a6b6f8c3 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/model_peerexpressroutecircuitconnection.go @@ -0,0 +1,12 @@ +package expressroutecircuits + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PeerExpressRouteCircuitConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PeerExpressRouteCircuitConnectionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/model_peerexpressroutecircuitconnectionpropertiesformat.go b/resource-manager/network/2024-01-01/expressroutecircuits/model_peerexpressroutecircuitconnectionpropertiesformat.go new file mode 100644 index 00000000000..804baee319a --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/model_peerexpressroutecircuitconnectionpropertiesformat.go @@ -0,0 +1,14 @@ +package expressroutecircuits + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PeerExpressRouteCircuitConnectionPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AuthResourceGuid *string `json:"authResourceGuid,omitempty"` + CircuitConnectionStatus *CircuitConnectionStatus `json:"circuitConnectionStatus,omitempty"` + ConnectionName *string `json:"connectionName,omitempty"` + ExpressRouteCircuitPeering *SubResource `json:"expressRouteCircuitPeering,omitempty"` + PeerExpressRouteCircuitPeering *SubResource `json:"peerExpressRouteCircuitPeering,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/model_subresource.go b/resource-manager/network/2024-01-01/expressroutecircuits/model_subresource.go new file mode 100644 index 00000000000..daf852a98a9 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/model_subresource.go @@ -0,0 +1,8 @@ +package expressroutecircuits + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/model_tagsobject.go b/resource-manager/network/2024-01-01/expressroutecircuits/model_tagsobject.go new file mode 100644 index 00000000000..585eaaba376 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/model_tagsobject.go @@ -0,0 +1,8 @@ +package expressroutecircuits + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/predicates.go b/resource-manager/network/2024-01-01/expressroutecircuits/predicates.go new file mode 100644 index 00000000000..3fdbc040dbf --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/predicates.go @@ -0,0 +1,37 @@ +package expressroutecircuits + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p ExpressRouteCircuitOperationPredicate) Matches(input ExpressRouteCircuit) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuits/version.go b/resource-manager/network/2024-01-01/expressroutecircuits/version.go new file mode 100644 index 00000000000..5a8c32488a0 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuits/version.go @@ -0,0 +1,12 @@ +package expressroutecircuits + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/expressroutecircuits/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitstats/README.md b/resource-manager/network/2024-01-01/expressroutecircuitstats/README.md new file mode 100644 index 00000000000..4b6c133697d --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitstats/README.md @@ -0,0 +1,53 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuitstats` Documentation + +The `expressroutecircuitstats` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecircuitstats" +``` + + +### Client Initialization + +```go +client := expressroutecircuitstats.NewExpressRouteCircuitStatsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ExpressRouteCircuitStatsClient.ExpressRouteCircuitsGetPeeringStats` + +```go +ctx := context.TODO() +id := commonids.NewExpressRouteCircuitPeeringID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "peeringValue") + +read, err := client.ExpressRouteCircuitsGetPeeringStats(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ExpressRouteCircuitStatsClient.ExpressRouteCircuitsGetStats` + +```go +ctx := context.TODO() +id := expressroutecircuitstats.NewExpressRouteCircuitID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue") + +read, err := client.ExpressRouteCircuitsGetStats(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/expressroutecircuitstats/client.go b/resource-manager/network/2024-01-01/expressroutecircuitstats/client.go new file mode 100644 index 00000000000..43a397e1cc1 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitstats/client.go @@ -0,0 +1,26 @@ +package expressroutecircuitstats + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitStatsClient struct { + Client *resourcemanager.Client +} + +func NewExpressRouteCircuitStatsClientWithBaseURI(sdkApi sdkEnv.Api) (*ExpressRouteCircuitStatsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "expressroutecircuitstats", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ExpressRouteCircuitStatsClient: %+v", err) + } + + return &ExpressRouteCircuitStatsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitstats/id_expressroutecircuit.go b/resource-manager/network/2024-01-01/expressroutecircuitstats/id_expressroutecircuit.go new file mode 100644 index 00000000000..cf235dfe96f --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitstats/id_expressroutecircuit.go @@ -0,0 +1,130 @@ +package expressroutecircuitstats + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ExpressRouteCircuitId{}) +} + +var _ resourceids.ResourceId = &ExpressRouteCircuitId{} + +// ExpressRouteCircuitId is a struct representing the Resource ID for a Express Route Circuit +type ExpressRouteCircuitId struct { + SubscriptionId string + ResourceGroupName string + ExpressRouteCircuitName string +} + +// NewExpressRouteCircuitID returns a new ExpressRouteCircuitId struct +func NewExpressRouteCircuitID(subscriptionId string, resourceGroupName string, expressRouteCircuitName string) ExpressRouteCircuitId { + return ExpressRouteCircuitId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRouteCircuitName: expressRouteCircuitName, + } +} + +// ParseExpressRouteCircuitID parses 'input' into a ExpressRouteCircuitId +func ParseExpressRouteCircuitID(input string) (*ExpressRouteCircuitId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRouteCircuitId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRouteCircuitId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseExpressRouteCircuitIDInsensitively parses 'input' case-insensitively into a ExpressRouteCircuitId +// note: this method should only be used for API response data and not user input +func ParseExpressRouteCircuitIDInsensitively(input string) (*ExpressRouteCircuitId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRouteCircuitId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRouteCircuitId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ExpressRouteCircuitId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRouteCircuitName, ok = input.Parsed["expressRouteCircuitName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRouteCircuitName", input) + } + + return nil +} + +// ValidateExpressRouteCircuitID checks that 'input' can be parsed as a Express Route Circuit ID +func ValidateExpressRouteCircuitID(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 := ParseExpressRouteCircuitID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Express Route Circuit ID +func (id ExpressRouteCircuitId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRouteCircuits/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRouteCircuitName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Express Route Circuit ID +func (id ExpressRouteCircuitId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRouteCircuits", "expressRouteCircuits", "expressRouteCircuits"), + resourceids.UserSpecifiedSegment("expressRouteCircuitName", "expressRouteCircuitValue"), + } +} + +// String returns a human-readable description of this Express Route Circuit ID +func (id ExpressRouteCircuitId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Circuit Name: %q", id.ExpressRouteCircuitName), + } + return fmt.Sprintf("Express Route Circuit (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitstats/id_expressroutecircuit_test.go b/resource-manager/network/2024-01-01/expressroutecircuitstats/id_expressroutecircuit_test.go new file mode 100644 index 00000000000..735aeca4792 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitstats/id_expressroutecircuit_test.go @@ -0,0 +1,282 @@ +package expressroutecircuitstats + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ExpressRouteCircuitId{} + +func TestNewExpressRouteCircuitID(t *testing.T) { + id := NewExpressRouteCircuitID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRouteCircuitName != "expressRouteCircuitValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRouteCircuitName'", id.ExpressRouteCircuitName, "expressRouteCircuitValue") + } +} + +func TestFormatExpressRouteCircuitID(t *testing.T) { + actual := NewExpressRouteCircuitID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseExpressRouteCircuitID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRouteCircuitId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue", + Expected: &ExpressRouteCircuitId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCircuitName: "expressRouteCircuitValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRouteCircuitID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCircuitName != v.Expected.ExpressRouteCircuitName { + t.Fatalf("Expected %q but got %q for ExpressRouteCircuitName", v.Expected.ExpressRouteCircuitName, actual.ExpressRouteCircuitName) + } + + } +} + +func TestParseExpressRouteCircuitIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRouteCircuitId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue", + Expected: &ExpressRouteCircuitId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCircuitName: "expressRouteCircuitValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE", + Expected: &ExpressRouteCircuitId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRouteCircuitName: "eXpReSsRoUtEcIrCuItVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRouteCircuitIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCircuitName != v.Expected.ExpressRouteCircuitName { + t.Fatalf("Expected %q but got %q for ExpressRouteCircuitName", v.Expected.ExpressRouteCircuitName, actual.ExpressRouteCircuitName) + } + + } +} + +func TestSegmentsForExpressRouteCircuitId(t *testing.T) { + segments := ExpressRouteCircuitId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ExpressRouteCircuitId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitstats/method_expressroutecircuitsgetpeeringstats.go b/resource-manager/network/2024-01-01/expressroutecircuitstats/method_expressroutecircuitsgetpeeringstats.go new file mode 100644 index 00000000000..5473e8458e6 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitstats/method_expressroutecircuitsgetpeeringstats.go @@ -0,0 +1,56 @@ +package expressroutecircuitstats + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitsGetPeeringStatsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteCircuitStats +} + +// ExpressRouteCircuitsGetPeeringStats ... +func (c ExpressRouteCircuitStatsClient) ExpressRouteCircuitsGetPeeringStats(ctx context.Context, id commonids.ExpressRouteCircuitPeeringId) (result ExpressRouteCircuitsGetPeeringStatsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/stats", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ExpressRouteCircuitStats + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitstats/method_expressroutecircuitsgetstats.go b/resource-manager/network/2024-01-01/expressroutecircuitstats/method_expressroutecircuitsgetstats.go new file mode 100644 index 00000000000..4bd3c09b58e --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitstats/method_expressroutecircuitsgetstats.go @@ -0,0 +1,55 @@ +package expressroutecircuitstats + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitsGetStatsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteCircuitStats +} + +// ExpressRouteCircuitsGetStats ... +func (c ExpressRouteCircuitStatsClient) ExpressRouteCircuitsGetStats(ctx context.Context, id ExpressRouteCircuitId) (result ExpressRouteCircuitsGetStatsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/stats", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ExpressRouteCircuitStats + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitstats/model_expressroutecircuitstats.go b/resource-manager/network/2024-01-01/expressroutecircuitstats/model_expressroutecircuitstats.go new file mode 100644 index 00000000000..f93c0daeba8 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitstats/model_expressroutecircuitstats.go @@ -0,0 +1,11 @@ +package expressroutecircuitstats + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitStats struct { + PrimarybytesIn *int64 `json:"primarybytesIn,omitempty"` + PrimarybytesOut *int64 `json:"primarybytesOut,omitempty"` + SecondarybytesIn *int64 `json:"secondarybytesIn,omitempty"` + SecondarybytesOut *int64 `json:"secondarybytesOut,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecircuitstats/version.go b/resource-manager/network/2024-01-01/expressroutecircuitstats/version.go new file mode 100644 index 00000000000..b543abd1a07 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecircuitstats/version.go @@ -0,0 +1,12 @@ +package expressroutecircuitstats + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/expressroutecircuitstats/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/expressrouteconnections/README.md b/resource-manager/network/2024-01-01/expressrouteconnections/README.md new file mode 100644 index 00000000000..35b2b4c9187 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteconnections/README.md @@ -0,0 +1,81 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressrouteconnections` Documentation + +The `expressrouteconnections` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressrouteconnections" +``` + + +### Client Initialization + +```go +client := expressrouteconnections.NewExpressRouteConnectionsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ExpressRouteConnectionsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := expressrouteconnections.NewExpressRouteConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteGatewayValue", "expressRouteConnectionValue") + +payload := expressrouteconnections.ExpressRouteConnection{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `ExpressRouteConnectionsClient.Delete` + +```go +ctx := context.TODO() +id := expressrouteconnections.NewExpressRouteConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteGatewayValue", "expressRouteConnectionValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `ExpressRouteConnectionsClient.Get` + +```go +ctx := context.TODO() +id := expressrouteconnections.NewExpressRouteConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteGatewayValue", "expressRouteConnectionValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ExpressRouteConnectionsClient.List` + +```go +ctx := context.TODO() +id := expressrouteconnections.NewExpressRouteGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteGatewayValue") + +read, err := client.List(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/expressrouteconnections/client.go b/resource-manager/network/2024-01-01/expressrouteconnections/client.go new file mode 100644 index 00000000000..59b056f90da --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteconnections/client.go @@ -0,0 +1,26 @@ +package expressrouteconnections + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteConnectionsClient struct { + Client *resourcemanager.Client +} + +func NewExpressRouteConnectionsClientWithBaseURI(sdkApi sdkEnv.Api) (*ExpressRouteConnectionsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "expressrouteconnections", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ExpressRouteConnectionsClient: %+v", err) + } + + return &ExpressRouteConnectionsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/expressrouteconnections/constants.go b/resource-manager/network/2024-01-01/expressrouteconnections/constants.go new file mode 100644 index 00000000000..571bcb03c1e --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteconnections/constants.go @@ -0,0 +1,98 @@ +package expressrouteconnections + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type VnetLocalRouteOverrideCriteria string + +const ( + VnetLocalRouteOverrideCriteriaContains VnetLocalRouteOverrideCriteria = "Contains" + VnetLocalRouteOverrideCriteriaEqual VnetLocalRouteOverrideCriteria = "Equal" +) + +func PossibleValuesForVnetLocalRouteOverrideCriteria() []string { + return []string{ + string(VnetLocalRouteOverrideCriteriaContains), + string(VnetLocalRouteOverrideCriteriaEqual), + } +} + +func (s *VnetLocalRouteOverrideCriteria) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVnetLocalRouteOverrideCriteria(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVnetLocalRouteOverrideCriteria(input string) (*VnetLocalRouteOverrideCriteria, error) { + vals := map[string]VnetLocalRouteOverrideCriteria{ + "contains": VnetLocalRouteOverrideCriteriaContains, + "equal": VnetLocalRouteOverrideCriteriaEqual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VnetLocalRouteOverrideCriteria(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/expressrouteconnections/id_expressrouteconnection.go b/resource-manager/network/2024-01-01/expressrouteconnections/id_expressrouteconnection.go new file mode 100644 index 00000000000..7bba12f409b --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteconnections/id_expressrouteconnection.go @@ -0,0 +1,139 @@ +package expressrouteconnections + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ExpressRouteConnectionId{}) +} + +var _ resourceids.ResourceId = &ExpressRouteConnectionId{} + +// ExpressRouteConnectionId is a struct representing the Resource ID for a Express Route Connection +type ExpressRouteConnectionId struct { + SubscriptionId string + ResourceGroupName string + ExpressRouteGatewayName string + ExpressRouteConnectionName string +} + +// NewExpressRouteConnectionID returns a new ExpressRouteConnectionId struct +func NewExpressRouteConnectionID(subscriptionId string, resourceGroupName string, expressRouteGatewayName string, expressRouteConnectionName string) ExpressRouteConnectionId { + return ExpressRouteConnectionId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRouteGatewayName: expressRouteGatewayName, + ExpressRouteConnectionName: expressRouteConnectionName, + } +} + +// ParseExpressRouteConnectionID parses 'input' into a ExpressRouteConnectionId +func ParseExpressRouteConnectionID(input string) (*ExpressRouteConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRouteConnectionId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRouteConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseExpressRouteConnectionIDInsensitively parses 'input' case-insensitively into a ExpressRouteConnectionId +// note: this method should only be used for API response data and not user input +func ParseExpressRouteConnectionIDInsensitively(input string) (*ExpressRouteConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRouteConnectionId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRouteConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ExpressRouteConnectionId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRouteGatewayName, ok = input.Parsed["expressRouteGatewayName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRouteGatewayName", input) + } + + if id.ExpressRouteConnectionName, ok = input.Parsed["expressRouteConnectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRouteConnectionName", input) + } + + return nil +} + +// ValidateExpressRouteConnectionID checks that 'input' can be parsed as a Express Route Connection ID +func ValidateExpressRouteConnectionID(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 := ParseExpressRouteConnectionID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Express Route Connection ID +func (id ExpressRouteConnectionId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRouteGateways/%s/expressRouteConnections/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRouteGatewayName, id.ExpressRouteConnectionName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Express Route Connection ID +func (id ExpressRouteConnectionId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRouteGateways", "expressRouteGateways", "expressRouteGateways"), + resourceids.UserSpecifiedSegment("expressRouteGatewayName", "expressRouteGatewayValue"), + resourceids.StaticSegment("staticExpressRouteConnections", "expressRouteConnections", "expressRouteConnections"), + resourceids.UserSpecifiedSegment("expressRouteConnectionName", "expressRouteConnectionValue"), + } +} + +// String returns a human-readable description of this Express Route Connection ID +func (id ExpressRouteConnectionId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Gateway Name: %q", id.ExpressRouteGatewayName), + fmt.Sprintf("Express Route Connection Name: %q", id.ExpressRouteConnectionName), + } + return fmt.Sprintf("Express Route Connection (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressrouteconnections/id_expressrouteconnection_test.go b/resource-manager/network/2024-01-01/expressrouteconnections/id_expressrouteconnection_test.go new file mode 100644 index 00000000000..1cf5c6183dc --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteconnections/id_expressrouteconnection_test.go @@ -0,0 +1,327 @@ +package expressrouteconnections + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ExpressRouteConnectionId{} + +func TestNewExpressRouteConnectionID(t *testing.T) { + id := NewExpressRouteConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteGatewayValue", "expressRouteConnectionValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRouteGatewayName != "expressRouteGatewayValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRouteGatewayName'", id.ExpressRouteGatewayName, "expressRouteGatewayValue") + } + + if id.ExpressRouteConnectionName != "expressRouteConnectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRouteConnectionName'", id.ExpressRouteConnectionName, "expressRouteConnectionValue") + } +} + +func TestFormatExpressRouteConnectionID(t *testing.T) { + actual := NewExpressRouteConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteGatewayValue", "expressRouteConnectionValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways/expressRouteGatewayValue/expressRouteConnections/expressRouteConnectionValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseExpressRouteConnectionID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRouteConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways/expressRouteGatewayValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways/expressRouteGatewayValue/expressRouteConnections", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways/expressRouteGatewayValue/expressRouteConnections/expressRouteConnectionValue", + Expected: &ExpressRouteConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteGatewayName: "expressRouteGatewayValue", + ExpressRouteConnectionName: "expressRouteConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways/expressRouteGatewayValue/expressRouteConnections/expressRouteConnectionValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRouteConnectionID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteGatewayName != v.Expected.ExpressRouteGatewayName { + t.Fatalf("Expected %q but got %q for ExpressRouteGatewayName", v.Expected.ExpressRouteGatewayName, actual.ExpressRouteGatewayName) + } + + if actual.ExpressRouteConnectionName != v.Expected.ExpressRouteConnectionName { + t.Fatalf("Expected %q but got %q for ExpressRouteConnectionName", v.Expected.ExpressRouteConnectionName, actual.ExpressRouteConnectionName) + } + + } +} + +func TestParseExpressRouteConnectionIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRouteConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEgAtEwAyS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways/expressRouteGatewayValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEgAtEwAyS/eXpReSsRoUtEgAtEwAyVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways/expressRouteGatewayValue/expressRouteConnections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEgAtEwAyS/eXpReSsRoUtEgAtEwAyVaLuE/eXpReSsRoUtEcOnNeCtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways/expressRouteGatewayValue/expressRouteConnections/expressRouteConnectionValue", + Expected: &ExpressRouteConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteGatewayName: "expressRouteGatewayValue", + ExpressRouteConnectionName: "expressRouteConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways/expressRouteGatewayValue/expressRouteConnections/expressRouteConnectionValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEgAtEwAyS/eXpReSsRoUtEgAtEwAyVaLuE/eXpReSsRoUtEcOnNeCtIoNs/eXpReSsRoUtEcOnNeCtIoNvAlUe", + Expected: &ExpressRouteConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRouteGatewayName: "eXpReSsRoUtEgAtEwAyVaLuE", + ExpressRouteConnectionName: "eXpReSsRoUtEcOnNeCtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEgAtEwAyS/eXpReSsRoUtEgAtEwAyVaLuE/eXpReSsRoUtEcOnNeCtIoNs/eXpReSsRoUtEcOnNeCtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRouteConnectionIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteGatewayName != v.Expected.ExpressRouteGatewayName { + t.Fatalf("Expected %q but got %q for ExpressRouteGatewayName", v.Expected.ExpressRouteGatewayName, actual.ExpressRouteGatewayName) + } + + if actual.ExpressRouteConnectionName != v.Expected.ExpressRouteConnectionName { + t.Fatalf("Expected %q but got %q for ExpressRouteConnectionName", v.Expected.ExpressRouteConnectionName, actual.ExpressRouteConnectionName) + } + + } +} + +func TestSegmentsForExpressRouteConnectionId(t *testing.T) { + segments := ExpressRouteConnectionId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ExpressRouteConnectionId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressrouteconnections/id_expressroutegateway.go b/resource-manager/network/2024-01-01/expressrouteconnections/id_expressroutegateway.go new file mode 100644 index 00000000000..6df37b9a7d8 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteconnections/id_expressroutegateway.go @@ -0,0 +1,130 @@ +package expressrouteconnections + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ExpressRouteGatewayId{}) +} + +var _ resourceids.ResourceId = &ExpressRouteGatewayId{} + +// ExpressRouteGatewayId is a struct representing the Resource ID for a Express Route Gateway +type ExpressRouteGatewayId struct { + SubscriptionId string + ResourceGroupName string + ExpressRouteGatewayName string +} + +// NewExpressRouteGatewayID returns a new ExpressRouteGatewayId struct +func NewExpressRouteGatewayID(subscriptionId string, resourceGroupName string, expressRouteGatewayName string) ExpressRouteGatewayId { + return ExpressRouteGatewayId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRouteGatewayName: expressRouteGatewayName, + } +} + +// ParseExpressRouteGatewayID parses 'input' into a ExpressRouteGatewayId +func ParseExpressRouteGatewayID(input string) (*ExpressRouteGatewayId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRouteGatewayId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRouteGatewayId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseExpressRouteGatewayIDInsensitively parses 'input' case-insensitively into a ExpressRouteGatewayId +// note: this method should only be used for API response data and not user input +func ParseExpressRouteGatewayIDInsensitively(input string) (*ExpressRouteGatewayId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRouteGatewayId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRouteGatewayId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ExpressRouteGatewayId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRouteGatewayName, ok = input.Parsed["expressRouteGatewayName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRouteGatewayName", input) + } + + return nil +} + +// ValidateExpressRouteGatewayID checks that 'input' can be parsed as a Express Route Gateway ID +func ValidateExpressRouteGatewayID(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 := ParseExpressRouteGatewayID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Express Route Gateway ID +func (id ExpressRouteGatewayId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRouteGateways/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRouteGatewayName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Express Route Gateway ID +func (id ExpressRouteGatewayId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRouteGateways", "expressRouteGateways", "expressRouteGateways"), + resourceids.UserSpecifiedSegment("expressRouteGatewayName", "expressRouteGatewayValue"), + } +} + +// String returns a human-readable description of this Express Route Gateway ID +func (id ExpressRouteGatewayId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Gateway Name: %q", id.ExpressRouteGatewayName), + } + return fmt.Sprintf("Express Route Gateway (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressrouteconnections/id_expressroutegateway_test.go b/resource-manager/network/2024-01-01/expressrouteconnections/id_expressroutegateway_test.go new file mode 100644 index 00000000000..2ba620612ce --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteconnections/id_expressroutegateway_test.go @@ -0,0 +1,282 @@ +package expressrouteconnections + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ExpressRouteGatewayId{} + +func TestNewExpressRouteGatewayID(t *testing.T) { + id := NewExpressRouteGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteGatewayValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRouteGatewayName != "expressRouteGatewayValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRouteGatewayName'", id.ExpressRouteGatewayName, "expressRouteGatewayValue") + } +} + +func TestFormatExpressRouteGatewayID(t *testing.T) { + actual := NewExpressRouteGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteGatewayValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways/expressRouteGatewayValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseExpressRouteGatewayID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRouteGatewayId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways/expressRouteGatewayValue", + Expected: &ExpressRouteGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteGatewayName: "expressRouteGatewayValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways/expressRouteGatewayValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRouteGatewayID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteGatewayName != v.Expected.ExpressRouteGatewayName { + t.Fatalf("Expected %q but got %q for ExpressRouteGatewayName", v.Expected.ExpressRouteGatewayName, actual.ExpressRouteGatewayName) + } + + } +} + +func TestParseExpressRouteGatewayIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRouteGatewayId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEgAtEwAyS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways/expressRouteGatewayValue", + Expected: &ExpressRouteGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteGatewayName: "expressRouteGatewayValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways/expressRouteGatewayValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEgAtEwAyS/eXpReSsRoUtEgAtEwAyVaLuE", + Expected: &ExpressRouteGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRouteGatewayName: "eXpReSsRoUtEgAtEwAyVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEgAtEwAyS/eXpReSsRoUtEgAtEwAyVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRouteGatewayIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteGatewayName != v.Expected.ExpressRouteGatewayName { + t.Fatalf("Expected %q but got %q for ExpressRouteGatewayName", v.Expected.ExpressRouteGatewayName, actual.ExpressRouteGatewayName) + } + + } +} + +func TestSegmentsForExpressRouteGatewayId(t *testing.T) { + segments := ExpressRouteGatewayId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ExpressRouteGatewayId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressrouteconnections/method_createorupdate.go b/resource-manager/network/2024-01-01/expressrouteconnections/method_createorupdate.go new file mode 100644 index 00000000000..37e7c0ceddb --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteconnections/method_createorupdate.go @@ -0,0 +1,75 @@ +package expressrouteconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteConnection +} + +// CreateOrUpdate ... +func (c ExpressRouteConnectionsClient) CreateOrUpdate(ctx context.Context, id ExpressRouteConnectionId, input ExpressRouteConnection) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c ExpressRouteConnectionsClient) CreateOrUpdateThenPoll(ctx context.Context, id ExpressRouteConnectionId, input ExpressRouteConnection) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressrouteconnections/method_delete.go b/resource-manager/network/2024-01-01/expressrouteconnections/method_delete.go new file mode 100644 index 00000000000..8f3816bde32 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteconnections/method_delete.go @@ -0,0 +1,71 @@ +package expressrouteconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c ExpressRouteConnectionsClient) Delete(ctx context.Context, id ExpressRouteConnectionId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c ExpressRouteConnectionsClient) DeleteThenPoll(ctx context.Context, id ExpressRouteConnectionId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressrouteconnections/method_get.go b/resource-manager/network/2024-01-01/expressrouteconnections/method_get.go new file mode 100644 index 00000000000..ae0992fa45d --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteconnections/method_get.go @@ -0,0 +1,54 @@ +package expressrouteconnections + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteConnection +} + +// Get ... +func (c ExpressRouteConnectionsClient) Get(ctx context.Context, id ExpressRouteConnectionId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ExpressRouteConnection + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/expressrouteconnections/method_list.go b/resource-manager/network/2024-01-01/expressrouteconnections/method_list.go new file mode 100644 index 00000000000..e9090e1dd56 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteconnections/method_list.go @@ -0,0 +1,55 @@ +package expressrouteconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteConnectionList +} + +// List ... +func (c ExpressRouteConnectionsClient) List(ctx context.Context, id ExpressRouteGatewayId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/expressRouteConnections", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ExpressRouteConnectionList + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/expressrouteconnections/model_expressroutecircuitpeeringid.go b/resource-manager/network/2024-01-01/expressrouteconnections/model_expressroutecircuitpeeringid.go new file mode 100644 index 00000000000..3a30ff411e8 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteconnections/model_expressroutecircuitpeeringid.go @@ -0,0 +1,8 @@ +package expressrouteconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitPeeringId struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteconnections/model_expressrouteconnection.go b/resource-manager/network/2024-01-01/expressrouteconnections/model_expressrouteconnection.go new file mode 100644 index 00000000000..1e31fa6c860 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteconnections/model_expressrouteconnection.go @@ -0,0 +1,10 @@ +package expressrouteconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteConnection struct { + Id *string `json:"id,omitempty"` + Name string `json:"name"` + Properties *ExpressRouteConnectionProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteconnections/model_expressrouteconnectionlist.go b/resource-manager/network/2024-01-01/expressrouteconnections/model_expressrouteconnectionlist.go new file mode 100644 index 00000000000..a16565b3cd5 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteconnections/model_expressrouteconnectionlist.go @@ -0,0 +1,8 @@ +package expressrouteconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteConnectionList struct { + Value *[]ExpressRouteConnection `json:"value,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteconnections/model_expressrouteconnectionproperties.go b/resource-manager/network/2024-01-01/expressrouteconnections/model_expressrouteconnectionproperties.go new file mode 100644 index 00000000000..2e9dddfbc1a --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteconnections/model_expressrouteconnectionproperties.go @@ -0,0 +1,15 @@ +package expressrouteconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteConnectionProperties struct { + AuthorizationKey *string `json:"authorizationKey,omitempty"` + EnableInternetSecurity *bool `json:"enableInternetSecurity,omitempty"` + EnablePrivateLinkFastPath *bool `json:"enablePrivateLinkFastPath,omitempty"` + ExpressRouteCircuitPeering ExpressRouteCircuitPeeringId `json:"expressRouteCircuitPeering"` + ExpressRouteGatewayBypass *bool `json:"expressRouteGatewayBypass,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RoutingConfiguration *RoutingConfiguration `json:"routingConfiguration,omitempty"` + RoutingWeight *int64 `json:"routingWeight,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteconnections/model_propagatedroutetable.go b/resource-manager/network/2024-01-01/expressrouteconnections/model_propagatedroutetable.go new file mode 100644 index 00000000000..7279e13359c --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteconnections/model_propagatedroutetable.go @@ -0,0 +1,9 @@ +package expressrouteconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PropagatedRouteTable struct { + Ids *[]SubResource `json:"ids,omitempty"` + Labels *[]string `json:"labels,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteconnections/model_routingconfiguration.go b/resource-manager/network/2024-01-01/expressrouteconnections/model_routingconfiguration.go new file mode 100644 index 00000000000..4e1904d9c6e --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteconnections/model_routingconfiguration.go @@ -0,0 +1,12 @@ +package expressrouteconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutingConfiguration struct { + AssociatedRouteTable *SubResource `json:"associatedRouteTable,omitempty"` + InboundRouteMap *SubResource `json:"inboundRouteMap,omitempty"` + OutboundRouteMap *SubResource `json:"outboundRouteMap,omitempty"` + PropagatedRouteTables *PropagatedRouteTable `json:"propagatedRouteTables,omitempty"` + VnetRoutes *VnetRoute `json:"vnetRoutes,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteconnections/model_staticroute.go b/resource-manager/network/2024-01-01/expressrouteconnections/model_staticroute.go new file mode 100644 index 00000000000..c1e414bbe16 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteconnections/model_staticroute.go @@ -0,0 +1,10 @@ +package expressrouteconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StaticRoute struct { + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + Name *string `json:"name,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteconnections/model_staticroutesconfig.go b/resource-manager/network/2024-01-01/expressrouteconnections/model_staticroutesconfig.go new file mode 100644 index 00000000000..9ee286419ac --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteconnections/model_staticroutesconfig.go @@ -0,0 +1,9 @@ +package expressrouteconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StaticRoutesConfig struct { + PropagateStaticRoutes *bool `json:"propagateStaticRoutes,omitempty"` + VnetLocalRouteOverrideCriteria *VnetLocalRouteOverrideCriteria `json:"vnetLocalRouteOverrideCriteria,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteconnections/model_subresource.go b/resource-manager/network/2024-01-01/expressrouteconnections/model_subresource.go new file mode 100644 index 00000000000..5a5f53696f8 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteconnections/model_subresource.go @@ -0,0 +1,8 @@ +package expressrouteconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteconnections/model_vnetroute.go b/resource-manager/network/2024-01-01/expressrouteconnections/model_vnetroute.go new file mode 100644 index 00000000000..9e296eed5de --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteconnections/model_vnetroute.go @@ -0,0 +1,10 @@ +package expressrouteconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VnetRoute struct { + BgpConnections *[]SubResource `json:"bgpConnections,omitempty"` + StaticRoutes *[]StaticRoute `json:"staticRoutes,omitempty"` + StaticRoutesConfig *StaticRoutesConfig `json:"staticRoutesConfig,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteconnections/version.go b/resource-manager/network/2024-01-01/expressrouteconnections/version.go new file mode 100644 index 00000000000..5102a68c7f8 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteconnections/version.go @@ -0,0 +1,12 @@ +package expressrouteconnections + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/expressrouteconnections/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/README.md b/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/README.md new file mode 100644 index 00000000000..5656b292d2b --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/README.md @@ -0,0 +1,37 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable` Documentation + +The `expressroutecrossconnectionarptable` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable" +``` + + +### Client Initialization + +```go +client := expressroutecrossconnectionarptable.NewExpressRouteCrossConnectionArpTableClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ExpressRouteCrossConnectionArpTableClient.ExpressRouteCrossConnectionsListArpTable` + +```go +ctx := context.TODO() +id := expressroutecrossconnectionarptable.NewPeeringArpTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCrossConnectionValue", "peeringValue", "arpTableValue") + +// alternatively `client.ExpressRouteCrossConnectionsListArpTable(ctx, id)` can be used to do batched pagination +items, err := client.ExpressRouteCrossConnectionsListArpTableComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/client.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/client.go new file mode 100644 index 00000000000..07328f2f394 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/client.go @@ -0,0 +1,26 @@ +package expressroutecrossconnectionarptable + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCrossConnectionArpTableClient struct { + Client *resourcemanager.Client +} + +func NewExpressRouteCrossConnectionArpTableClientWithBaseURI(sdkApi sdkEnv.Api) (*ExpressRouteCrossConnectionArpTableClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "expressroutecrossconnectionarptable", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ExpressRouteCrossConnectionArpTableClient: %+v", err) + } + + return &ExpressRouteCrossConnectionArpTableClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/id_peeringarptable.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/id_peeringarptable.go new file mode 100644 index 00000000000..a90eea8a4cb --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/id_peeringarptable.go @@ -0,0 +1,148 @@ +package expressroutecrossconnectionarptable + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&PeeringArpTableId{}) +} + +var _ resourceids.ResourceId = &PeeringArpTableId{} + +// PeeringArpTableId is a struct representing the Resource ID for a Peering Arp Table +type PeeringArpTableId struct { + SubscriptionId string + ResourceGroupName string + ExpressRouteCrossConnectionName string + PeeringName string + ArpTableName string +} + +// NewPeeringArpTableID returns a new PeeringArpTableId struct +func NewPeeringArpTableID(subscriptionId string, resourceGroupName string, expressRouteCrossConnectionName string, peeringName string, arpTableName string) PeeringArpTableId { + return PeeringArpTableId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRouteCrossConnectionName: expressRouteCrossConnectionName, + PeeringName: peeringName, + ArpTableName: arpTableName, + } +} + +// ParsePeeringArpTableID parses 'input' into a PeeringArpTableId +func ParsePeeringArpTableID(input string) (*PeeringArpTableId, error) { + parser := resourceids.NewParserFromResourceIdType(&PeeringArpTableId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PeeringArpTableId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParsePeeringArpTableIDInsensitively parses 'input' case-insensitively into a PeeringArpTableId +// note: this method should only be used for API response data and not user input +func ParsePeeringArpTableIDInsensitively(input string) (*PeeringArpTableId, error) { + parser := resourceids.NewParserFromResourceIdType(&PeeringArpTableId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PeeringArpTableId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *PeeringArpTableId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRouteCrossConnectionName, ok = input.Parsed["expressRouteCrossConnectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRouteCrossConnectionName", input) + } + + if id.PeeringName, ok = input.Parsed["peeringName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "peeringName", input) + } + + if id.ArpTableName, ok = input.Parsed["arpTableName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "arpTableName", input) + } + + return nil +} + +// ValidatePeeringArpTableID checks that 'input' can be parsed as a Peering Arp Table ID +func ValidatePeeringArpTableID(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 := ParsePeeringArpTableID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Peering Arp Table ID +func (id PeeringArpTableId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRouteCrossConnections/%s/peerings/%s/arpTables/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRouteCrossConnectionName, id.PeeringName, id.ArpTableName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Peering Arp Table ID +func (id PeeringArpTableId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRouteCrossConnections", "expressRouteCrossConnections", "expressRouteCrossConnections"), + resourceids.UserSpecifiedSegment("expressRouteCrossConnectionName", "expressRouteCrossConnectionValue"), + resourceids.StaticSegment("staticPeerings", "peerings", "peerings"), + resourceids.UserSpecifiedSegment("peeringName", "peeringValue"), + resourceids.StaticSegment("staticArpTables", "arpTables", "arpTables"), + resourceids.UserSpecifiedSegment("arpTableName", "arpTableValue"), + } +} + +// String returns a human-readable description of this Peering Arp Table ID +func (id PeeringArpTableId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Cross Connection Name: %q", id.ExpressRouteCrossConnectionName), + fmt.Sprintf("Peering Name: %q", id.PeeringName), + fmt.Sprintf("Arp Table Name: %q", id.ArpTableName), + } + return fmt.Sprintf("Peering Arp Table (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/id_peeringarptable_test.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/id_peeringarptable_test.go new file mode 100644 index 00000000000..31143355e4b --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/id_peeringarptable_test.go @@ -0,0 +1,372 @@ +package expressroutecrossconnectionarptable + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &PeeringArpTableId{} + +func TestNewPeeringArpTableID(t *testing.T) { + id := NewPeeringArpTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCrossConnectionValue", "peeringValue", "arpTableValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRouteCrossConnectionName != "expressRouteCrossConnectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRouteCrossConnectionName'", id.ExpressRouteCrossConnectionName, "expressRouteCrossConnectionValue") + } + + if id.PeeringName != "peeringValue" { + t.Fatalf("Expected %q but got %q for Segment 'PeeringName'", id.PeeringName, "peeringValue") + } + + if id.ArpTableName != "arpTableValue" { + t.Fatalf("Expected %q but got %q for Segment 'ArpTableName'", id.ArpTableName, "arpTableValue") + } +} + +func TestFormatPeeringArpTableID(t *testing.T) { + actual := NewPeeringArpTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCrossConnectionValue", "peeringValue", "arpTableValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue/arpTables/arpTableValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParsePeeringArpTableID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PeeringArpTableId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue/arpTables", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue/arpTables/arpTableValue", + Expected: &PeeringArpTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCrossConnectionName: "expressRouteCrossConnectionValue", + PeeringName: "peeringValue", + ArpTableName: "arpTableValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue/arpTables/arpTableValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePeeringArpTableID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCrossConnectionName != v.Expected.ExpressRouteCrossConnectionName { + t.Fatalf("Expected %q but got %q for ExpressRouteCrossConnectionName", v.Expected.ExpressRouteCrossConnectionName, actual.ExpressRouteCrossConnectionName) + } + + if actual.PeeringName != v.Expected.PeeringName { + t.Fatalf("Expected %q but got %q for PeeringName", v.Expected.PeeringName, actual.PeeringName) + } + + if actual.ArpTableName != v.Expected.ArpTableName { + t.Fatalf("Expected %q but got %q for ArpTableName", v.Expected.ArpTableName, actual.ArpTableName) + } + + } +} + +func TestParsePeeringArpTableIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PeeringArpTableId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE/pEeRiNgS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE/pEeRiNgS/pEeRiNgVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue/arpTables", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE/pEeRiNgS/pEeRiNgVaLuE/aRpTaBlEs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue/arpTables/arpTableValue", + Expected: &PeeringArpTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCrossConnectionName: "expressRouteCrossConnectionValue", + PeeringName: "peeringValue", + ArpTableName: "arpTableValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue/arpTables/arpTableValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE/pEeRiNgS/pEeRiNgVaLuE/aRpTaBlEs/aRpTaBlEvAlUe", + Expected: &PeeringArpTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRouteCrossConnectionName: "eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE", + PeeringName: "pEeRiNgVaLuE", + ArpTableName: "aRpTaBlEvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE/pEeRiNgS/pEeRiNgVaLuE/aRpTaBlEs/aRpTaBlEvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePeeringArpTableIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCrossConnectionName != v.Expected.ExpressRouteCrossConnectionName { + t.Fatalf("Expected %q but got %q for ExpressRouteCrossConnectionName", v.Expected.ExpressRouteCrossConnectionName, actual.ExpressRouteCrossConnectionName) + } + + if actual.PeeringName != v.Expected.PeeringName { + t.Fatalf("Expected %q but got %q for PeeringName", v.Expected.PeeringName, actual.PeeringName) + } + + if actual.ArpTableName != v.Expected.ArpTableName { + t.Fatalf("Expected %q but got %q for ArpTableName", v.Expected.ArpTableName, actual.ArpTableName) + } + + } +} + +func TestSegmentsForPeeringArpTableId(t *testing.T) { + segments := PeeringArpTableId{}.Segments() + if len(segments) == 0 { + t.Fatalf("PeeringArpTableId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/method_expressroutecrossconnectionslistarptable.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/method_expressroutecrossconnectionslistarptable.go new file mode 100644 index 00000000000..93cb5d74c61 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/method_expressroutecrossconnectionslistarptable.go @@ -0,0 +1,76 @@ +package expressroutecrossconnectionarptable + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCrossConnectionsListArpTableOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *[]ExpressRouteCircuitArpTable +} + +type ExpressRouteCrossConnectionsListArpTableCompleteResult struct { + LatestHttpResponse *http.Response + Items []ExpressRouteCircuitArpTable +} + +// ExpressRouteCrossConnectionsListArpTable ... +func (c ExpressRouteCrossConnectionArpTableClient) ExpressRouteCrossConnectionsListArpTable(ctx context.Context, id PeeringArpTableId) (result ExpressRouteCrossConnectionsListArpTableOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// ExpressRouteCrossConnectionsListArpTableThenPoll performs ExpressRouteCrossConnectionsListArpTable then polls until it's completed +func (c ExpressRouteCrossConnectionArpTableClient) ExpressRouteCrossConnectionsListArpTableThenPoll(ctx context.Context, id PeeringArpTableId) error { + result, err := c.ExpressRouteCrossConnectionsListArpTable(ctx, id) + if err != nil { + return fmt.Errorf("performing ExpressRouteCrossConnectionsListArpTable: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after ExpressRouteCrossConnectionsListArpTable: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/model_expressroutecircuitarptable.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/model_expressroutecircuitarptable.go new file mode 100644 index 00000000000..eb25fb1e02d --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/model_expressroutecircuitarptable.go @@ -0,0 +1,11 @@ +package expressroutecrossconnectionarptable + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitArpTable struct { + Age *int64 `json:"age,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + Interface *string `json:"interface,omitempty"` + MacAddress *string `json:"macAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/predicates.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/predicates.go new file mode 100644 index 00000000000..75df45b22f9 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/predicates.go @@ -0,0 +1,32 @@ +package expressroutecrossconnectionarptable + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitArpTableOperationPredicate struct { + Age *int64 + IPAddress *string + Interface *string + MacAddress *string +} + +func (p ExpressRouteCircuitArpTableOperationPredicate) Matches(input ExpressRouteCircuitArpTable) bool { + + if p.Age != nil && (input.Age == nil || *p.Age != *input.Age) { + return false + } + + if p.IPAddress != nil && (input.IPAddress == nil || *p.IPAddress != *input.IPAddress) { + return false + } + + if p.Interface != nil && (input.Interface == nil || *p.Interface != *input.Interface) { + return false + } + + if p.MacAddress != nil && (input.MacAddress == nil || *p.MacAddress != *input.MacAddress) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/version.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/version.go new file mode 100644 index 00000000000..43cc81982a7 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionarptable/version.go @@ -0,0 +1,12 @@ +package expressroutecrossconnectionarptable + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/expressroutecrossconnectionarptable/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/README.md b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/README.md new file mode 100644 index 00000000000..b14545618ca --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/README.md @@ -0,0 +1,82 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings` Documentation + +The `expressroutecrossconnectionpeerings` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings" +``` + + +### Client Initialization + +```go +client := expressroutecrossconnectionpeerings.NewExpressRouteCrossConnectionPeeringsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ExpressRouteCrossConnectionPeeringsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := expressroutecrossconnectionpeerings.NewPeeringID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCrossConnectionValue", "peeringValue") + +payload := expressroutecrossconnectionpeerings.ExpressRouteCrossConnectionPeering{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `ExpressRouteCrossConnectionPeeringsClient.Delete` + +```go +ctx := context.TODO() +id := expressroutecrossconnectionpeerings.NewPeeringID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCrossConnectionValue", "peeringValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `ExpressRouteCrossConnectionPeeringsClient.Get` + +```go +ctx := context.TODO() +id := expressroutecrossconnectionpeerings.NewPeeringID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCrossConnectionValue", "peeringValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ExpressRouteCrossConnectionPeeringsClient.List` + +```go +ctx := context.TODO() +id := expressroutecrossconnectionpeerings.NewExpressRouteCrossConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCrossConnectionValue") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/client.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/client.go new file mode 100644 index 00000000000..90cbc899dcb --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/client.go @@ -0,0 +1,26 @@ +package expressroutecrossconnectionpeerings + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCrossConnectionPeeringsClient struct { + Client *resourcemanager.Client +} + +func NewExpressRouteCrossConnectionPeeringsClientWithBaseURI(sdkApi sdkEnv.Api) (*ExpressRouteCrossConnectionPeeringsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "expressroutecrossconnectionpeerings", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ExpressRouteCrossConnectionPeeringsClient: %+v", err) + } + + return &ExpressRouteCrossConnectionPeeringsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/constants.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/constants.go new file mode 100644 index 00000000000..96dec453442 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/constants.go @@ -0,0 +1,230 @@ +package expressroutecrossconnectionpeerings + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitPeeringAdvertisedPublicPrefixState string + +const ( + ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfigured ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "Configured" + ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfiguring ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "Configuring" + ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateNotConfigured ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "NotConfigured" + ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateValidationNeeded ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "ValidationNeeded" +) + +func PossibleValuesForExpressRouteCircuitPeeringAdvertisedPublicPrefixState() []string { + return []string{ + string(ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfigured), + string(ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfiguring), + string(ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateNotConfigured), + string(ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateValidationNeeded), + } +} + +func (s *ExpressRouteCircuitPeeringAdvertisedPublicPrefixState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRouteCircuitPeeringAdvertisedPublicPrefixState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRouteCircuitPeeringAdvertisedPublicPrefixState(input string) (*ExpressRouteCircuitPeeringAdvertisedPublicPrefixState, error) { + vals := map[string]ExpressRouteCircuitPeeringAdvertisedPublicPrefixState{ + "configured": ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfigured, + "configuring": ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfiguring, + "notconfigured": ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateNotConfigured, + "validationneeded": ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateValidationNeeded, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRouteCircuitPeeringAdvertisedPublicPrefixState(input) + return &out, nil +} + +type ExpressRouteCircuitPeeringState string + +const ( + ExpressRouteCircuitPeeringStateDisabled ExpressRouteCircuitPeeringState = "Disabled" + ExpressRouteCircuitPeeringStateEnabled ExpressRouteCircuitPeeringState = "Enabled" +) + +func PossibleValuesForExpressRouteCircuitPeeringState() []string { + return []string{ + string(ExpressRouteCircuitPeeringStateDisabled), + string(ExpressRouteCircuitPeeringStateEnabled), + } +} + +func (s *ExpressRouteCircuitPeeringState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRouteCircuitPeeringState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRouteCircuitPeeringState(input string) (*ExpressRouteCircuitPeeringState, error) { + vals := map[string]ExpressRouteCircuitPeeringState{ + "disabled": ExpressRouteCircuitPeeringStateDisabled, + "enabled": ExpressRouteCircuitPeeringStateEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRouteCircuitPeeringState(input) + return &out, nil +} + +type ExpressRoutePeeringState string + +const ( + ExpressRoutePeeringStateDisabled ExpressRoutePeeringState = "Disabled" + ExpressRoutePeeringStateEnabled ExpressRoutePeeringState = "Enabled" +) + +func PossibleValuesForExpressRoutePeeringState() []string { + return []string{ + string(ExpressRoutePeeringStateDisabled), + string(ExpressRoutePeeringStateEnabled), + } +} + +func (s *ExpressRoutePeeringState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRoutePeeringState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRoutePeeringState(input string) (*ExpressRoutePeeringState, error) { + vals := map[string]ExpressRoutePeeringState{ + "disabled": ExpressRoutePeeringStateDisabled, + "enabled": ExpressRoutePeeringStateEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRoutePeeringState(input) + return &out, nil +} + +type ExpressRoutePeeringType string + +const ( + ExpressRoutePeeringTypeAzurePrivatePeering ExpressRoutePeeringType = "AzurePrivatePeering" + ExpressRoutePeeringTypeAzurePublicPeering ExpressRoutePeeringType = "AzurePublicPeering" + ExpressRoutePeeringTypeMicrosoftPeering ExpressRoutePeeringType = "MicrosoftPeering" +) + +func PossibleValuesForExpressRoutePeeringType() []string { + return []string{ + string(ExpressRoutePeeringTypeAzurePrivatePeering), + string(ExpressRoutePeeringTypeAzurePublicPeering), + string(ExpressRoutePeeringTypeMicrosoftPeering), + } +} + +func (s *ExpressRoutePeeringType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRoutePeeringType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRoutePeeringType(input string) (*ExpressRoutePeeringType, error) { + vals := map[string]ExpressRoutePeeringType{ + "azureprivatepeering": ExpressRoutePeeringTypeAzurePrivatePeering, + "azurepublicpeering": ExpressRoutePeeringTypeAzurePublicPeering, + "microsoftpeering": ExpressRoutePeeringTypeMicrosoftPeering, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRoutePeeringType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/id_expressroutecrossconnection.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/id_expressroutecrossconnection.go new file mode 100644 index 00000000000..626b69cff73 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/id_expressroutecrossconnection.go @@ -0,0 +1,130 @@ +package expressroutecrossconnectionpeerings + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ExpressRouteCrossConnectionId{}) +} + +var _ resourceids.ResourceId = &ExpressRouteCrossConnectionId{} + +// ExpressRouteCrossConnectionId is a struct representing the Resource ID for a Express Route Cross Connection +type ExpressRouteCrossConnectionId struct { + SubscriptionId string + ResourceGroupName string + ExpressRouteCrossConnectionName string +} + +// NewExpressRouteCrossConnectionID returns a new ExpressRouteCrossConnectionId struct +func NewExpressRouteCrossConnectionID(subscriptionId string, resourceGroupName string, expressRouteCrossConnectionName string) ExpressRouteCrossConnectionId { + return ExpressRouteCrossConnectionId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRouteCrossConnectionName: expressRouteCrossConnectionName, + } +} + +// ParseExpressRouteCrossConnectionID parses 'input' into a ExpressRouteCrossConnectionId +func ParseExpressRouteCrossConnectionID(input string) (*ExpressRouteCrossConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRouteCrossConnectionId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRouteCrossConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseExpressRouteCrossConnectionIDInsensitively parses 'input' case-insensitively into a ExpressRouteCrossConnectionId +// note: this method should only be used for API response data and not user input +func ParseExpressRouteCrossConnectionIDInsensitively(input string) (*ExpressRouteCrossConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRouteCrossConnectionId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRouteCrossConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ExpressRouteCrossConnectionId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRouteCrossConnectionName, ok = input.Parsed["expressRouteCrossConnectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRouteCrossConnectionName", input) + } + + return nil +} + +// ValidateExpressRouteCrossConnectionID checks that 'input' can be parsed as a Express Route Cross Connection ID +func ValidateExpressRouteCrossConnectionID(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 := ParseExpressRouteCrossConnectionID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Express Route Cross Connection ID +func (id ExpressRouteCrossConnectionId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRouteCrossConnections/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRouteCrossConnectionName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Express Route Cross Connection ID +func (id ExpressRouteCrossConnectionId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRouteCrossConnections", "expressRouteCrossConnections", "expressRouteCrossConnections"), + resourceids.UserSpecifiedSegment("expressRouteCrossConnectionName", "expressRouteCrossConnectionValue"), + } +} + +// String returns a human-readable description of this Express Route Cross Connection ID +func (id ExpressRouteCrossConnectionId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Cross Connection Name: %q", id.ExpressRouteCrossConnectionName), + } + return fmt.Sprintf("Express Route Cross Connection (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/id_expressroutecrossconnection_test.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/id_expressroutecrossconnection_test.go new file mode 100644 index 00000000000..5314f35860d --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/id_expressroutecrossconnection_test.go @@ -0,0 +1,282 @@ +package expressroutecrossconnectionpeerings + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ExpressRouteCrossConnectionId{} + +func TestNewExpressRouteCrossConnectionID(t *testing.T) { + id := NewExpressRouteCrossConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCrossConnectionValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRouteCrossConnectionName != "expressRouteCrossConnectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRouteCrossConnectionName'", id.ExpressRouteCrossConnectionName, "expressRouteCrossConnectionValue") + } +} + +func TestFormatExpressRouteCrossConnectionID(t *testing.T) { + actual := NewExpressRouteCrossConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCrossConnectionValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseExpressRouteCrossConnectionID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRouteCrossConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue", + Expected: &ExpressRouteCrossConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCrossConnectionName: "expressRouteCrossConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRouteCrossConnectionID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCrossConnectionName != v.Expected.ExpressRouteCrossConnectionName { + t.Fatalf("Expected %q but got %q for ExpressRouteCrossConnectionName", v.Expected.ExpressRouteCrossConnectionName, actual.ExpressRouteCrossConnectionName) + } + + } +} + +func TestParseExpressRouteCrossConnectionIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRouteCrossConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue", + Expected: &ExpressRouteCrossConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCrossConnectionName: "expressRouteCrossConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE", + Expected: &ExpressRouteCrossConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRouteCrossConnectionName: "eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRouteCrossConnectionIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCrossConnectionName != v.Expected.ExpressRouteCrossConnectionName { + t.Fatalf("Expected %q but got %q for ExpressRouteCrossConnectionName", v.Expected.ExpressRouteCrossConnectionName, actual.ExpressRouteCrossConnectionName) + } + + } +} + +func TestSegmentsForExpressRouteCrossConnectionId(t *testing.T) { + segments := ExpressRouteCrossConnectionId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ExpressRouteCrossConnectionId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/id_peering.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/id_peering.go new file mode 100644 index 00000000000..f9e45b10c99 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/id_peering.go @@ -0,0 +1,139 @@ +package expressroutecrossconnectionpeerings + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&PeeringId{}) +} + +var _ resourceids.ResourceId = &PeeringId{} + +// PeeringId is a struct representing the Resource ID for a Peering +type PeeringId struct { + SubscriptionId string + ResourceGroupName string + ExpressRouteCrossConnectionName string + PeeringName string +} + +// NewPeeringID returns a new PeeringId struct +func NewPeeringID(subscriptionId string, resourceGroupName string, expressRouteCrossConnectionName string, peeringName string) PeeringId { + return PeeringId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRouteCrossConnectionName: expressRouteCrossConnectionName, + PeeringName: peeringName, + } +} + +// ParsePeeringID parses 'input' into a PeeringId +func ParsePeeringID(input string) (*PeeringId, error) { + parser := resourceids.NewParserFromResourceIdType(&PeeringId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PeeringId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParsePeeringIDInsensitively parses 'input' case-insensitively into a PeeringId +// note: this method should only be used for API response data and not user input +func ParsePeeringIDInsensitively(input string) (*PeeringId, error) { + parser := resourceids.NewParserFromResourceIdType(&PeeringId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PeeringId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *PeeringId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRouteCrossConnectionName, ok = input.Parsed["expressRouteCrossConnectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRouteCrossConnectionName", input) + } + + if id.PeeringName, ok = input.Parsed["peeringName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "peeringName", input) + } + + return nil +} + +// ValidatePeeringID checks that 'input' can be parsed as a Peering ID +func ValidatePeeringID(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 := ParsePeeringID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Peering ID +func (id PeeringId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRouteCrossConnections/%s/peerings/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRouteCrossConnectionName, id.PeeringName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Peering ID +func (id PeeringId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRouteCrossConnections", "expressRouteCrossConnections", "expressRouteCrossConnections"), + resourceids.UserSpecifiedSegment("expressRouteCrossConnectionName", "expressRouteCrossConnectionValue"), + resourceids.StaticSegment("staticPeerings", "peerings", "peerings"), + resourceids.UserSpecifiedSegment("peeringName", "peeringValue"), + } +} + +// String returns a human-readable description of this Peering ID +func (id PeeringId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Cross Connection Name: %q", id.ExpressRouteCrossConnectionName), + fmt.Sprintf("Peering Name: %q", id.PeeringName), + } + return fmt.Sprintf("Peering (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/id_peering_test.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/id_peering_test.go new file mode 100644 index 00000000000..77d161773d2 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/id_peering_test.go @@ -0,0 +1,327 @@ +package expressroutecrossconnectionpeerings + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &PeeringId{} + +func TestNewPeeringID(t *testing.T) { + id := NewPeeringID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCrossConnectionValue", "peeringValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRouteCrossConnectionName != "expressRouteCrossConnectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRouteCrossConnectionName'", id.ExpressRouteCrossConnectionName, "expressRouteCrossConnectionValue") + } + + if id.PeeringName != "peeringValue" { + t.Fatalf("Expected %q but got %q for Segment 'PeeringName'", id.PeeringName, "peeringValue") + } +} + +func TestFormatPeeringID(t *testing.T) { + actual := NewPeeringID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCrossConnectionValue", "peeringValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParsePeeringID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PeeringId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue", + Expected: &PeeringId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCrossConnectionName: "expressRouteCrossConnectionValue", + PeeringName: "peeringValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePeeringID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCrossConnectionName != v.Expected.ExpressRouteCrossConnectionName { + t.Fatalf("Expected %q but got %q for ExpressRouteCrossConnectionName", v.Expected.ExpressRouteCrossConnectionName, actual.ExpressRouteCrossConnectionName) + } + + if actual.PeeringName != v.Expected.PeeringName { + t.Fatalf("Expected %q but got %q for PeeringName", v.Expected.PeeringName, actual.PeeringName) + } + + } +} + +func TestParsePeeringIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PeeringId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE/pEeRiNgS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue", + Expected: &PeeringId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCrossConnectionName: "expressRouteCrossConnectionValue", + PeeringName: "peeringValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE/pEeRiNgS/pEeRiNgVaLuE", + Expected: &PeeringId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRouteCrossConnectionName: "eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE", + PeeringName: "pEeRiNgVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE/pEeRiNgS/pEeRiNgVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePeeringIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCrossConnectionName != v.Expected.ExpressRouteCrossConnectionName { + t.Fatalf("Expected %q but got %q for ExpressRouteCrossConnectionName", v.Expected.ExpressRouteCrossConnectionName, actual.ExpressRouteCrossConnectionName) + } + + if actual.PeeringName != v.Expected.PeeringName { + t.Fatalf("Expected %q but got %q for PeeringName", v.Expected.PeeringName, actual.PeeringName) + } + + } +} + +func TestSegmentsForPeeringId(t *testing.T) { + segments := PeeringId{}.Segments() + if len(segments) == 0 { + t.Fatalf("PeeringId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/method_createorupdate.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/method_createorupdate.go new file mode 100644 index 00000000000..4cfa59c5d29 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/method_createorupdate.go @@ -0,0 +1,75 @@ +package expressroutecrossconnectionpeerings + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteCrossConnectionPeering +} + +// CreateOrUpdate ... +func (c ExpressRouteCrossConnectionPeeringsClient) CreateOrUpdate(ctx context.Context, id PeeringId, input ExpressRouteCrossConnectionPeering) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c ExpressRouteCrossConnectionPeeringsClient) CreateOrUpdateThenPoll(ctx context.Context, id PeeringId, input ExpressRouteCrossConnectionPeering) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/method_delete.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/method_delete.go new file mode 100644 index 00000000000..f2073ab1bd3 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/method_delete.go @@ -0,0 +1,71 @@ +package expressroutecrossconnectionpeerings + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c ExpressRouteCrossConnectionPeeringsClient) Delete(ctx context.Context, id PeeringId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c ExpressRouteCrossConnectionPeeringsClient) DeleteThenPoll(ctx context.Context, id PeeringId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/method_get.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/method_get.go new file mode 100644 index 00000000000..b53171627d6 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/method_get.go @@ -0,0 +1,54 @@ +package expressroutecrossconnectionpeerings + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteCrossConnectionPeering +} + +// Get ... +func (c ExpressRouteCrossConnectionPeeringsClient) Get(ctx context.Context, id PeeringId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ExpressRouteCrossConnectionPeering + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/method_list.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/method_list.go new file mode 100644 index 00000000000..fabd3a8adae --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/method_list.go @@ -0,0 +1,92 @@ +package expressroutecrossconnectionpeerings + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ExpressRouteCrossConnectionPeering +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []ExpressRouteCrossConnectionPeering +} + +// List ... +func (c ExpressRouteCrossConnectionPeeringsClient) List(ctx context.Context, id ExpressRouteCrossConnectionId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/peerings", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ExpressRouteCrossConnectionPeering `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c ExpressRouteCrossConnectionPeeringsClient) ListComplete(ctx context.Context, id ExpressRouteCrossConnectionId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, ExpressRouteCrossConnectionPeeringOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ExpressRouteCrossConnectionPeeringsClient) ListCompleteMatchingPredicate(ctx context.Context, id ExpressRouteCrossConnectionId, predicate ExpressRouteCrossConnectionPeeringOperationPredicate) (result ListCompleteResult, err error) { + items := make([]ExpressRouteCrossConnectionPeering, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/model_expressroutecircuitpeeringconfig.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/model_expressroutecircuitpeeringconfig.go new file mode 100644 index 00000000000..298b61e03ee --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/model_expressroutecircuitpeeringconfig.go @@ -0,0 +1,13 @@ +package expressroutecrossconnectionpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitPeeringConfig struct { + AdvertisedCommunities *[]string `json:"advertisedCommunities,omitempty"` + AdvertisedPublicPrefixes *[]string `json:"advertisedPublicPrefixes,omitempty"` + AdvertisedPublicPrefixesState *ExpressRouteCircuitPeeringAdvertisedPublicPrefixState `json:"advertisedPublicPrefixesState,omitempty"` + CustomerASN *int64 `json:"customerASN,omitempty"` + LegacyMode *int64 `json:"legacyMode,omitempty"` + RoutingRegistryName *string `json:"routingRegistryName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/model_expressroutecrossconnectionpeering.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/model_expressroutecrossconnectionpeering.go new file mode 100644 index 00000000000..3244f828098 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/model_expressroutecrossconnectionpeering.go @@ -0,0 +1,11 @@ +package expressroutecrossconnectionpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCrossConnectionPeering struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ExpressRouteCrossConnectionPeeringProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/model_expressroutecrossconnectionpeeringproperties.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/model_expressroutecrossconnectionpeeringproperties.go new file mode 100644 index 00000000000..64330e5a7ea --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/model_expressroutecrossconnectionpeeringproperties.go @@ -0,0 +1,22 @@ +package expressroutecrossconnectionpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCrossConnectionPeeringProperties struct { + AzureASN *int64 `json:"azureASN,omitempty"` + GatewayManagerEtag *string `json:"gatewayManagerEtag,omitempty"` + IPv6PeeringConfig *IPv6ExpressRouteCircuitPeeringConfig `json:"ipv6PeeringConfig,omitempty"` + LastModifiedBy *string `json:"lastModifiedBy,omitempty"` + MicrosoftPeeringConfig *ExpressRouteCircuitPeeringConfig `json:"microsoftPeeringConfig,omitempty"` + PeerASN *int64 `json:"peerASN,omitempty"` + PeeringType *ExpressRoutePeeringType `json:"peeringType,omitempty"` + PrimaryAzurePort *string `json:"primaryAzurePort,omitempty"` + PrimaryPeerAddressPrefix *string `json:"primaryPeerAddressPrefix,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SecondaryAzurePort *string `json:"secondaryAzurePort,omitempty"` + SecondaryPeerAddressPrefix *string `json:"secondaryPeerAddressPrefix,omitempty"` + SharedKey *string `json:"sharedKey,omitempty"` + State *ExpressRoutePeeringState `json:"state,omitempty"` + VlanId *int64 `json:"vlanId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/model_ipv6expressroutecircuitpeeringconfig.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/model_ipv6expressroutecircuitpeeringconfig.go new file mode 100644 index 00000000000..ec7f2c4a72c --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/model_ipv6expressroutecircuitpeeringconfig.go @@ -0,0 +1,12 @@ +package expressroutecrossconnectionpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPv6ExpressRouteCircuitPeeringConfig struct { + MicrosoftPeeringConfig *ExpressRouteCircuitPeeringConfig `json:"microsoftPeeringConfig,omitempty"` + PrimaryPeerAddressPrefix *string `json:"primaryPeerAddressPrefix,omitempty"` + RouteFilter *SubResource `json:"routeFilter,omitempty"` + SecondaryPeerAddressPrefix *string `json:"secondaryPeerAddressPrefix,omitempty"` + State *ExpressRouteCircuitPeeringState `json:"state,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/model_subresource.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/model_subresource.go new file mode 100644 index 00000000000..919b934c547 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/model_subresource.go @@ -0,0 +1,8 @@ +package expressroutecrossconnectionpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/predicates.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/predicates.go new file mode 100644 index 00000000000..abec5984ec1 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/predicates.go @@ -0,0 +1,27 @@ +package expressroutecrossconnectionpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCrossConnectionPeeringOperationPredicate struct { + Etag *string + Id *string + Name *string +} + +func (p ExpressRouteCrossConnectionPeeringOperationPredicate) Matches(input ExpressRouteCrossConnectionPeering) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/version.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/version.go new file mode 100644 index 00000000000..e19616a8ad0 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionpeerings/version.go @@ -0,0 +1,12 @@ +package expressroutecrossconnectionpeerings + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/expressroutecrossconnectionpeerings/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/README.md b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/README.md new file mode 100644 index 00000000000..806fbcafbc1 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/README.md @@ -0,0 +1,37 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable` Documentation + +The `expressroutecrossconnectionroutetable` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable" +``` + + +### Client Initialization + +```go +client := expressroutecrossconnectionroutetable.NewExpressRouteCrossConnectionRouteTableClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ExpressRouteCrossConnectionRouteTableClient.ExpressRouteCrossConnectionsListRoutesTable` + +```go +ctx := context.TODO() +id := expressroutecrossconnectionroutetable.NewExpressRouteCrossConnectionPeeringRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCrossConnectionValue", "peeringValue", "routeTableValue") + +// alternatively `client.ExpressRouteCrossConnectionsListRoutesTable(ctx, id)` can be used to do batched pagination +items, err := client.ExpressRouteCrossConnectionsListRoutesTableComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/client.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/client.go new file mode 100644 index 00000000000..210d81d68a9 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/client.go @@ -0,0 +1,26 @@ +package expressroutecrossconnectionroutetable + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCrossConnectionRouteTableClient struct { + Client *resourcemanager.Client +} + +func NewExpressRouteCrossConnectionRouteTableClientWithBaseURI(sdkApi sdkEnv.Api) (*ExpressRouteCrossConnectionRouteTableClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "expressroutecrossconnectionroutetable", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ExpressRouteCrossConnectionRouteTableClient: %+v", err) + } + + return &ExpressRouteCrossConnectionRouteTableClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/id_expressroutecrossconnectionpeeringroutetable.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/id_expressroutecrossconnectionpeeringroutetable.go new file mode 100644 index 00000000000..9a8910626cd --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/id_expressroutecrossconnectionpeeringroutetable.go @@ -0,0 +1,148 @@ +package expressroutecrossconnectionroutetable + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ExpressRouteCrossConnectionPeeringRouteTableId{}) +} + +var _ resourceids.ResourceId = &ExpressRouteCrossConnectionPeeringRouteTableId{} + +// ExpressRouteCrossConnectionPeeringRouteTableId is a struct representing the Resource ID for a Express Route Cross Connection Peering Route Table +type ExpressRouteCrossConnectionPeeringRouteTableId struct { + SubscriptionId string + ResourceGroupName string + ExpressRouteCrossConnectionName string + PeeringName string + RouteTableName string +} + +// NewExpressRouteCrossConnectionPeeringRouteTableID returns a new ExpressRouteCrossConnectionPeeringRouteTableId struct +func NewExpressRouteCrossConnectionPeeringRouteTableID(subscriptionId string, resourceGroupName string, expressRouteCrossConnectionName string, peeringName string, routeTableName string) ExpressRouteCrossConnectionPeeringRouteTableId { + return ExpressRouteCrossConnectionPeeringRouteTableId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRouteCrossConnectionName: expressRouteCrossConnectionName, + PeeringName: peeringName, + RouteTableName: routeTableName, + } +} + +// ParseExpressRouteCrossConnectionPeeringRouteTableID parses 'input' into a ExpressRouteCrossConnectionPeeringRouteTableId +func ParseExpressRouteCrossConnectionPeeringRouteTableID(input string) (*ExpressRouteCrossConnectionPeeringRouteTableId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRouteCrossConnectionPeeringRouteTableId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRouteCrossConnectionPeeringRouteTableId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseExpressRouteCrossConnectionPeeringRouteTableIDInsensitively parses 'input' case-insensitively into a ExpressRouteCrossConnectionPeeringRouteTableId +// note: this method should only be used for API response data and not user input +func ParseExpressRouteCrossConnectionPeeringRouteTableIDInsensitively(input string) (*ExpressRouteCrossConnectionPeeringRouteTableId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRouteCrossConnectionPeeringRouteTableId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRouteCrossConnectionPeeringRouteTableId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ExpressRouteCrossConnectionPeeringRouteTableId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRouteCrossConnectionName, ok = input.Parsed["expressRouteCrossConnectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRouteCrossConnectionName", input) + } + + if id.PeeringName, ok = input.Parsed["peeringName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "peeringName", input) + } + + if id.RouteTableName, ok = input.Parsed["routeTableName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "routeTableName", input) + } + + return nil +} + +// ValidateExpressRouteCrossConnectionPeeringRouteTableID checks that 'input' can be parsed as a Express Route Cross Connection Peering Route Table ID +func ValidateExpressRouteCrossConnectionPeeringRouteTableID(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 := ParseExpressRouteCrossConnectionPeeringRouteTableID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Express Route Cross Connection Peering Route Table ID +func (id ExpressRouteCrossConnectionPeeringRouteTableId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRouteCrossConnections/%s/peerings/%s/routeTables/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRouteCrossConnectionName, id.PeeringName, id.RouteTableName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Express Route Cross Connection Peering Route Table ID +func (id ExpressRouteCrossConnectionPeeringRouteTableId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRouteCrossConnections", "expressRouteCrossConnections", "expressRouteCrossConnections"), + resourceids.UserSpecifiedSegment("expressRouteCrossConnectionName", "expressRouteCrossConnectionValue"), + resourceids.StaticSegment("staticPeerings", "peerings", "peerings"), + resourceids.UserSpecifiedSegment("peeringName", "peeringValue"), + resourceids.StaticSegment("staticRouteTables", "routeTables", "routeTables"), + resourceids.UserSpecifiedSegment("routeTableName", "routeTableValue"), + } +} + +// String returns a human-readable description of this Express Route Cross Connection Peering Route Table ID +func (id ExpressRouteCrossConnectionPeeringRouteTableId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Cross Connection Name: %q", id.ExpressRouteCrossConnectionName), + fmt.Sprintf("Peering Name: %q", id.PeeringName), + fmt.Sprintf("Route Table Name: %q", id.RouteTableName), + } + return fmt.Sprintf("Express Route Cross Connection Peering Route Table (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/id_expressroutecrossconnectionpeeringroutetable_test.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/id_expressroutecrossconnectionpeeringroutetable_test.go new file mode 100644 index 00000000000..5340522791f --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/id_expressroutecrossconnectionpeeringroutetable_test.go @@ -0,0 +1,372 @@ +package expressroutecrossconnectionroutetable + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ExpressRouteCrossConnectionPeeringRouteTableId{} + +func TestNewExpressRouteCrossConnectionPeeringRouteTableID(t *testing.T) { + id := NewExpressRouteCrossConnectionPeeringRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCrossConnectionValue", "peeringValue", "routeTableValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRouteCrossConnectionName != "expressRouteCrossConnectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRouteCrossConnectionName'", id.ExpressRouteCrossConnectionName, "expressRouteCrossConnectionValue") + } + + if id.PeeringName != "peeringValue" { + t.Fatalf("Expected %q but got %q for Segment 'PeeringName'", id.PeeringName, "peeringValue") + } + + if id.RouteTableName != "routeTableValue" { + t.Fatalf("Expected %q but got %q for Segment 'RouteTableName'", id.RouteTableName, "routeTableValue") + } +} + +func TestFormatExpressRouteCrossConnectionPeeringRouteTableID(t *testing.T) { + actual := NewExpressRouteCrossConnectionPeeringRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCrossConnectionValue", "peeringValue", "routeTableValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue/routeTables/routeTableValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseExpressRouteCrossConnectionPeeringRouteTableID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRouteCrossConnectionPeeringRouteTableId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue/routeTables", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue/routeTables/routeTableValue", + Expected: &ExpressRouteCrossConnectionPeeringRouteTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCrossConnectionName: "expressRouteCrossConnectionValue", + PeeringName: "peeringValue", + RouteTableName: "routeTableValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue/routeTables/routeTableValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRouteCrossConnectionPeeringRouteTableID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCrossConnectionName != v.Expected.ExpressRouteCrossConnectionName { + t.Fatalf("Expected %q but got %q for ExpressRouteCrossConnectionName", v.Expected.ExpressRouteCrossConnectionName, actual.ExpressRouteCrossConnectionName) + } + + if actual.PeeringName != v.Expected.PeeringName { + t.Fatalf("Expected %q but got %q for PeeringName", v.Expected.PeeringName, actual.PeeringName) + } + + if actual.RouteTableName != v.Expected.RouteTableName { + t.Fatalf("Expected %q but got %q for RouteTableName", v.Expected.RouteTableName, actual.RouteTableName) + } + + } +} + +func TestParseExpressRouteCrossConnectionPeeringRouteTableIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRouteCrossConnectionPeeringRouteTableId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE/pEeRiNgS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE/pEeRiNgS/pEeRiNgVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue/routeTables", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE/pEeRiNgS/pEeRiNgVaLuE/rOuTeTaBlEs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue/routeTables/routeTableValue", + Expected: &ExpressRouteCrossConnectionPeeringRouteTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCrossConnectionName: "expressRouteCrossConnectionValue", + PeeringName: "peeringValue", + RouteTableName: "routeTableValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue/routeTables/routeTableValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE/pEeRiNgS/pEeRiNgVaLuE/rOuTeTaBlEs/rOuTeTaBlEvAlUe", + Expected: &ExpressRouteCrossConnectionPeeringRouteTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRouteCrossConnectionName: "eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE", + PeeringName: "pEeRiNgVaLuE", + RouteTableName: "rOuTeTaBlEvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE/pEeRiNgS/pEeRiNgVaLuE/rOuTeTaBlEs/rOuTeTaBlEvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRouteCrossConnectionPeeringRouteTableIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCrossConnectionName != v.Expected.ExpressRouteCrossConnectionName { + t.Fatalf("Expected %q but got %q for ExpressRouteCrossConnectionName", v.Expected.ExpressRouteCrossConnectionName, actual.ExpressRouteCrossConnectionName) + } + + if actual.PeeringName != v.Expected.PeeringName { + t.Fatalf("Expected %q but got %q for PeeringName", v.Expected.PeeringName, actual.PeeringName) + } + + if actual.RouteTableName != v.Expected.RouteTableName { + t.Fatalf("Expected %q but got %q for RouteTableName", v.Expected.RouteTableName, actual.RouteTableName) + } + + } +} + +func TestSegmentsForExpressRouteCrossConnectionPeeringRouteTableId(t *testing.T) { + segments := ExpressRouteCrossConnectionPeeringRouteTableId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ExpressRouteCrossConnectionPeeringRouteTableId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/method_expressroutecrossconnectionslistroutestable.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/method_expressroutecrossconnectionslistroutestable.go new file mode 100644 index 00000000000..75e866bbea7 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/method_expressroutecrossconnectionslistroutestable.go @@ -0,0 +1,76 @@ +package expressroutecrossconnectionroutetable + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCrossConnectionsListRoutesTableOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *[]ExpressRouteCircuitRoutesTable +} + +type ExpressRouteCrossConnectionsListRoutesTableCompleteResult struct { + LatestHttpResponse *http.Response + Items []ExpressRouteCircuitRoutesTable +} + +// ExpressRouteCrossConnectionsListRoutesTable ... +func (c ExpressRouteCrossConnectionRouteTableClient) ExpressRouteCrossConnectionsListRoutesTable(ctx context.Context, id ExpressRouteCrossConnectionPeeringRouteTableId) (result ExpressRouteCrossConnectionsListRoutesTableOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// ExpressRouteCrossConnectionsListRoutesTableThenPoll performs ExpressRouteCrossConnectionsListRoutesTable then polls until it's completed +func (c ExpressRouteCrossConnectionRouteTableClient) ExpressRouteCrossConnectionsListRoutesTableThenPoll(ctx context.Context, id ExpressRouteCrossConnectionPeeringRouteTableId) error { + result, err := c.ExpressRouteCrossConnectionsListRoutesTable(ctx, id) + if err != nil { + return fmt.Errorf("performing ExpressRouteCrossConnectionsListRoutesTable: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after ExpressRouteCrossConnectionsListRoutesTable: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/model_expressroutecircuitroutestable.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/model_expressroutecircuitroutestable.go new file mode 100644 index 00000000000..4861d1c6ca2 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/model_expressroutecircuitroutestable.go @@ -0,0 +1,12 @@ +package expressroutecrossconnectionroutetable + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitRoutesTable struct { + LocPrf *string `json:"locPrf,omitempty"` + Network *string `json:"network,omitempty"` + NextHop *string `json:"nextHop,omitempty"` + Path *string `json:"path,omitempty"` + Weight *int64 `json:"weight,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/predicates.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/predicates.go new file mode 100644 index 00000000000..2f1a6174bb4 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/predicates.go @@ -0,0 +1,37 @@ +package expressroutecrossconnectionroutetable + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitRoutesTableOperationPredicate struct { + LocPrf *string + Network *string + NextHop *string + Path *string + Weight *int64 +} + +func (p ExpressRouteCircuitRoutesTableOperationPredicate) Matches(input ExpressRouteCircuitRoutesTable) bool { + + if p.LocPrf != nil && (input.LocPrf == nil || *p.LocPrf != *input.LocPrf) { + return false + } + + if p.Network != nil && (input.Network == nil || *p.Network != *input.Network) { + return false + } + + if p.NextHop != nil && (input.NextHop == nil || *p.NextHop != *input.NextHop) { + return false + } + + if p.Path != nil && (input.Path == nil || *p.Path != *input.Path) { + return false + } + + if p.Weight != nil && (input.Weight == nil || *p.Weight != *input.Weight) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/version.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/version.go new file mode 100644 index 00000000000..5826b5d8e31 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetable/version.go @@ -0,0 +1,12 @@ +package expressroutecrossconnectionroutetable + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/expressroutecrossconnectionroutetable/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/README.md b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/README.md new file mode 100644 index 00000000000..dc2cb07abaa --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/README.md @@ -0,0 +1,37 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary` Documentation + +The `expressroutecrossconnectionroutetablesummary` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary" +``` + + +### Client Initialization + +```go +client := expressroutecrossconnectionroutetablesummary.NewExpressRouteCrossConnectionRouteTableSummaryClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ExpressRouteCrossConnectionRouteTableSummaryClient.ExpressRouteCrossConnectionsListRoutesTableSummary` + +```go +ctx := context.TODO() +id := expressroutecrossconnectionroutetablesummary.NewPeeringRouteTablesSummaryID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCrossConnectionValue", "peeringValue", "routeTablesSummaryValue") + +// alternatively `client.ExpressRouteCrossConnectionsListRoutesTableSummary(ctx, id)` can be used to do batched pagination +items, err := client.ExpressRouteCrossConnectionsListRoutesTableSummaryComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/client.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/client.go new file mode 100644 index 00000000000..5329fa515af --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/client.go @@ -0,0 +1,26 @@ +package expressroutecrossconnectionroutetablesummary + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCrossConnectionRouteTableSummaryClient struct { + Client *resourcemanager.Client +} + +func NewExpressRouteCrossConnectionRouteTableSummaryClientWithBaseURI(sdkApi sdkEnv.Api) (*ExpressRouteCrossConnectionRouteTableSummaryClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "expressroutecrossconnectionroutetablesummary", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ExpressRouteCrossConnectionRouteTableSummaryClient: %+v", err) + } + + return &ExpressRouteCrossConnectionRouteTableSummaryClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/id_peeringroutetablessummary.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/id_peeringroutetablessummary.go new file mode 100644 index 00000000000..ea69383cd3a --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/id_peeringroutetablessummary.go @@ -0,0 +1,148 @@ +package expressroutecrossconnectionroutetablesummary + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&PeeringRouteTablesSummaryId{}) +} + +var _ resourceids.ResourceId = &PeeringRouteTablesSummaryId{} + +// PeeringRouteTablesSummaryId is a struct representing the Resource ID for a Peering Route Tables Summary +type PeeringRouteTablesSummaryId struct { + SubscriptionId string + ResourceGroupName string + ExpressRouteCrossConnectionName string + PeeringName string + RouteTablesSummaryName string +} + +// NewPeeringRouteTablesSummaryID returns a new PeeringRouteTablesSummaryId struct +func NewPeeringRouteTablesSummaryID(subscriptionId string, resourceGroupName string, expressRouteCrossConnectionName string, peeringName string, routeTablesSummaryName string) PeeringRouteTablesSummaryId { + return PeeringRouteTablesSummaryId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRouteCrossConnectionName: expressRouteCrossConnectionName, + PeeringName: peeringName, + RouteTablesSummaryName: routeTablesSummaryName, + } +} + +// ParsePeeringRouteTablesSummaryID parses 'input' into a PeeringRouteTablesSummaryId +func ParsePeeringRouteTablesSummaryID(input string) (*PeeringRouteTablesSummaryId, error) { + parser := resourceids.NewParserFromResourceIdType(&PeeringRouteTablesSummaryId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PeeringRouteTablesSummaryId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParsePeeringRouteTablesSummaryIDInsensitively parses 'input' case-insensitively into a PeeringRouteTablesSummaryId +// note: this method should only be used for API response data and not user input +func ParsePeeringRouteTablesSummaryIDInsensitively(input string) (*PeeringRouteTablesSummaryId, error) { + parser := resourceids.NewParserFromResourceIdType(&PeeringRouteTablesSummaryId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PeeringRouteTablesSummaryId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *PeeringRouteTablesSummaryId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRouteCrossConnectionName, ok = input.Parsed["expressRouteCrossConnectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRouteCrossConnectionName", input) + } + + if id.PeeringName, ok = input.Parsed["peeringName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "peeringName", input) + } + + if id.RouteTablesSummaryName, ok = input.Parsed["routeTablesSummaryName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "routeTablesSummaryName", input) + } + + return nil +} + +// ValidatePeeringRouteTablesSummaryID checks that 'input' can be parsed as a Peering Route Tables Summary ID +func ValidatePeeringRouteTablesSummaryID(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 := ParsePeeringRouteTablesSummaryID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Peering Route Tables Summary ID +func (id PeeringRouteTablesSummaryId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRouteCrossConnections/%s/peerings/%s/routeTablesSummary/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRouteCrossConnectionName, id.PeeringName, id.RouteTablesSummaryName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Peering Route Tables Summary ID +func (id PeeringRouteTablesSummaryId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRouteCrossConnections", "expressRouteCrossConnections", "expressRouteCrossConnections"), + resourceids.UserSpecifiedSegment("expressRouteCrossConnectionName", "expressRouteCrossConnectionValue"), + resourceids.StaticSegment("staticPeerings", "peerings", "peerings"), + resourceids.UserSpecifiedSegment("peeringName", "peeringValue"), + resourceids.StaticSegment("staticRouteTablesSummary", "routeTablesSummary", "routeTablesSummary"), + resourceids.UserSpecifiedSegment("routeTablesSummaryName", "routeTablesSummaryValue"), + } +} + +// String returns a human-readable description of this Peering Route Tables Summary ID +func (id PeeringRouteTablesSummaryId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Cross Connection Name: %q", id.ExpressRouteCrossConnectionName), + fmt.Sprintf("Peering Name: %q", id.PeeringName), + fmt.Sprintf("Route Tables Summary Name: %q", id.RouteTablesSummaryName), + } + return fmt.Sprintf("Peering Route Tables Summary (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/id_peeringroutetablessummary_test.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/id_peeringroutetablessummary_test.go new file mode 100644 index 00000000000..df9578d4e3b --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/id_peeringroutetablessummary_test.go @@ -0,0 +1,372 @@ +package expressroutecrossconnectionroutetablesummary + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &PeeringRouteTablesSummaryId{} + +func TestNewPeeringRouteTablesSummaryID(t *testing.T) { + id := NewPeeringRouteTablesSummaryID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCrossConnectionValue", "peeringValue", "routeTablesSummaryValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRouteCrossConnectionName != "expressRouteCrossConnectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRouteCrossConnectionName'", id.ExpressRouteCrossConnectionName, "expressRouteCrossConnectionValue") + } + + if id.PeeringName != "peeringValue" { + t.Fatalf("Expected %q but got %q for Segment 'PeeringName'", id.PeeringName, "peeringValue") + } + + if id.RouteTablesSummaryName != "routeTablesSummaryValue" { + t.Fatalf("Expected %q but got %q for Segment 'RouteTablesSummaryName'", id.RouteTablesSummaryName, "routeTablesSummaryValue") + } +} + +func TestFormatPeeringRouteTablesSummaryID(t *testing.T) { + actual := NewPeeringRouteTablesSummaryID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCrossConnectionValue", "peeringValue", "routeTablesSummaryValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue/routeTablesSummary/routeTablesSummaryValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParsePeeringRouteTablesSummaryID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PeeringRouteTablesSummaryId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue/routeTablesSummary", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue/routeTablesSummary/routeTablesSummaryValue", + Expected: &PeeringRouteTablesSummaryId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCrossConnectionName: "expressRouteCrossConnectionValue", + PeeringName: "peeringValue", + RouteTablesSummaryName: "routeTablesSummaryValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue/routeTablesSummary/routeTablesSummaryValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePeeringRouteTablesSummaryID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCrossConnectionName != v.Expected.ExpressRouteCrossConnectionName { + t.Fatalf("Expected %q but got %q for ExpressRouteCrossConnectionName", v.Expected.ExpressRouteCrossConnectionName, actual.ExpressRouteCrossConnectionName) + } + + if actual.PeeringName != v.Expected.PeeringName { + t.Fatalf("Expected %q but got %q for PeeringName", v.Expected.PeeringName, actual.PeeringName) + } + + if actual.RouteTablesSummaryName != v.Expected.RouteTablesSummaryName { + t.Fatalf("Expected %q but got %q for RouteTablesSummaryName", v.Expected.RouteTablesSummaryName, actual.RouteTablesSummaryName) + } + + } +} + +func TestParsePeeringRouteTablesSummaryIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PeeringRouteTablesSummaryId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE/pEeRiNgS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE/pEeRiNgS/pEeRiNgVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue/routeTablesSummary", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE/pEeRiNgS/pEeRiNgVaLuE/rOuTeTaBlEsSuMmArY", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue/routeTablesSummary/routeTablesSummaryValue", + Expected: &PeeringRouteTablesSummaryId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCrossConnectionName: "expressRouteCrossConnectionValue", + PeeringName: "peeringValue", + RouteTablesSummaryName: "routeTablesSummaryValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/peerings/peeringValue/routeTablesSummary/routeTablesSummaryValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE/pEeRiNgS/pEeRiNgVaLuE/rOuTeTaBlEsSuMmArY/rOuTeTaBlEsSuMmArYvAlUe", + Expected: &PeeringRouteTablesSummaryId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRouteCrossConnectionName: "eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE", + PeeringName: "pEeRiNgVaLuE", + RouteTablesSummaryName: "rOuTeTaBlEsSuMmArYvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE/pEeRiNgS/pEeRiNgVaLuE/rOuTeTaBlEsSuMmArY/rOuTeTaBlEsSuMmArYvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePeeringRouteTablesSummaryIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCrossConnectionName != v.Expected.ExpressRouteCrossConnectionName { + t.Fatalf("Expected %q but got %q for ExpressRouteCrossConnectionName", v.Expected.ExpressRouteCrossConnectionName, actual.ExpressRouteCrossConnectionName) + } + + if actual.PeeringName != v.Expected.PeeringName { + t.Fatalf("Expected %q but got %q for PeeringName", v.Expected.PeeringName, actual.PeeringName) + } + + if actual.RouteTablesSummaryName != v.Expected.RouteTablesSummaryName { + t.Fatalf("Expected %q but got %q for RouteTablesSummaryName", v.Expected.RouteTablesSummaryName, actual.RouteTablesSummaryName) + } + + } +} + +func TestSegmentsForPeeringRouteTablesSummaryId(t *testing.T) { + segments := PeeringRouteTablesSummaryId{}.Segments() + if len(segments) == 0 { + t.Fatalf("PeeringRouteTablesSummaryId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/method_expressroutecrossconnectionslistroutestablesummary.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/method_expressroutecrossconnectionslistroutestablesummary.go new file mode 100644 index 00000000000..06c63e507a1 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/method_expressroutecrossconnectionslistroutestablesummary.go @@ -0,0 +1,76 @@ +package expressroutecrossconnectionroutetablesummary + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCrossConnectionsListRoutesTableSummaryOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *[]ExpressRouteCrossConnectionRoutesTableSummary +} + +type ExpressRouteCrossConnectionsListRoutesTableSummaryCompleteResult struct { + LatestHttpResponse *http.Response + Items []ExpressRouteCrossConnectionRoutesTableSummary +} + +// ExpressRouteCrossConnectionsListRoutesTableSummary ... +func (c ExpressRouteCrossConnectionRouteTableSummaryClient) ExpressRouteCrossConnectionsListRoutesTableSummary(ctx context.Context, id PeeringRouteTablesSummaryId) (result ExpressRouteCrossConnectionsListRoutesTableSummaryOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// ExpressRouteCrossConnectionsListRoutesTableSummaryThenPoll performs ExpressRouteCrossConnectionsListRoutesTableSummary then polls until it's completed +func (c ExpressRouteCrossConnectionRouteTableSummaryClient) ExpressRouteCrossConnectionsListRoutesTableSummaryThenPoll(ctx context.Context, id PeeringRouteTablesSummaryId) error { + result, err := c.ExpressRouteCrossConnectionsListRoutesTableSummary(ctx, id) + if err != nil { + return fmt.Errorf("performing ExpressRouteCrossConnectionsListRoutesTableSummary: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after ExpressRouteCrossConnectionsListRoutesTableSummary: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/model_expressroutecrossconnectionroutestablesummary.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/model_expressroutecrossconnectionroutestablesummary.go new file mode 100644 index 00000000000..e13df051962 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/model_expressroutecrossconnectionroutestablesummary.go @@ -0,0 +1,11 @@ +package expressroutecrossconnectionroutetablesummary + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCrossConnectionRoutesTableSummary struct { + Asn *int64 `json:"asn,omitempty"` + Neighbor *string `json:"neighbor,omitempty"` + StateOrPrefixesReceived *string `json:"stateOrPrefixesReceived,omitempty"` + UpDown *string `json:"upDown,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/predicates.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/predicates.go new file mode 100644 index 00000000000..8399718cebc --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/predicates.go @@ -0,0 +1,32 @@ +package expressroutecrossconnectionroutetablesummary + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCrossConnectionRoutesTableSummaryOperationPredicate struct { + Asn *int64 + Neighbor *string + StateOrPrefixesReceived *string + UpDown *string +} + +func (p ExpressRouteCrossConnectionRoutesTableSummaryOperationPredicate) Matches(input ExpressRouteCrossConnectionRoutesTableSummary) bool { + + if p.Asn != nil && (input.Asn == nil || *p.Asn != *input.Asn) { + return false + } + + if p.Neighbor != nil && (input.Neighbor == nil || *p.Neighbor != *input.Neighbor) { + return false + } + + if p.StateOrPrefixesReceived != nil && (input.StateOrPrefixesReceived == nil || *p.StateOrPrefixesReceived != *input.StateOrPrefixesReceived) { + return false + } + + if p.UpDown != nil && (input.UpDown == nil || *p.UpDown != *input.UpDown) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/version.go b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/version.go new file mode 100644 index 00000000000..059137891f0 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnectionroutetablesummary/version.go @@ -0,0 +1,12 @@ +package expressroutecrossconnectionroutetablesummary + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/expressroutecrossconnectionroutetablesummary/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnections/README.md b/resource-manager/network/2024-01-01/expressroutecrossconnections/README.md new file mode 100644 index 00000000000..34cd29a14d1 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnections/README.md @@ -0,0 +1,109 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecrossconnections` Documentation + +The `expressroutecrossconnections` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutecrossconnections" +``` + + +### Client Initialization + +```go +client := expressroutecrossconnections.NewExpressRouteCrossConnectionsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ExpressRouteCrossConnectionsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := expressroutecrossconnections.NewExpressRouteCrossConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCrossConnectionValue") + +payload := expressroutecrossconnections.ExpressRouteCrossConnection{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `ExpressRouteCrossConnectionsClient.Get` + +```go +ctx := context.TODO() +id := expressroutecrossconnections.NewExpressRouteCrossConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCrossConnectionValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ExpressRouteCrossConnectionsClient.List` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.List(ctx, id, expressroutecrossconnections.DefaultListOperationOptions())` can be used to do batched pagination +items, err := client.ListComplete(ctx, id, expressroutecrossconnections.DefaultListOperationOptions()) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `ExpressRouteCrossConnectionsClient.ListByResourceGroup` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.ListByResourceGroup(ctx, id)` can be used to do batched pagination +items, err := client.ListByResourceGroupComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `ExpressRouteCrossConnectionsClient.UpdateTags` + +```go +ctx := context.TODO() +id := expressroutecrossconnections.NewExpressRouteCrossConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCrossConnectionValue") + +payload := expressroutecrossconnections.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnections/client.go b/resource-manager/network/2024-01-01/expressroutecrossconnections/client.go new file mode 100644 index 00000000000..67aa896c58d --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnections/client.go @@ -0,0 +1,26 @@ +package expressroutecrossconnections + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCrossConnectionsClient struct { + Client *resourcemanager.Client +} + +func NewExpressRouteCrossConnectionsClientWithBaseURI(sdkApi sdkEnv.Api) (*ExpressRouteCrossConnectionsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "expressroutecrossconnections", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ExpressRouteCrossConnectionsClient: %+v", err) + } + + return &ExpressRouteCrossConnectionsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnections/constants.go b/resource-manager/network/2024-01-01/expressroutecrossconnections/constants.go new file mode 100644 index 00000000000..2e9d3456d55 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnections/constants.go @@ -0,0 +1,277 @@ +package expressroutecrossconnections + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitPeeringAdvertisedPublicPrefixState string + +const ( + ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfigured ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "Configured" + ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfiguring ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "Configuring" + ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateNotConfigured ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "NotConfigured" + ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateValidationNeeded ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "ValidationNeeded" +) + +func PossibleValuesForExpressRouteCircuitPeeringAdvertisedPublicPrefixState() []string { + return []string{ + string(ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfigured), + string(ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfiguring), + string(ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateNotConfigured), + string(ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateValidationNeeded), + } +} + +func (s *ExpressRouteCircuitPeeringAdvertisedPublicPrefixState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRouteCircuitPeeringAdvertisedPublicPrefixState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRouteCircuitPeeringAdvertisedPublicPrefixState(input string) (*ExpressRouteCircuitPeeringAdvertisedPublicPrefixState, error) { + vals := map[string]ExpressRouteCircuitPeeringAdvertisedPublicPrefixState{ + "configured": ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfigured, + "configuring": ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfiguring, + "notconfigured": ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateNotConfigured, + "validationneeded": ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateValidationNeeded, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRouteCircuitPeeringAdvertisedPublicPrefixState(input) + return &out, nil +} + +type ExpressRouteCircuitPeeringState string + +const ( + ExpressRouteCircuitPeeringStateDisabled ExpressRouteCircuitPeeringState = "Disabled" + ExpressRouteCircuitPeeringStateEnabled ExpressRouteCircuitPeeringState = "Enabled" +) + +func PossibleValuesForExpressRouteCircuitPeeringState() []string { + return []string{ + string(ExpressRouteCircuitPeeringStateDisabled), + string(ExpressRouteCircuitPeeringStateEnabled), + } +} + +func (s *ExpressRouteCircuitPeeringState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRouteCircuitPeeringState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRouteCircuitPeeringState(input string) (*ExpressRouteCircuitPeeringState, error) { + vals := map[string]ExpressRouteCircuitPeeringState{ + "disabled": ExpressRouteCircuitPeeringStateDisabled, + "enabled": ExpressRouteCircuitPeeringStateEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRouteCircuitPeeringState(input) + return &out, nil +} + +type ExpressRoutePeeringState string + +const ( + ExpressRoutePeeringStateDisabled ExpressRoutePeeringState = "Disabled" + ExpressRoutePeeringStateEnabled ExpressRoutePeeringState = "Enabled" +) + +func PossibleValuesForExpressRoutePeeringState() []string { + return []string{ + string(ExpressRoutePeeringStateDisabled), + string(ExpressRoutePeeringStateEnabled), + } +} + +func (s *ExpressRoutePeeringState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRoutePeeringState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRoutePeeringState(input string) (*ExpressRoutePeeringState, error) { + vals := map[string]ExpressRoutePeeringState{ + "disabled": ExpressRoutePeeringStateDisabled, + "enabled": ExpressRoutePeeringStateEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRoutePeeringState(input) + return &out, nil +} + +type ExpressRoutePeeringType string + +const ( + ExpressRoutePeeringTypeAzurePrivatePeering ExpressRoutePeeringType = "AzurePrivatePeering" + ExpressRoutePeeringTypeAzurePublicPeering ExpressRoutePeeringType = "AzurePublicPeering" + ExpressRoutePeeringTypeMicrosoftPeering ExpressRoutePeeringType = "MicrosoftPeering" +) + +func PossibleValuesForExpressRoutePeeringType() []string { + return []string{ + string(ExpressRoutePeeringTypeAzurePrivatePeering), + string(ExpressRoutePeeringTypeAzurePublicPeering), + string(ExpressRoutePeeringTypeMicrosoftPeering), + } +} + +func (s *ExpressRoutePeeringType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRoutePeeringType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRoutePeeringType(input string) (*ExpressRoutePeeringType, error) { + vals := map[string]ExpressRoutePeeringType{ + "azureprivatepeering": ExpressRoutePeeringTypeAzurePrivatePeering, + "azurepublicpeering": ExpressRoutePeeringTypeAzurePublicPeering, + "microsoftpeering": ExpressRoutePeeringTypeMicrosoftPeering, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRoutePeeringType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type ServiceProviderProvisioningState string + +const ( + ServiceProviderProvisioningStateDeprovisioning ServiceProviderProvisioningState = "Deprovisioning" + ServiceProviderProvisioningStateNotProvisioned ServiceProviderProvisioningState = "NotProvisioned" + ServiceProviderProvisioningStateProvisioned ServiceProviderProvisioningState = "Provisioned" + ServiceProviderProvisioningStateProvisioning ServiceProviderProvisioningState = "Provisioning" +) + +func PossibleValuesForServiceProviderProvisioningState() []string { + return []string{ + string(ServiceProviderProvisioningStateDeprovisioning), + string(ServiceProviderProvisioningStateNotProvisioned), + string(ServiceProviderProvisioningStateProvisioned), + string(ServiceProviderProvisioningStateProvisioning), + } +} + +func (s *ServiceProviderProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseServiceProviderProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseServiceProviderProvisioningState(input string) (*ServiceProviderProvisioningState, error) { + vals := map[string]ServiceProviderProvisioningState{ + "deprovisioning": ServiceProviderProvisioningStateDeprovisioning, + "notprovisioned": ServiceProviderProvisioningStateNotProvisioned, + "provisioned": ServiceProviderProvisioningStateProvisioned, + "provisioning": ServiceProviderProvisioningStateProvisioning, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ServiceProviderProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnections/id_expressroutecrossconnection.go b/resource-manager/network/2024-01-01/expressroutecrossconnections/id_expressroutecrossconnection.go new file mode 100644 index 00000000000..3748db0d3a2 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnections/id_expressroutecrossconnection.go @@ -0,0 +1,130 @@ +package expressroutecrossconnections + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ExpressRouteCrossConnectionId{}) +} + +var _ resourceids.ResourceId = &ExpressRouteCrossConnectionId{} + +// ExpressRouteCrossConnectionId is a struct representing the Resource ID for a Express Route Cross Connection +type ExpressRouteCrossConnectionId struct { + SubscriptionId string + ResourceGroupName string + ExpressRouteCrossConnectionName string +} + +// NewExpressRouteCrossConnectionID returns a new ExpressRouteCrossConnectionId struct +func NewExpressRouteCrossConnectionID(subscriptionId string, resourceGroupName string, expressRouteCrossConnectionName string) ExpressRouteCrossConnectionId { + return ExpressRouteCrossConnectionId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRouteCrossConnectionName: expressRouteCrossConnectionName, + } +} + +// ParseExpressRouteCrossConnectionID parses 'input' into a ExpressRouteCrossConnectionId +func ParseExpressRouteCrossConnectionID(input string) (*ExpressRouteCrossConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRouteCrossConnectionId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRouteCrossConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseExpressRouteCrossConnectionIDInsensitively parses 'input' case-insensitively into a ExpressRouteCrossConnectionId +// note: this method should only be used for API response data and not user input +func ParseExpressRouteCrossConnectionIDInsensitively(input string) (*ExpressRouteCrossConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRouteCrossConnectionId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRouteCrossConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ExpressRouteCrossConnectionId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRouteCrossConnectionName, ok = input.Parsed["expressRouteCrossConnectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRouteCrossConnectionName", input) + } + + return nil +} + +// ValidateExpressRouteCrossConnectionID checks that 'input' can be parsed as a Express Route Cross Connection ID +func ValidateExpressRouteCrossConnectionID(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 := ParseExpressRouteCrossConnectionID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Express Route Cross Connection ID +func (id ExpressRouteCrossConnectionId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRouteCrossConnections/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRouteCrossConnectionName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Express Route Cross Connection ID +func (id ExpressRouteCrossConnectionId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRouteCrossConnections", "expressRouteCrossConnections", "expressRouteCrossConnections"), + resourceids.UserSpecifiedSegment("expressRouteCrossConnectionName", "expressRouteCrossConnectionValue"), + } +} + +// String returns a human-readable description of this Express Route Cross Connection ID +func (id ExpressRouteCrossConnectionId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Cross Connection Name: %q", id.ExpressRouteCrossConnectionName), + } + return fmt.Sprintf("Express Route Cross Connection (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnections/id_expressroutecrossconnection_test.go b/resource-manager/network/2024-01-01/expressroutecrossconnections/id_expressroutecrossconnection_test.go new file mode 100644 index 00000000000..6fd5722f1a8 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnections/id_expressroutecrossconnection_test.go @@ -0,0 +1,282 @@ +package expressroutecrossconnections + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ExpressRouteCrossConnectionId{} + +func TestNewExpressRouteCrossConnectionID(t *testing.T) { + id := NewExpressRouteCrossConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCrossConnectionValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRouteCrossConnectionName != "expressRouteCrossConnectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRouteCrossConnectionName'", id.ExpressRouteCrossConnectionName, "expressRouteCrossConnectionValue") + } +} + +func TestFormatExpressRouteCrossConnectionID(t *testing.T) { + actual := NewExpressRouteCrossConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCrossConnectionValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseExpressRouteCrossConnectionID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRouteCrossConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue", + Expected: &ExpressRouteCrossConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCrossConnectionName: "expressRouteCrossConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRouteCrossConnectionID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCrossConnectionName != v.Expected.ExpressRouteCrossConnectionName { + t.Fatalf("Expected %q but got %q for ExpressRouteCrossConnectionName", v.Expected.ExpressRouteCrossConnectionName, actual.ExpressRouteCrossConnectionName) + } + + } +} + +func TestParseExpressRouteCrossConnectionIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRouteCrossConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue", + Expected: &ExpressRouteCrossConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCrossConnectionName: "expressRouteCrossConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCrossConnections/expressRouteCrossConnectionValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE", + Expected: &ExpressRouteCrossConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRouteCrossConnectionName: "eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcRoSsCoNnEcTiOnS/eXpReSsRoUtEcRoSsCoNnEcTiOnVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRouteCrossConnectionIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCrossConnectionName != v.Expected.ExpressRouteCrossConnectionName { + t.Fatalf("Expected %q but got %q for ExpressRouteCrossConnectionName", v.Expected.ExpressRouteCrossConnectionName, actual.ExpressRouteCrossConnectionName) + } + + } +} + +func TestSegmentsForExpressRouteCrossConnectionId(t *testing.T) { + segments := ExpressRouteCrossConnectionId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ExpressRouteCrossConnectionId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnections/method_createorupdate.go b/resource-manager/network/2024-01-01/expressroutecrossconnections/method_createorupdate.go new file mode 100644 index 00000000000..bc67ec4a5f8 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnections/method_createorupdate.go @@ -0,0 +1,74 @@ +package expressroutecrossconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteCrossConnection +} + +// CreateOrUpdate ... +func (c ExpressRouteCrossConnectionsClient) CreateOrUpdate(ctx context.Context, id ExpressRouteCrossConnectionId, input ExpressRouteCrossConnection) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c ExpressRouteCrossConnectionsClient) CreateOrUpdateThenPoll(ctx context.Context, id ExpressRouteCrossConnectionId, input ExpressRouteCrossConnection) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnections/method_get.go b/resource-manager/network/2024-01-01/expressroutecrossconnections/method_get.go new file mode 100644 index 00000000000..250556ca005 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnections/method_get.go @@ -0,0 +1,54 @@ +package expressroutecrossconnections + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteCrossConnection +} + +// Get ... +func (c ExpressRouteCrossConnectionsClient) Get(ctx context.Context, id ExpressRouteCrossConnectionId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ExpressRouteCrossConnection + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnections/method_list.go b/resource-manager/network/2024-01-01/expressroutecrossconnections/method_list.go new file mode 100644 index 00000000000..7b85f881c69 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnections/method_list.go @@ -0,0 +1,121 @@ +package expressroutecrossconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ExpressRouteCrossConnection +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []ExpressRouteCrossConnection +} + +type ListOperationOptions struct { + Filter *string +} + +func DefaultListOperationOptions() ListOperationOptions { + return ListOperationOptions{} +} + +func (o ListOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o ListOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o ListOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Filter != nil { + out.Append("$filter", fmt.Sprintf("%v", *o.Filter)) + } + return &out +} + +// List ... +func (c ExpressRouteCrossConnectionsClient) List(ctx context.Context, id commonids.SubscriptionId, options ListOperationOptions) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/expressRouteCrossConnections", id.ID()), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ExpressRouteCrossConnection `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c ExpressRouteCrossConnectionsClient) ListComplete(ctx context.Context, id commonids.SubscriptionId, options ListOperationOptions) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, options, ExpressRouteCrossConnectionOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ExpressRouteCrossConnectionsClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, options ListOperationOptions, predicate ExpressRouteCrossConnectionOperationPredicate) (result ListCompleteResult, err error) { + items := make([]ExpressRouteCrossConnection, 0) + + resp, err := c.List(ctx, id, options) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnections/method_listbyresourcegroup.go b/resource-manager/network/2024-01-01/expressroutecrossconnections/method_listbyresourcegroup.go new file mode 100644 index 00000000000..77daf2aa898 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnections/method_listbyresourcegroup.go @@ -0,0 +1,93 @@ +package expressroutecrossconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListByResourceGroupOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ExpressRouteCrossConnection +} + +type ListByResourceGroupCompleteResult struct { + LatestHttpResponse *http.Response + Items []ExpressRouteCrossConnection +} + +// ListByResourceGroup ... +func (c ExpressRouteCrossConnectionsClient) ListByResourceGroup(ctx context.Context, id commonids.ResourceGroupId) (result ListByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/expressRouteCrossConnections", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ExpressRouteCrossConnection `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListByResourceGroupComplete retrieves all the results into a single object +func (c ExpressRouteCrossConnectionsClient) ListByResourceGroupComplete(ctx context.Context, id commonids.ResourceGroupId) (ListByResourceGroupCompleteResult, error) { + return c.ListByResourceGroupCompleteMatchingPredicate(ctx, id, ExpressRouteCrossConnectionOperationPredicate{}) +} + +// ListByResourceGroupCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ExpressRouteCrossConnectionsClient) ListByResourceGroupCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate ExpressRouteCrossConnectionOperationPredicate) (result ListByResourceGroupCompleteResult, err error) { + items := make([]ExpressRouteCrossConnection, 0) + + resp, err := c.ListByResourceGroup(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListByResourceGroupCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnections/method_updatetags.go b/resource-manager/network/2024-01-01/expressroutecrossconnections/method_updatetags.go new file mode 100644 index 00000000000..0c627c7653a --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnections/method_updatetags.go @@ -0,0 +1,58 @@ +package expressroutecrossconnections + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteCrossConnection +} + +// UpdateTags ... +func (c ExpressRouteCrossConnectionsClient) UpdateTags(ctx context.Context, id ExpressRouteCrossConnectionId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ExpressRouteCrossConnection + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnections/model_expressroutecircuitpeeringconfig.go b/resource-manager/network/2024-01-01/expressroutecrossconnections/model_expressroutecircuitpeeringconfig.go new file mode 100644 index 00000000000..08d50c826a9 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnections/model_expressroutecircuitpeeringconfig.go @@ -0,0 +1,13 @@ +package expressroutecrossconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitPeeringConfig struct { + AdvertisedCommunities *[]string `json:"advertisedCommunities,omitempty"` + AdvertisedPublicPrefixes *[]string `json:"advertisedPublicPrefixes,omitempty"` + AdvertisedPublicPrefixesState *ExpressRouteCircuitPeeringAdvertisedPublicPrefixState `json:"advertisedPublicPrefixesState,omitempty"` + CustomerASN *int64 `json:"customerASN,omitempty"` + LegacyMode *int64 `json:"legacyMode,omitempty"` + RoutingRegistryName *string `json:"routingRegistryName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnections/model_expressroutecircuitreference.go b/resource-manager/network/2024-01-01/expressroutecrossconnections/model_expressroutecircuitreference.go new file mode 100644 index 00000000000..cbf4167bab5 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnections/model_expressroutecircuitreference.go @@ -0,0 +1,8 @@ +package expressroutecrossconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitReference struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnections/model_expressroutecrossconnection.go b/resource-manager/network/2024-01-01/expressroutecrossconnections/model_expressroutecrossconnection.go new file mode 100644 index 00000000000..52da62754ff --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnections/model_expressroutecrossconnection.go @@ -0,0 +1,14 @@ +package expressroutecrossconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCrossConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ExpressRouteCrossConnectionProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnections/model_expressroutecrossconnectionpeering.go b/resource-manager/network/2024-01-01/expressroutecrossconnections/model_expressroutecrossconnectionpeering.go new file mode 100644 index 00000000000..e207a422215 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnections/model_expressroutecrossconnectionpeering.go @@ -0,0 +1,11 @@ +package expressroutecrossconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCrossConnectionPeering struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ExpressRouteCrossConnectionPeeringProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnections/model_expressroutecrossconnectionpeeringproperties.go b/resource-manager/network/2024-01-01/expressroutecrossconnections/model_expressroutecrossconnectionpeeringproperties.go new file mode 100644 index 00000000000..0d9a1673538 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnections/model_expressroutecrossconnectionpeeringproperties.go @@ -0,0 +1,22 @@ +package expressroutecrossconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCrossConnectionPeeringProperties struct { + AzureASN *int64 `json:"azureASN,omitempty"` + GatewayManagerEtag *string `json:"gatewayManagerEtag,omitempty"` + IPv6PeeringConfig *IPv6ExpressRouteCircuitPeeringConfig `json:"ipv6PeeringConfig,omitempty"` + LastModifiedBy *string `json:"lastModifiedBy,omitempty"` + MicrosoftPeeringConfig *ExpressRouteCircuitPeeringConfig `json:"microsoftPeeringConfig,omitempty"` + PeerASN *int64 `json:"peerASN,omitempty"` + PeeringType *ExpressRoutePeeringType `json:"peeringType,omitempty"` + PrimaryAzurePort *string `json:"primaryAzurePort,omitempty"` + PrimaryPeerAddressPrefix *string `json:"primaryPeerAddressPrefix,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SecondaryAzurePort *string `json:"secondaryAzurePort,omitempty"` + SecondaryPeerAddressPrefix *string `json:"secondaryPeerAddressPrefix,omitempty"` + SharedKey *string `json:"sharedKey,omitempty"` + State *ExpressRoutePeeringState `json:"state,omitempty"` + VlanId *int64 `json:"vlanId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnections/model_expressroutecrossconnectionproperties.go b/resource-manager/network/2024-01-01/expressroutecrossconnections/model_expressroutecrossconnectionproperties.go new file mode 100644 index 00000000000..84515d8082c --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnections/model_expressroutecrossconnectionproperties.go @@ -0,0 +1,17 @@ +package expressroutecrossconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCrossConnectionProperties struct { + BandwidthInMbps *int64 `json:"bandwidthInMbps,omitempty"` + ExpressRouteCircuit *ExpressRouteCircuitReference `json:"expressRouteCircuit,omitempty"` + PeeringLocation *string `json:"peeringLocation,omitempty"` + Peerings *[]ExpressRouteCrossConnectionPeering `json:"peerings,omitempty"` + PrimaryAzurePort *string `json:"primaryAzurePort,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + STag *int64 `json:"sTag,omitempty"` + SecondaryAzurePort *string `json:"secondaryAzurePort,omitempty"` + ServiceProviderNotes *string `json:"serviceProviderNotes,omitempty"` + ServiceProviderProvisioningState *ServiceProviderProvisioningState `json:"serviceProviderProvisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnections/model_ipv6expressroutecircuitpeeringconfig.go b/resource-manager/network/2024-01-01/expressroutecrossconnections/model_ipv6expressroutecircuitpeeringconfig.go new file mode 100644 index 00000000000..0101ae80d9e --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnections/model_ipv6expressroutecircuitpeeringconfig.go @@ -0,0 +1,12 @@ +package expressroutecrossconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPv6ExpressRouteCircuitPeeringConfig struct { + MicrosoftPeeringConfig *ExpressRouteCircuitPeeringConfig `json:"microsoftPeeringConfig,omitempty"` + PrimaryPeerAddressPrefix *string `json:"primaryPeerAddressPrefix,omitempty"` + RouteFilter *SubResource `json:"routeFilter,omitempty"` + SecondaryPeerAddressPrefix *string `json:"secondaryPeerAddressPrefix,omitempty"` + State *ExpressRouteCircuitPeeringState `json:"state,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnections/model_subresource.go b/resource-manager/network/2024-01-01/expressroutecrossconnections/model_subresource.go new file mode 100644 index 00000000000..b2922ebb4d1 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnections/model_subresource.go @@ -0,0 +1,8 @@ +package expressroutecrossconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnections/model_tagsobject.go b/resource-manager/network/2024-01-01/expressroutecrossconnections/model_tagsobject.go new file mode 100644 index 00000000000..f47ce1a3f42 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnections/model_tagsobject.go @@ -0,0 +1,8 @@ +package expressroutecrossconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnections/predicates.go b/resource-manager/network/2024-01-01/expressroutecrossconnections/predicates.go new file mode 100644 index 00000000000..f3d9b3a8dff --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnections/predicates.go @@ -0,0 +1,37 @@ +package expressroutecrossconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCrossConnectionOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p ExpressRouteCrossConnectionOperationPredicate) Matches(input ExpressRouteCrossConnection) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/expressroutecrossconnections/version.go b/resource-manager/network/2024-01-01/expressroutecrossconnections/version.go new file mode 100644 index 00000000000..7097b6015fd --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutecrossconnections/version.go @@ -0,0 +1,12 @@ +package expressroutecrossconnections + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/expressroutecrossconnections/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/README.md b/resource-manager/network/2024-01-01/expressroutegateways/README.md new file mode 100644 index 00000000000..b24e536c464 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/README.md @@ -0,0 +1,115 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutegateways` Documentation + +The `expressroutegateways` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutegateways" +``` + + +### Client Initialization + +```go +client := expressroutegateways.NewExpressRouteGatewaysClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ExpressRouteGatewaysClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := expressroutegateways.NewExpressRouteGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteGatewayValue") + +payload := expressroutegateways.ExpressRouteGateway{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `ExpressRouteGatewaysClient.Delete` + +```go +ctx := context.TODO() +id := expressroutegateways.NewExpressRouteGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteGatewayValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `ExpressRouteGatewaysClient.Get` + +```go +ctx := context.TODO() +id := expressroutegateways.NewExpressRouteGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteGatewayValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ExpressRouteGatewaysClient.ListByResourceGroup` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +read, err := client.ListByResourceGroup(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ExpressRouteGatewaysClient.ListBySubscription` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +read, err := client.ListBySubscription(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ExpressRouteGatewaysClient.UpdateTags` + +```go +ctx := context.TODO() +id := expressroutegateways.NewExpressRouteGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteGatewayValue") + +payload := expressroutegateways.TagsObject{ + // ... +} + + +if err := client.UpdateTagsThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` diff --git a/resource-manager/network/2024-01-01/expressroutegateways/client.go b/resource-manager/network/2024-01-01/expressroutegateways/client.go new file mode 100644 index 00000000000..a1f21a852ef --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/client.go @@ -0,0 +1,26 @@ +package expressroutegateways + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteGatewaysClient struct { + Client *resourcemanager.Client +} + +func NewExpressRouteGatewaysClientWithBaseURI(sdkApi sdkEnv.Api) (*ExpressRouteGatewaysClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "expressroutegateways", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ExpressRouteGatewaysClient: %+v", err) + } + + return &ExpressRouteGatewaysClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/constants.go b/resource-manager/network/2024-01-01/expressroutegateways/constants.go new file mode 100644 index 00000000000..ce8f5d5f24a --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/constants.go @@ -0,0 +1,98 @@ +package expressroutegateways + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type VnetLocalRouteOverrideCriteria string + +const ( + VnetLocalRouteOverrideCriteriaContains VnetLocalRouteOverrideCriteria = "Contains" + VnetLocalRouteOverrideCriteriaEqual VnetLocalRouteOverrideCriteria = "Equal" +) + +func PossibleValuesForVnetLocalRouteOverrideCriteria() []string { + return []string{ + string(VnetLocalRouteOverrideCriteriaContains), + string(VnetLocalRouteOverrideCriteriaEqual), + } +} + +func (s *VnetLocalRouteOverrideCriteria) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVnetLocalRouteOverrideCriteria(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVnetLocalRouteOverrideCriteria(input string) (*VnetLocalRouteOverrideCriteria, error) { + vals := map[string]VnetLocalRouteOverrideCriteria{ + "contains": VnetLocalRouteOverrideCriteriaContains, + "equal": VnetLocalRouteOverrideCriteriaEqual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VnetLocalRouteOverrideCriteria(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/id_expressroutegateway.go b/resource-manager/network/2024-01-01/expressroutegateways/id_expressroutegateway.go new file mode 100644 index 00000000000..0e06d43d298 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/id_expressroutegateway.go @@ -0,0 +1,130 @@ +package expressroutegateways + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ExpressRouteGatewayId{}) +} + +var _ resourceids.ResourceId = &ExpressRouteGatewayId{} + +// ExpressRouteGatewayId is a struct representing the Resource ID for a Express Route Gateway +type ExpressRouteGatewayId struct { + SubscriptionId string + ResourceGroupName string + ExpressRouteGatewayName string +} + +// NewExpressRouteGatewayID returns a new ExpressRouteGatewayId struct +func NewExpressRouteGatewayID(subscriptionId string, resourceGroupName string, expressRouteGatewayName string) ExpressRouteGatewayId { + return ExpressRouteGatewayId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRouteGatewayName: expressRouteGatewayName, + } +} + +// ParseExpressRouteGatewayID parses 'input' into a ExpressRouteGatewayId +func ParseExpressRouteGatewayID(input string) (*ExpressRouteGatewayId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRouteGatewayId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRouteGatewayId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseExpressRouteGatewayIDInsensitively parses 'input' case-insensitively into a ExpressRouteGatewayId +// note: this method should only be used for API response data and not user input +func ParseExpressRouteGatewayIDInsensitively(input string) (*ExpressRouteGatewayId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRouteGatewayId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRouteGatewayId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ExpressRouteGatewayId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRouteGatewayName, ok = input.Parsed["expressRouteGatewayName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRouteGatewayName", input) + } + + return nil +} + +// ValidateExpressRouteGatewayID checks that 'input' can be parsed as a Express Route Gateway ID +func ValidateExpressRouteGatewayID(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 := ParseExpressRouteGatewayID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Express Route Gateway ID +func (id ExpressRouteGatewayId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRouteGateways/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRouteGatewayName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Express Route Gateway ID +func (id ExpressRouteGatewayId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRouteGateways", "expressRouteGateways", "expressRouteGateways"), + resourceids.UserSpecifiedSegment("expressRouteGatewayName", "expressRouteGatewayValue"), + } +} + +// String returns a human-readable description of this Express Route Gateway ID +func (id ExpressRouteGatewayId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Gateway Name: %q", id.ExpressRouteGatewayName), + } + return fmt.Sprintf("Express Route Gateway (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/id_expressroutegateway_test.go b/resource-manager/network/2024-01-01/expressroutegateways/id_expressroutegateway_test.go new file mode 100644 index 00000000000..cdb895a55c3 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/id_expressroutegateway_test.go @@ -0,0 +1,282 @@ +package expressroutegateways + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ExpressRouteGatewayId{} + +func TestNewExpressRouteGatewayID(t *testing.T) { + id := NewExpressRouteGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteGatewayValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRouteGatewayName != "expressRouteGatewayValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRouteGatewayName'", id.ExpressRouteGatewayName, "expressRouteGatewayValue") + } +} + +func TestFormatExpressRouteGatewayID(t *testing.T) { + actual := NewExpressRouteGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteGatewayValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways/expressRouteGatewayValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseExpressRouteGatewayID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRouteGatewayId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways/expressRouteGatewayValue", + Expected: &ExpressRouteGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteGatewayName: "expressRouteGatewayValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways/expressRouteGatewayValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRouteGatewayID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteGatewayName != v.Expected.ExpressRouteGatewayName { + t.Fatalf("Expected %q but got %q for ExpressRouteGatewayName", v.Expected.ExpressRouteGatewayName, actual.ExpressRouteGatewayName) + } + + } +} + +func TestParseExpressRouteGatewayIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRouteGatewayId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEgAtEwAyS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways/expressRouteGatewayValue", + Expected: &ExpressRouteGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteGatewayName: "expressRouteGatewayValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteGateways/expressRouteGatewayValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEgAtEwAyS/eXpReSsRoUtEgAtEwAyVaLuE", + Expected: &ExpressRouteGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRouteGatewayName: "eXpReSsRoUtEgAtEwAyVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEgAtEwAyS/eXpReSsRoUtEgAtEwAyVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRouteGatewayIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteGatewayName != v.Expected.ExpressRouteGatewayName { + t.Fatalf("Expected %q but got %q for ExpressRouteGatewayName", v.Expected.ExpressRouteGatewayName, actual.ExpressRouteGatewayName) + } + + } +} + +func TestSegmentsForExpressRouteGatewayId(t *testing.T) { + segments := ExpressRouteGatewayId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ExpressRouteGatewayId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/method_createorupdate.go b/resource-manager/network/2024-01-01/expressroutegateways/method_createorupdate.go new file mode 100644 index 00000000000..b02bd6b5ebb --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/method_createorupdate.go @@ -0,0 +1,75 @@ +package expressroutegateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteGateway +} + +// CreateOrUpdate ... +func (c ExpressRouteGatewaysClient) CreateOrUpdate(ctx context.Context, id ExpressRouteGatewayId, input ExpressRouteGateway) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c ExpressRouteGatewaysClient) CreateOrUpdateThenPoll(ctx context.Context, id ExpressRouteGatewayId, input ExpressRouteGateway) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/method_delete.go b/resource-manager/network/2024-01-01/expressroutegateways/method_delete.go new file mode 100644 index 00000000000..200f12cef03 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/method_delete.go @@ -0,0 +1,71 @@ +package expressroutegateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c ExpressRouteGatewaysClient) Delete(ctx context.Context, id ExpressRouteGatewayId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c ExpressRouteGatewaysClient) DeleteThenPoll(ctx context.Context, id ExpressRouteGatewayId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/method_get.go b/resource-manager/network/2024-01-01/expressroutegateways/method_get.go new file mode 100644 index 00000000000..74f38c464bb --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/method_get.go @@ -0,0 +1,54 @@ +package expressroutegateways + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteGateway +} + +// Get ... +func (c ExpressRouteGatewaysClient) Get(ctx context.Context, id ExpressRouteGatewayId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ExpressRouteGateway + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/method_listbyresourcegroup.go b/resource-manager/network/2024-01-01/expressroutegateways/method_listbyresourcegroup.go new file mode 100644 index 00000000000..4676a67757a --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/method_listbyresourcegroup.go @@ -0,0 +1,56 @@ +package expressroutegateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListByResourceGroupOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteGatewayList +} + +// ListByResourceGroup ... +func (c ExpressRouteGatewaysClient) ListByResourceGroup(ctx context.Context, id commonids.ResourceGroupId) (result ListByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/expressRouteGateways", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ExpressRouteGatewayList + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/method_listbysubscription.go b/resource-manager/network/2024-01-01/expressroutegateways/method_listbysubscription.go new file mode 100644 index 00000000000..ba74ca537ae --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/method_listbysubscription.go @@ -0,0 +1,56 @@ +package expressroutegateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListBySubscriptionOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteGatewayList +} + +// ListBySubscription ... +func (c ExpressRouteGatewaysClient) ListBySubscription(ctx context.Context, id commonids.SubscriptionId) (result ListBySubscriptionOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/expressRouteGateways", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ExpressRouteGatewayList + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/method_updatetags.go b/resource-manager/network/2024-01-01/expressroutegateways/method_updatetags.go new file mode 100644 index 00000000000..26c61ce6010 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/method_updatetags.go @@ -0,0 +1,75 @@ +package expressroutegateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteGateway +} + +// UpdateTags ... +func (c ExpressRouteGatewaysClient) UpdateTags(ctx context.Context, id ExpressRouteGatewayId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// UpdateTagsThenPoll performs UpdateTags then polls until it's completed +func (c ExpressRouteGatewaysClient) UpdateTagsThenPoll(ctx context.Context, id ExpressRouteGatewayId, input TagsObject) error { + result, err := c.UpdateTags(ctx, id, input) + if err != nil { + return fmt.Errorf("performing UpdateTags: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after UpdateTags: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/model_expressroutecircuitpeeringid.go b/resource-manager/network/2024-01-01/expressroutegateways/model_expressroutecircuitpeeringid.go new file mode 100644 index 00000000000..832d97a1174 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/model_expressroutecircuitpeeringid.go @@ -0,0 +1,8 @@ +package expressroutegateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitPeeringId struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/model_expressrouteconnection.go b/resource-manager/network/2024-01-01/expressroutegateways/model_expressrouteconnection.go new file mode 100644 index 00000000000..99219dd6cfd --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/model_expressrouteconnection.go @@ -0,0 +1,10 @@ +package expressroutegateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteConnection struct { + Id *string `json:"id,omitempty"` + Name string `json:"name"` + Properties *ExpressRouteConnectionProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/model_expressrouteconnectionproperties.go b/resource-manager/network/2024-01-01/expressroutegateways/model_expressrouteconnectionproperties.go new file mode 100644 index 00000000000..931b412129f --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/model_expressrouteconnectionproperties.go @@ -0,0 +1,15 @@ +package expressroutegateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteConnectionProperties struct { + AuthorizationKey *string `json:"authorizationKey,omitempty"` + EnableInternetSecurity *bool `json:"enableInternetSecurity,omitempty"` + EnablePrivateLinkFastPath *bool `json:"enablePrivateLinkFastPath,omitempty"` + ExpressRouteCircuitPeering ExpressRouteCircuitPeeringId `json:"expressRouteCircuitPeering"` + ExpressRouteGatewayBypass *bool `json:"expressRouteGatewayBypass,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RoutingConfiguration *RoutingConfiguration `json:"routingConfiguration,omitempty"` + RoutingWeight *int64 `json:"routingWeight,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/model_expressroutegateway.go b/resource-manager/network/2024-01-01/expressroutegateways/model_expressroutegateway.go new file mode 100644 index 00000000000..5505ff540a8 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/model_expressroutegateway.go @@ -0,0 +1,14 @@ +package expressroutegateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ExpressRouteGatewayProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/model_expressroutegatewaylist.go b/resource-manager/network/2024-01-01/expressroutegateways/model_expressroutegatewaylist.go new file mode 100644 index 00000000000..51667424380 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/model_expressroutegatewaylist.go @@ -0,0 +1,8 @@ +package expressroutegateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteGatewayList struct { + Value *[]ExpressRouteGateway `json:"value,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/model_expressroutegatewayproperties.go b/resource-manager/network/2024-01-01/expressroutegateways/model_expressroutegatewayproperties.go new file mode 100644 index 00000000000..4860e7d555a --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/model_expressroutegatewayproperties.go @@ -0,0 +1,12 @@ +package expressroutegateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteGatewayProperties struct { + AllowNonVirtualWanTraffic *bool `json:"allowNonVirtualWanTraffic,omitempty"` + AutoScaleConfiguration *ExpressRouteGatewayPropertiesAutoScaleConfiguration `json:"autoScaleConfiguration,omitempty"` + ExpressRouteConnections *[]ExpressRouteConnection `json:"expressRouteConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualHub VirtualHubId `json:"virtualHub"` +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/model_expressroutegatewaypropertiesautoscaleconfiguration.go b/resource-manager/network/2024-01-01/expressroutegateways/model_expressroutegatewaypropertiesautoscaleconfiguration.go new file mode 100644 index 00000000000..60677f25d4c --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/model_expressroutegatewaypropertiesautoscaleconfiguration.go @@ -0,0 +1,8 @@ +package expressroutegateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteGatewayPropertiesAutoScaleConfiguration struct { + Bounds *ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds `json:"bounds,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/model_expressroutegatewaypropertiesautoscaleconfigurationbounds.go b/resource-manager/network/2024-01-01/expressroutegateways/model_expressroutegatewaypropertiesautoscaleconfigurationbounds.go new file mode 100644 index 00000000000..65a1ccb474b --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/model_expressroutegatewaypropertiesautoscaleconfigurationbounds.go @@ -0,0 +1,9 @@ +package expressroutegateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds struct { + Max *int64 `json:"max,omitempty"` + Min *int64 `json:"min,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/model_propagatedroutetable.go b/resource-manager/network/2024-01-01/expressroutegateways/model_propagatedroutetable.go new file mode 100644 index 00000000000..93c6f306054 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/model_propagatedroutetable.go @@ -0,0 +1,9 @@ +package expressroutegateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PropagatedRouteTable struct { + Ids *[]SubResource `json:"ids,omitempty"` + Labels *[]string `json:"labels,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/model_routingconfiguration.go b/resource-manager/network/2024-01-01/expressroutegateways/model_routingconfiguration.go new file mode 100644 index 00000000000..670d9907881 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/model_routingconfiguration.go @@ -0,0 +1,12 @@ +package expressroutegateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutingConfiguration struct { + AssociatedRouteTable *SubResource `json:"associatedRouteTable,omitempty"` + InboundRouteMap *SubResource `json:"inboundRouteMap,omitempty"` + OutboundRouteMap *SubResource `json:"outboundRouteMap,omitempty"` + PropagatedRouteTables *PropagatedRouteTable `json:"propagatedRouteTables,omitempty"` + VnetRoutes *VnetRoute `json:"vnetRoutes,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/model_staticroute.go b/resource-manager/network/2024-01-01/expressroutegateways/model_staticroute.go new file mode 100644 index 00000000000..29422baf743 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/model_staticroute.go @@ -0,0 +1,10 @@ +package expressroutegateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StaticRoute struct { + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + Name *string `json:"name,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/model_staticroutesconfig.go b/resource-manager/network/2024-01-01/expressroutegateways/model_staticroutesconfig.go new file mode 100644 index 00000000000..d570d0ec17a --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/model_staticroutesconfig.go @@ -0,0 +1,9 @@ +package expressroutegateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StaticRoutesConfig struct { + PropagateStaticRoutes *bool `json:"propagateStaticRoutes,omitempty"` + VnetLocalRouteOverrideCriteria *VnetLocalRouteOverrideCriteria `json:"vnetLocalRouteOverrideCriteria,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/model_subresource.go b/resource-manager/network/2024-01-01/expressroutegateways/model_subresource.go new file mode 100644 index 00000000000..f86e3493340 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/model_subresource.go @@ -0,0 +1,8 @@ +package expressroutegateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/model_tagsobject.go b/resource-manager/network/2024-01-01/expressroutegateways/model_tagsobject.go new file mode 100644 index 00000000000..706aff41cd4 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/model_tagsobject.go @@ -0,0 +1,8 @@ +package expressroutegateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/model_virtualhubid.go b/resource-manager/network/2024-01-01/expressroutegateways/model_virtualhubid.go new file mode 100644 index 00000000000..41cb5ff6fd1 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/model_virtualhubid.go @@ -0,0 +1,8 @@ +package expressroutegateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubId struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/model_vnetroute.go b/resource-manager/network/2024-01-01/expressroutegateways/model_vnetroute.go new file mode 100644 index 00000000000..c9586e946c6 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/model_vnetroute.go @@ -0,0 +1,10 @@ +package expressroutegateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VnetRoute struct { + BgpConnections *[]SubResource `json:"bgpConnections,omitempty"` + StaticRoutes *[]StaticRoute `json:"staticRoutes,omitempty"` + StaticRoutesConfig *StaticRoutesConfig `json:"staticRoutesConfig,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutegateways/version.go b/resource-manager/network/2024-01-01/expressroutegateways/version.go new file mode 100644 index 00000000000..06d64b5b71f --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutegateways/version.go @@ -0,0 +1,12 @@ +package expressroutegateways + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/expressroutegateways/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/expressroutelinks/README.md b/resource-manager/network/2024-01-01/expressroutelinks/README.md new file mode 100644 index 00000000000..d2109b95c7d --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutelinks/README.md @@ -0,0 +1,53 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutelinks` Documentation + +The `expressroutelinks` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressroutelinks" +``` + + +### Client Initialization + +```go +client := expressroutelinks.NewExpressRouteLinksClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ExpressRouteLinksClient.Get` + +```go +ctx := context.TODO() +id := expressroutelinks.NewLinkID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRoutePortValue", "linkValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ExpressRouteLinksClient.List` + +```go +ctx := context.TODO() +id := expressroutelinks.NewExpressRoutePortID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRoutePortValue") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/expressroutelinks/client.go b/resource-manager/network/2024-01-01/expressroutelinks/client.go new file mode 100644 index 00000000000..42ba283bf4a --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutelinks/client.go @@ -0,0 +1,26 @@ +package expressroutelinks + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteLinksClient struct { + Client *resourcemanager.Client +} + +func NewExpressRouteLinksClientWithBaseURI(sdkApi sdkEnv.Api) (*ExpressRouteLinksClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "expressroutelinks", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ExpressRouteLinksClient: %+v", err) + } + + return &ExpressRouteLinksClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/expressroutelinks/constants.go b/resource-manager/network/2024-01-01/expressroutelinks/constants.go new file mode 100644 index 00000000000..bc075bf128a --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutelinks/constants.go @@ -0,0 +1,227 @@ +package expressroutelinks + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteLinkAdminState string + +const ( + ExpressRouteLinkAdminStateDisabled ExpressRouteLinkAdminState = "Disabled" + ExpressRouteLinkAdminStateEnabled ExpressRouteLinkAdminState = "Enabled" +) + +func PossibleValuesForExpressRouteLinkAdminState() []string { + return []string{ + string(ExpressRouteLinkAdminStateDisabled), + string(ExpressRouteLinkAdminStateEnabled), + } +} + +func (s *ExpressRouteLinkAdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRouteLinkAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRouteLinkAdminState(input string) (*ExpressRouteLinkAdminState, error) { + vals := map[string]ExpressRouteLinkAdminState{ + "disabled": ExpressRouteLinkAdminStateDisabled, + "enabled": ExpressRouteLinkAdminStateEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRouteLinkAdminState(input) + return &out, nil +} + +type ExpressRouteLinkConnectorType string + +const ( + ExpressRouteLinkConnectorTypeLC ExpressRouteLinkConnectorType = "LC" + ExpressRouteLinkConnectorTypeSC ExpressRouteLinkConnectorType = "SC" +) + +func PossibleValuesForExpressRouteLinkConnectorType() []string { + return []string{ + string(ExpressRouteLinkConnectorTypeLC), + string(ExpressRouteLinkConnectorTypeSC), + } +} + +func (s *ExpressRouteLinkConnectorType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRouteLinkConnectorType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRouteLinkConnectorType(input string) (*ExpressRouteLinkConnectorType, error) { + vals := map[string]ExpressRouteLinkConnectorType{ + "lc": ExpressRouteLinkConnectorTypeLC, + "sc": ExpressRouteLinkConnectorTypeSC, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRouteLinkConnectorType(input) + return &out, nil +} + +type ExpressRouteLinkMacSecCipher string + +const ( + ExpressRouteLinkMacSecCipherGcmAesOneTwoEight ExpressRouteLinkMacSecCipher = "GcmAes128" + ExpressRouteLinkMacSecCipherGcmAesTwoFiveSix ExpressRouteLinkMacSecCipher = "GcmAes256" + ExpressRouteLinkMacSecCipherGcmAesXpnOneTwoEight ExpressRouteLinkMacSecCipher = "GcmAesXpn128" + ExpressRouteLinkMacSecCipherGcmAesXpnTwoFiveSix ExpressRouteLinkMacSecCipher = "GcmAesXpn256" +) + +func PossibleValuesForExpressRouteLinkMacSecCipher() []string { + return []string{ + string(ExpressRouteLinkMacSecCipherGcmAesOneTwoEight), + string(ExpressRouteLinkMacSecCipherGcmAesTwoFiveSix), + string(ExpressRouteLinkMacSecCipherGcmAesXpnOneTwoEight), + string(ExpressRouteLinkMacSecCipherGcmAesXpnTwoFiveSix), + } +} + +func (s *ExpressRouteLinkMacSecCipher) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRouteLinkMacSecCipher(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRouteLinkMacSecCipher(input string) (*ExpressRouteLinkMacSecCipher, error) { + vals := map[string]ExpressRouteLinkMacSecCipher{ + "gcmaes128": ExpressRouteLinkMacSecCipherGcmAesOneTwoEight, + "gcmaes256": ExpressRouteLinkMacSecCipherGcmAesTwoFiveSix, + "gcmaesxpn128": ExpressRouteLinkMacSecCipherGcmAesXpnOneTwoEight, + "gcmaesxpn256": ExpressRouteLinkMacSecCipherGcmAesXpnTwoFiveSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRouteLinkMacSecCipher(input) + return &out, nil +} + +type ExpressRouteLinkMacSecSciState string + +const ( + ExpressRouteLinkMacSecSciStateDisabled ExpressRouteLinkMacSecSciState = "Disabled" + ExpressRouteLinkMacSecSciStateEnabled ExpressRouteLinkMacSecSciState = "Enabled" +) + +func PossibleValuesForExpressRouteLinkMacSecSciState() []string { + return []string{ + string(ExpressRouteLinkMacSecSciStateDisabled), + string(ExpressRouteLinkMacSecSciStateEnabled), + } +} + +func (s *ExpressRouteLinkMacSecSciState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRouteLinkMacSecSciState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRouteLinkMacSecSciState(input string) (*ExpressRouteLinkMacSecSciState, error) { + vals := map[string]ExpressRouteLinkMacSecSciState{ + "disabled": ExpressRouteLinkMacSecSciStateDisabled, + "enabled": ExpressRouteLinkMacSecSciStateEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRouteLinkMacSecSciState(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/expressroutelinks/id_expressrouteport.go b/resource-manager/network/2024-01-01/expressroutelinks/id_expressrouteport.go new file mode 100644 index 00000000000..fdf651cde65 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutelinks/id_expressrouteport.go @@ -0,0 +1,130 @@ +package expressroutelinks + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ExpressRoutePortId{}) +} + +var _ resourceids.ResourceId = &ExpressRoutePortId{} + +// ExpressRoutePortId is a struct representing the Resource ID for a Express Route Port +type ExpressRoutePortId struct { + SubscriptionId string + ResourceGroupName string + ExpressRoutePortName string +} + +// NewExpressRoutePortID returns a new ExpressRoutePortId struct +func NewExpressRoutePortID(subscriptionId string, resourceGroupName string, expressRoutePortName string) ExpressRoutePortId { + return ExpressRoutePortId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRoutePortName: expressRoutePortName, + } +} + +// ParseExpressRoutePortID parses 'input' into a ExpressRoutePortId +func ParseExpressRoutePortID(input string) (*ExpressRoutePortId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRoutePortId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRoutePortId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseExpressRoutePortIDInsensitively parses 'input' case-insensitively into a ExpressRoutePortId +// note: this method should only be used for API response data and not user input +func ParseExpressRoutePortIDInsensitively(input string) (*ExpressRoutePortId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRoutePortId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRoutePortId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ExpressRoutePortId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRoutePortName, ok = input.Parsed["expressRoutePortName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRoutePortName", input) + } + + return nil +} + +// ValidateExpressRoutePortID checks that 'input' can be parsed as a Express Route Port ID +func ValidateExpressRoutePortID(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 := ParseExpressRoutePortID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Express Route Port ID +func (id ExpressRoutePortId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRoutePorts/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRoutePortName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Express Route Port ID +func (id ExpressRoutePortId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRoutePorts", "expressRoutePorts", "expressRoutePorts"), + resourceids.UserSpecifiedSegment("expressRoutePortName", "expressRoutePortValue"), + } +} + +// String returns a human-readable description of this Express Route Port ID +func (id ExpressRoutePortId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Port Name: %q", id.ExpressRoutePortName), + } + return fmt.Sprintf("Express Route Port (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressroutelinks/id_expressrouteport_test.go b/resource-manager/network/2024-01-01/expressroutelinks/id_expressrouteport_test.go new file mode 100644 index 00000000000..de5ddef3250 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutelinks/id_expressrouteport_test.go @@ -0,0 +1,282 @@ +package expressroutelinks + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ExpressRoutePortId{} + +func TestNewExpressRoutePortID(t *testing.T) { + id := NewExpressRoutePortID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRoutePortValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRoutePortName != "expressRoutePortValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRoutePortName'", id.ExpressRoutePortName, "expressRoutePortValue") + } +} + +func TestFormatExpressRoutePortID(t *testing.T) { + actual := NewExpressRoutePortID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRoutePortValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseExpressRoutePortID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRoutePortId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue", + Expected: &ExpressRoutePortId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRoutePortName: "expressRoutePortValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRoutePortID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRoutePortName != v.Expected.ExpressRoutePortName { + t.Fatalf("Expected %q but got %q for ExpressRoutePortName", v.Expected.ExpressRoutePortName, actual.ExpressRoutePortName) + } + + } +} + +func TestParseExpressRoutePortIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRoutePortId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpOrTs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue", + Expected: &ExpressRoutePortId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRoutePortName: "expressRoutePortValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpOrTs/eXpReSsRoUtEpOrTvAlUe", + Expected: &ExpressRoutePortId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRoutePortName: "eXpReSsRoUtEpOrTvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpOrTs/eXpReSsRoUtEpOrTvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRoutePortIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRoutePortName != v.Expected.ExpressRoutePortName { + t.Fatalf("Expected %q but got %q for ExpressRoutePortName", v.Expected.ExpressRoutePortName, actual.ExpressRoutePortName) + } + + } +} + +func TestSegmentsForExpressRoutePortId(t *testing.T) { + segments := ExpressRoutePortId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ExpressRoutePortId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressroutelinks/id_link.go b/resource-manager/network/2024-01-01/expressroutelinks/id_link.go new file mode 100644 index 00000000000..ff86b5a2798 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutelinks/id_link.go @@ -0,0 +1,139 @@ +package expressroutelinks + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&LinkId{}) +} + +var _ resourceids.ResourceId = &LinkId{} + +// LinkId is a struct representing the Resource ID for a Link +type LinkId struct { + SubscriptionId string + ResourceGroupName string + ExpressRoutePortName string + LinkName string +} + +// NewLinkID returns a new LinkId struct +func NewLinkID(subscriptionId string, resourceGroupName string, expressRoutePortName string, linkName string) LinkId { + return LinkId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRoutePortName: expressRoutePortName, + LinkName: linkName, + } +} + +// ParseLinkID parses 'input' into a LinkId +func ParseLinkID(input string) (*LinkId, error) { + parser := resourceids.NewParserFromResourceIdType(&LinkId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LinkId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseLinkIDInsensitively parses 'input' case-insensitively into a LinkId +// note: this method should only be used for API response data and not user input +func ParseLinkIDInsensitively(input string) (*LinkId, error) { + parser := resourceids.NewParserFromResourceIdType(&LinkId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LinkId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *LinkId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRoutePortName, ok = input.Parsed["expressRoutePortName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRoutePortName", input) + } + + if id.LinkName, ok = input.Parsed["linkName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "linkName", input) + } + + return nil +} + +// ValidateLinkID checks that 'input' can be parsed as a Link ID +func ValidateLinkID(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 := ParseLinkID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Link ID +func (id LinkId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRoutePorts/%s/links/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRoutePortName, id.LinkName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Link ID +func (id LinkId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRoutePorts", "expressRoutePorts", "expressRoutePorts"), + resourceids.UserSpecifiedSegment("expressRoutePortName", "expressRoutePortValue"), + resourceids.StaticSegment("staticLinks", "links", "links"), + resourceids.UserSpecifiedSegment("linkName", "linkValue"), + } +} + +// String returns a human-readable description of this Link ID +func (id LinkId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Port Name: %q", id.ExpressRoutePortName), + fmt.Sprintf("Link Name: %q", id.LinkName), + } + return fmt.Sprintf("Link (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressroutelinks/id_link_test.go b/resource-manager/network/2024-01-01/expressroutelinks/id_link_test.go new file mode 100644 index 00000000000..970951aa93c --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutelinks/id_link_test.go @@ -0,0 +1,327 @@ +package expressroutelinks + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &LinkId{} + +func TestNewLinkID(t *testing.T) { + id := NewLinkID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRoutePortValue", "linkValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRoutePortName != "expressRoutePortValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRoutePortName'", id.ExpressRoutePortName, "expressRoutePortValue") + } + + if id.LinkName != "linkValue" { + t.Fatalf("Expected %q but got %q for Segment 'LinkName'", id.LinkName, "linkValue") + } +} + +func TestFormatLinkID(t *testing.T) { + actual := NewLinkID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRoutePortValue", "linkValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue/links/linkValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseLinkID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LinkId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue/links", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue/links/linkValue", + Expected: &LinkId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRoutePortName: "expressRoutePortValue", + LinkName: "linkValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue/links/linkValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLinkID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRoutePortName != v.Expected.ExpressRoutePortName { + t.Fatalf("Expected %q but got %q for ExpressRoutePortName", v.Expected.ExpressRoutePortName, actual.ExpressRoutePortName) + } + + if actual.LinkName != v.Expected.LinkName { + t.Fatalf("Expected %q but got %q for LinkName", v.Expected.LinkName, actual.LinkName) + } + + } +} + +func TestParseLinkIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LinkId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpOrTs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpOrTs/eXpReSsRoUtEpOrTvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue/links", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpOrTs/eXpReSsRoUtEpOrTvAlUe/lInKs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue/links/linkValue", + Expected: &LinkId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRoutePortName: "expressRoutePortValue", + LinkName: "linkValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue/links/linkValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpOrTs/eXpReSsRoUtEpOrTvAlUe/lInKs/lInKvAlUe", + Expected: &LinkId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRoutePortName: "eXpReSsRoUtEpOrTvAlUe", + LinkName: "lInKvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpOrTs/eXpReSsRoUtEpOrTvAlUe/lInKs/lInKvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLinkIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRoutePortName != v.Expected.ExpressRoutePortName { + t.Fatalf("Expected %q but got %q for ExpressRoutePortName", v.Expected.ExpressRoutePortName, actual.ExpressRoutePortName) + } + + if actual.LinkName != v.Expected.LinkName { + t.Fatalf("Expected %q but got %q for LinkName", v.Expected.LinkName, actual.LinkName) + } + + } +} + +func TestSegmentsForLinkId(t *testing.T) { + segments := LinkId{}.Segments() + if len(segments) == 0 { + t.Fatalf("LinkId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressroutelinks/method_get.go b/resource-manager/network/2024-01-01/expressroutelinks/method_get.go new file mode 100644 index 00000000000..25857a7f294 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutelinks/method_get.go @@ -0,0 +1,54 @@ +package expressroutelinks + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteLink +} + +// Get ... +func (c ExpressRouteLinksClient) Get(ctx context.Context, id LinkId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ExpressRouteLink + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/expressroutelinks/method_list.go b/resource-manager/network/2024-01-01/expressroutelinks/method_list.go new file mode 100644 index 00000000000..80d16ff05a3 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutelinks/method_list.go @@ -0,0 +1,92 @@ +package expressroutelinks + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ExpressRouteLink +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []ExpressRouteLink +} + +// List ... +func (c ExpressRouteLinksClient) List(ctx context.Context, id ExpressRoutePortId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/links", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ExpressRouteLink `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c ExpressRouteLinksClient) ListComplete(ctx context.Context, id ExpressRoutePortId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, ExpressRouteLinkOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ExpressRouteLinksClient) ListCompleteMatchingPredicate(ctx context.Context, id ExpressRoutePortId, predicate ExpressRouteLinkOperationPredicate) (result ListCompleteResult, err error) { + items := make([]ExpressRouteLink, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/expressroutelinks/model_expressroutelink.go b/resource-manager/network/2024-01-01/expressroutelinks/model_expressroutelink.go new file mode 100644 index 00000000000..d8919f16d71 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutelinks/model_expressroutelink.go @@ -0,0 +1,11 @@ +package expressroutelinks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ExpressRouteLinkPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutelinks/model_expressroutelinkmacsecconfig.go b/resource-manager/network/2024-01-01/expressroutelinks/model_expressroutelinkmacsecconfig.go new file mode 100644 index 00000000000..91551b3b16f --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutelinks/model_expressroutelinkmacsecconfig.go @@ -0,0 +1,11 @@ +package expressroutelinks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteLinkMacSecConfig struct { + CakSecretIdentifier *string `json:"cakSecretIdentifier,omitempty"` + Cipher *ExpressRouteLinkMacSecCipher `json:"cipher,omitempty"` + CknSecretIdentifier *string `json:"cknSecretIdentifier,omitempty"` + SciState *ExpressRouteLinkMacSecSciState `json:"sciState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutelinks/model_expressroutelinkpropertiesformat.go b/resource-manager/network/2024-01-01/expressroutelinks/model_expressroutelinkpropertiesformat.go new file mode 100644 index 00000000000..6d9466ff4ff --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutelinks/model_expressroutelinkpropertiesformat.go @@ -0,0 +1,16 @@ +package expressroutelinks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteLinkPropertiesFormat struct { + AdminState *ExpressRouteLinkAdminState `json:"adminState,omitempty"` + ColoLocation *string `json:"coloLocation,omitempty"` + ConnectorType *ExpressRouteLinkConnectorType `json:"connectorType,omitempty"` + InterfaceName *string `json:"interfaceName,omitempty"` + MacSecConfig *ExpressRouteLinkMacSecConfig `json:"macSecConfig,omitempty"` + PatchPanelId *string `json:"patchPanelId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RackId *string `json:"rackId,omitempty"` + RouterName *string `json:"routerName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressroutelinks/predicates.go b/resource-manager/network/2024-01-01/expressroutelinks/predicates.go new file mode 100644 index 00000000000..bd6127afc55 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutelinks/predicates.go @@ -0,0 +1,27 @@ +package expressroutelinks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteLinkOperationPredicate struct { + Etag *string + Id *string + Name *string +} + +func (p ExpressRouteLinkOperationPredicate) Matches(input ExpressRouteLink) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/expressroutelinks/version.go b/resource-manager/network/2024-01-01/expressroutelinks/version.go new file mode 100644 index 00000000000..f69c6ab7ccf --- /dev/null +++ b/resource-manager/network/2024-01-01/expressroutelinks/version.go @@ -0,0 +1,12 @@ +package expressroutelinks + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/expressroutelinks/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/expressrouteportauthorizations/README.md b/resource-manager/network/2024-01-01/expressrouteportauthorizations/README.md new file mode 100644 index 00000000000..ff63441aca5 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportauthorizations/README.md @@ -0,0 +1,82 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressrouteportauthorizations` Documentation + +The `expressrouteportauthorizations` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressrouteportauthorizations" +``` + + +### Client Initialization + +```go +client := expressrouteportauthorizations.NewExpressRoutePortAuthorizationsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ExpressRoutePortAuthorizationsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := expressrouteportauthorizations.NewExpressRoutePortAuthorizationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRoutePortValue", "authorizationValue") + +payload := expressrouteportauthorizations.ExpressRoutePortAuthorization{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `ExpressRoutePortAuthorizationsClient.Delete` + +```go +ctx := context.TODO() +id := expressrouteportauthorizations.NewExpressRoutePortAuthorizationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRoutePortValue", "authorizationValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `ExpressRoutePortAuthorizationsClient.Get` + +```go +ctx := context.TODO() +id := expressrouteportauthorizations.NewExpressRoutePortAuthorizationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRoutePortValue", "authorizationValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ExpressRoutePortAuthorizationsClient.List` + +```go +ctx := context.TODO() +id := expressrouteportauthorizations.NewExpressRoutePortID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRoutePortValue") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/expressrouteportauthorizations/client.go b/resource-manager/network/2024-01-01/expressrouteportauthorizations/client.go new file mode 100644 index 00000000000..a6a1e906e85 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportauthorizations/client.go @@ -0,0 +1,26 @@ +package expressrouteportauthorizations + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRoutePortAuthorizationsClient struct { + Client *resourcemanager.Client +} + +func NewExpressRoutePortAuthorizationsClientWithBaseURI(sdkApi sdkEnv.Api) (*ExpressRoutePortAuthorizationsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "expressrouteportauthorizations", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ExpressRoutePortAuthorizationsClient: %+v", err) + } + + return &ExpressRoutePortAuthorizationsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/expressrouteportauthorizations/constants.go b/resource-manager/network/2024-01-01/expressrouteportauthorizations/constants.go new file mode 100644 index 00000000000..3fbd20f1075 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportauthorizations/constants.go @@ -0,0 +1,98 @@ +package expressrouteportauthorizations + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRoutePortAuthorizationUseStatus string + +const ( + ExpressRoutePortAuthorizationUseStatusAvailable ExpressRoutePortAuthorizationUseStatus = "Available" + ExpressRoutePortAuthorizationUseStatusInUse ExpressRoutePortAuthorizationUseStatus = "InUse" +) + +func PossibleValuesForExpressRoutePortAuthorizationUseStatus() []string { + return []string{ + string(ExpressRoutePortAuthorizationUseStatusAvailable), + string(ExpressRoutePortAuthorizationUseStatusInUse), + } +} + +func (s *ExpressRoutePortAuthorizationUseStatus) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRoutePortAuthorizationUseStatus(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRoutePortAuthorizationUseStatus(input string) (*ExpressRoutePortAuthorizationUseStatus, error) { + vals := map[string]ExpressRoutePortAuthorizationUseStatus{ + "available": ExpressRoutePortAuthorizationUseStatusAvailable, + "inuse": ExpressRoutePortAuthorizationUseStatusInUse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRoutePortAuthorizationUseStatus(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/expressrouteportauthorizations/id_expressrouteport.go b/resource-manager/network/2024-01-01/expressrouteportauthorizations/id_expressrouteport.go new file mode 100644 index 00000000000..9fffd1964c0 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportauthorizations/id_expressrouteport.go @@ -0,0 +1,130 @@ +package expressrouteportauthorizations + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ExpressRoutePortId{}) +} + +var _ resourceids.ResourceId = &ExpressRoutePortId{} + +// ExpressRoutePortId is a struct representing the Resource ID for a Express Route Port +type ExpressRoutePortId struct { + SubscriptionId string + ResourceGroupName string + ExpressRoutePortName string +} + +// NewExpressRoutePortID returns a new ExpressRoutePortId struct +func NewExpressRoutePortID(subscriptionId string, resourceGroupName string, expressRoutePortName string) ExpressRoutePortId { + return ExpressRoutePortId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRoutePortName: expressRoutePortName, + } +} + +// ParseExpressRoutePortID parses 'input' into a ExpressRoutePortId +func ParseExpressRoutePortID(input string) (*ExpressRoutePortId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRoutePortId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRoutePortId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseExpressRoutePortIDInsensitively parses 'input' case-insensitively into a ExpressRoutePortId +// note: this method should only be used for API response data and not user input +func ParseExpressRoutePortIDInsensitively(input string) (*ExpressRoutePortId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRoutePortId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRoutePortId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ExpressRoutePortId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRoutePortName, ok = input.Parsed["expressRoutePortName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRoutePortName", input) + } + + return nil +} + +// ValidateExpressRoutePortID checks that 'input' can be parsed as a Express Route Port ID +func ValidateExpressRoutePortID(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 := ParseExpressRoutePortID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Express Route Port ID +func (id ExpressRoutePortId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRoutePorts/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRoutePortName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Express Route Port ID +func (id ExpressRoutePortId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRoutePorts", "expressRoutePorts", "expressRoutePorts"), + resourceids.UserSpecifiedSegment("expressRoutePortName", "expressRoutePortValue"), + } +} + +// String returns a human-readable description of this Express Route Port ID +func (id ExpressRoutePortId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Port Name: %q", id.ExpressRoutePortName), + } + return fmt.Sprintf("Express Route Port (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressrouteportauthorizations/id_expressrouteport_test.go b/resource-manager/network/2024-01-01/expressrouteportauthorizations/id_expressrouteport_test.go new file mode 100644 index 00000000000..3202d0fbe70 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportauthorizations/id_expressrouteport_test.go @@ -0,0 +1,282 @@ +package expressrouteportauthorizations + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ExpressRoutePortId{} + +func TestNewExpressRoutePortID(t *testing.T) { + id := NewExpressRoutePortID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRoutePortValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRoutePortName != "expressRoutePortValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRoutePortName'", id.ExpressRoutePortName, "expressRoutePortValue") + } +} + +func TestFormatExpressRoutePortID(t *testing.T) { + actual := NewExpressRoutePortID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRoutePortValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseExpressRoutePortID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRoutePortId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue", + Expected: &ExpressRoutePortId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRoutePortName: "expressRoutePortValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRoutePortID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRoutePortName != v.Expected.ExpressRoutePortName { + t.Fatalf("Expected %q but got %q for ExpressRoutePortName", v.Expected.ExpressRoutePortName, actual.ExpressRoutePortName) + } + + } +} + +func TestParseExpressRoutePortIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRoutePortId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpOrTs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue", + Expected: &ExpressRoutePortId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRoutePortName: "expressRoutePortValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpOrTs/eXpReSsRoUtEpOrTvAlUe", + Expected: &ExpressRoutePortId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRoutePortName: "eXpReSsRoUtEpOrTvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpOrTs/eXpReSsRoUtEpOrTvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRoutePortIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRoutePortName != v.Expected.ExpressRoutePortName { + t.Fatalf("Expected %q but got %q for ExpressRoutePortName", v.Expected.ExpressRoutePortName, actual.ExpressRoutePortName) + } + + } +} + +func TestSegmentsForExpressRoutePortId(t *testing.T) { + segments := ExpressRoutePortId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ExpressRoutePortId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressrouteportauthorizations/id_expressrouteportauthorization.go b/resource-manager/network/2024-01-01/expressrouteportauthorizations/id_expressrouteportauthorization.go new file mode 100644 index 00000000000..4042eea1718 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportauthorizations/id_expressrouteportauthorization.go @@ -0,0 +1,139 @@ +package expressrouteportauthorizations + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ExpressRoutePortAuthorizationId{}) +} + +var _ resourceids.ResourceId = &ExpressRoutePortAuthorizationId{} + +// ExpressRoutePortAuthorizationId is a struct representing the Resource ID for a Express Route Port Authorization +type ExpressRoutePortAuthorizationId struct { + SubscriptionId string + ResourceGroupName string + ExpressRoutePortName string + AuthorizationName string +} + +// NewExpressRoutePortAuthorizationID returns a new ExpressRoutePortAuthorizationId struct +func NewExpressRoutePortAuthorizationID(subscriptionId string, resourceGroupName string, expressRoutePortName string, authorizationName string) ExpressRoutePortAuthorizationId { + return ExpressRoutePortAuthorizationId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRoutePortName: expressRoutePortName, + AuthorizationName: authorizationName, + } +} + +// ParseExpressRoutePortAuthorizationID parses 'input' into a ExpressRoutePortAuthorizationId +func ParseExpressRoutePortAuthorizationID(input string) (*ExpressRoutePortAuthorizationId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRoutePortAuthorizationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRoutePortAuthorizationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseExpressRoutePortAuthorizationIDInsensitively parses 'input' case-insensitively into a ExpressRoutePortAuthorizationId +// note: this method should only be used for API response data and not user input +func ParseExpressRoutePortAuthorizationIDInsensitively(input string) (*ExpressRoutePortAuthorizationId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRoutePortAuthorizationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRoutePortAuthorizationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ExpressRoutePortAuthorizationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRoutePortName, ok = input.Parsed["expressRoutePortName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRoutePortName", input) + } + + if id.AuthorizationName, ok = input.Parsed["authorizationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "authorizationName", input) + } + + return nil +} + +// ValidateExpressRoutePortAuthorizationID checks that 'input' can be parsed as a Express Route Port Authorization ID +func ValidateExpressRoutePortAuthorizationID(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 := ParseExpressRoutePortAuthorizationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Express Route Port Authorization ID +func (id ExpressRoutePortAuthorizationId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRoutePorts/%s/authorizations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRoutePortName, id.AuthorizationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Express Route Port Authorization ID +func (id ExpressRoutePortAuthorizationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRoutePorts", "expressRoutePorts", "expressRoutePorts"), + resourceids.UserSpecifiedSegment("expressRoutePortName", "expressRoutePortValue"), + resourceids.StaticSegment("staticAuthorizations", "authorizations", "authorizations"), + resourceids.UserSpecifiedSegment("authorizationName", "authorizationValue"), + } +} + +// String returns a human-readable description of this Express Route Port Authorization ID +func (id ExpressRoutePortAuthorizationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Port Name: %q", id.ExpressRoutePortName), + fmt.Sprintf("Authorization Name: %q", id.AuthorizationName), + } + return fmt.Sprintf("Express Route Port Authorization (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressrouteportauthorizations/id_expressrouteportauthorization_test.go b/resource-manager/network/2024-01-01/expressrouteportauthorizations/id_expressrouteportauthorization_test.go new file mode 100644 index 00000000000..2c7b32a0618 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportauthorizations/id_expressrouteportauthorization_test.go @@ -0,0 +1,327 @@ +package expressrouteportauthorizations + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ExpressRoutePortAuthorizationId{} + +func TestNewExpressRoutePortAuthorizationID(t *testing.T) { + id := NewExpressRoutePortAuthorizationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRoutePortValue", "authorizationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRoutePortName != "expressRoutePortValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRoutePortName'", id.ExpressRoutePortName, "expressRoutePortValue") + } + + if id.AuthorizationName != "authorizationValue" { + t.Fatalf("Expected %q but got %q for Segment 'AuthorizationName'", id.AuthorizationName, "authorizationValue") + } +} + +func TestFormatExpressRoutePortAuthorizationID(t *testing.T) { + actual := NewExpressRoutePortAuthorizationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRoutePortValue", "authorizationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue/authorizations/authorizationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseExpressRoutePortAuthorizationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRoutePortAuthorizationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue/authorizations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue/authorizations/authorizationValue", + Expected: &ExpressRoutePortAuthorizationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRoutePortName: "expressRoutePortValue", + AuthorizationName: "authorizationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue/authorizations/authorizationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRoutePortAuthorizationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRoutePortName != v.Expected.ExpressRoutePortName { + t.Fatalf("Expected %q but got %q for ExpressRoutePortName", v.Expected.ExpressRoutePortName, actual.ExpressRoutePortName) + } + + if actual.AuthorizationName != v.Expected.AuthorizationName { + t.Fatalf("Expected %q but got %q for AuthorizationName", v.Expected.AuthorizationName, actual.AuthorizationName) + } + + } +} + +func TestParseExpressRoutePortAuthorizationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRoutePortAuthorizationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpOrTs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpOrTs/eXpReSsRoUtEpOrTvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue/authorizations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpOrTs/eXpReSsRoUtEpOrTvAlUe/aUtHoRiZaTiOnS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue/authorizations/authorizationValue", + Expected: &ExpressRoutePortAuthorizationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRoutePortName: "expressRoutePortValue", + AuthorizationName: "authorizationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue/authorizations/authorizationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpOrTs/eXpReSsRoUtEpOrTvAlUe/aUtHoRiZaTiOnS/aUtHoRiZaTiOnVaLuE", + Expected: &ExpressRoutePortAuthorizationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRoutePortName: "eXpReSsRoUtEpOrTvAlUe", + AuthorizationName: "aUtHoRiZaTiOnVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpOrTs/eXpReSsRoUtEpOrTvAlUe/aUtHoRiZaTiOnS/aUtHoRiZaTiOnVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRoutePortAuthorizationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRoutePortName != v.Expected.ExpressRoutePortName { + t.Fatalf("Expected %q but got %q for ExpressRoutePortName", v.Expected.ExpressRoutePortName, actual.ExpressRoutePortName) + } + + if actual.AuthorizationName != v.Expected.AuthorizationName { + t.Fatalf("Expected %q but got %q for AuthorizationName", v.Expected.AuthorizationName, actual.AuthorizationName) + } + + } +} + +func TestSegmentsForExpressRoutePortAuthorizationId(t *testing.T) { + segments := ExpressRoutePortAuthorizationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ExpressRoutePortAuthorizationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressrouteportauthorizations/method_createorupdate.go b/resource-manager/network/2024-01-01/expressrouteportauthorizations/method_createorupdate.go new file mode 100644 index 00000000000..9e08a949ed3 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportauthorizations/method_createorupdate.go @@ -0,0 +1,75 @@ +package expressrouteportauthorizations + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRoutePortAuthorization +} + +// CreateOrUpdate ... +func (c ExpressRoutePortAuthorizationsClient) CreateOrUpdate(ctx context.Context, id ExpressRoutePortAuthorizationId, input ExpressRoutePortAuthorization) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c ExpressRoutePortAuthorizationsClient) CreateOrUpdateThenPoll(ctx context.Context, id ExpressRoutePortAuthorizationId, input ExpressRoutePortAuthorization) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressrouteportauthorizations/method_delete.go b/resource-manager/network/2024-01-01/expressrouteportauthorizations/method_delete.go new file mode 100644 index 00000000000..8940670b615 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportauthorizations/method_delete.go @@ -0,0 +1,71 @@ +package expressrouteportauthorizations + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c ExpressRoutePortAuthorizationsClient) Delete(ctx context.Context, id ExpressRoutePortAuthorizationId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c ExpressRoutePortAuthorizationsClient) DeleteThenPoll(ctx context.Context, id ExpressRoutePortAuthorizationId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressrouteportauthorizations/method_get.go b/resource-manager/network/2024-01-01/expressrouteportauthorizations/method_get.go new file mode 100644 index 00000000000..0dd81644eba --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportauthorizations/method_get.go @@ -0,0 +1,54 @@ +package expressrouteportauthorizations + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRoutePortAuthorization +} + +// Get ... +func (c ExpressRoutePortAuthorizationsClient) Get(ctx context.Context, id ExpressRoutePortAuthorizationId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ExpressRoutePortAuthorization + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/expressrouteportauthorizations/method_list.go b/resource-manager/network/2024-01-01/expressrouteportauthorizations/method_list.go new file mode 100644 index 00000000000..7551539278a --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportauthorizations/method_list.go @@ -0,0 +1,92 @@ +package expressrouteportauthorizations + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ExpressRoutePortAuthorization +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []ExpressRoutePortAuthorization +} + +// List ... +func (c ExpressRoutePortAuthorizationsClient) List(ctx context.Context, id ExpressRoutePortId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/authorizations", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ExpressRoutePortAuthorization `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c ExpressRoutePortAuthorizationsClient) ListComplete(ctx context.Context, id ExpressRoutePortId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, ExpressRoutePortAuthorizationOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ExpressRoutePortAuthorizationsClient) ListCompleteMatchingPredicate(ctx context.Context, id ExpressRoutePortId, predicate ExpressRoutePortAuthorizationOperationPredicate) (result ListCompleteResult, err error) { + items := make([]ExpressRoutePortAuthorization, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/expressrouteportauthorizations/model_expressrouteportauthorization.go b/resource-manager/network/2024-01-01/expressrouteportauthorizations/model_expressrouteportauthorization.go new file mode 100644 index 00000000000..aee29af0a99 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportauthorizations/model_expressrouteportauthorization.go @@ -0,0 +1,12 @@ +package expressrouteportauthorizations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRoutePortAuthorization struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ExpressRoutePortAuthorizationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteportauthorizations/model_expressrouteportauthorizationpropertiesformat.go b/resource-manager/network/2024-01-01/expressrouteportauthorizations/model_expressrouteportauthorizationpropertiesformat.go new file mode 100644 index 00000000000..9370c4f6323 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportauthorizations/model_expressrouteportauthorizationpropertiesformat.go @@ -0,0 +1,11 @@ +package expressrouteportauthorizations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRoutePortAuthorizationPropertiesFormat struct { + AuthorizationKey *string `json:"authorizationKey,omitempty"` + AuthorizationUseStatus *ExpressRoutePortAuthorizationUseStatus `json:"authorizationUseStatus,omitempty"` + CircuitResourceUri *string `json:"circuitResourceUri,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteportauthorizations/predicates.go b/resource-manager/network/2024-01-01/expressrouteportauthorizations/predicates.go new file mode 100644 index 00000000000..d12fc29e52a --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportauthorizations/predicates.go @@ -0,0 +1,32 @@ +package expressrouteportauthorizations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRoutePortAuthorizationOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p ExpressRoutePortAuthorizationOperationPredicate) Matches(input ExpressRoutePortAuthorization) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/expressrouteportauthorizations/version.go b/resource-manager/network/2024-01-01/expressrouteportauthorizations/version.go new file mode 100644 index 00000000000..71364ed102d --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportauthorizations/version.go @@ -0,0 +1,12 @@ +package expressrouteportauthorizations + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/expressrouteportauthorizations/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/expressrouteports/README.md b/resource-manager/network/2024-01-01/expressrouteports/README.md new file mode 100644 index 00000000000..2dc01254bab --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteports/README.md @@ -0,0 +1,142 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressrouteports` Documentation + +The `expressrouteports` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressrouteports" +``` + + +### Client Initialization + +```go +client := expressrouteports.NewExpressRoutePortsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ExpressRoutePortsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := expressrouteports.NewExpressRoutePortID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRoutePortValue") + +payload := expressrouteports.ExpressRoutePort{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `ExpressRoutePortsClient.Delete` + +```go +ctx := context.TODO() +id := expressrouteports.NewExpressRoutePortID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRoutePortValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `ExpressRoutePortsClient.GenerateLOA` + +```go +ctx := context.TODO() +id := expressrouteports.NewExpressRoutePortID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRoutePortValue") + +payload := expressrouteports.GenerateExpressRoutePortsLOARequest{ + // ... +} + + +read, err := client.GenerateLOA(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ExpressRoutePortsClient.Get` + +```go +ctx := context.TODO() +id := expressrouteports.NewExpressRoutePortID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRoutePortValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ExpressRoutePortsClient.List` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `ExpressRoutePortsClient.ListByResourceGroup` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.ListByResourceGroup(ctx, id)` can be used to do batched pagination +items, err := client.ListByResourceGroupComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `ExpressRoutePortsClient.UpdateTags` + +```go +ctx := context.TODO() +id := expressrouteports.NewExpressRoutePortID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRoutePortValue") + +payload := expressrouteports.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/expressrouteports/client.go b/resource-manager/network/2024-01-01/expressrouteports/client.go new file mode 100644 index 00000000000..7b73cfca2af --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteports/client.go @@ -0,0 +1,26 @@ +package expressrouteports + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRoutePortsClient struct { + Client *resourcemanager.Client +} + +func NewExpressRoutePortsClientWithBaseURI(sdkApi sdkEnv.Api) (*ExpressRoutePortsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "expressrouteports", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ExpressRoutePortsClient: %+v", err) + } + + return &ExpressRoutePortsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/expressrouteports/constants.go b/resource-manager/network/2024-01-01/expressrouteports/constants.go new file mode 100644 index 00000000000..0c08bc2c72f --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteports/constants.go @@ -0,0 +1,309 @@ +package expressrouteports + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteLinkAdminState string + +const ( + ExpressRouteLinkAdminStateDisabled ExpressRouteLinkAdminState = "Disabled" + ExpressRouteLinkAdminStateEnabled ExpressRouteLinkAdminState = "Enabled" +) + +func PossibleValuesForExpressRouteLinkAdminState() []string { + return []string{ + string(ExpressRouteLinkAdminStateDisabled), + string(ExpressRouteLinkAdminStateEnabled), + } +} + +func (s *ExpressRouteLinkAdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRouteLinkAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRouteLinkAdminState(input string) (*ExpressRouteLinkAdminState, error) { + vals := map[string]ExpressRouteLinkAdminState{ + "disabled": ExpressRouteLinkAdminStateDisabled, + "enabled": ExpressRouteLinkAdminStateEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRouteLinkAdminState(input) + return &out, nil +} + +type ExpressRouteLinkConnectorType string + +const ( + ExpressRouteLinkConnectorTypeLC ExpressRouteLinkConnectorType = "LC" + ExpressRouteLinkConnectorTypeSC ExpressRouteLinkConnectorType = "SC" +) + +func PossibleValuesForExpressRouteLinkConnectorType() []string { + return []string{ + string(ExpressRouteLinkConnectorTypeLC), + string(ExpressRouteLinkConnectorTypeSC), + } +} + +func (s *ExpressRouteLinkConnectorType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRouteLinkConnectorType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRouteLinkConnectorType(input string) (*ExpressRouteLinkConnectorType, error) { + vals := map[string]ExpressRouteLinkConnectorType{ + "lc": ExpressRouteLinkConnectorTypeLC, + "sc": ExpressRouteLinkConnectorTypeSC, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRouteLinkConnectorType(input) + return &out, nil +} + +type ExpressRouteLinkMacSecCipher string + +const ( + ExpressRouteLinkMacSecCipherGcmAesOneTwoEight ExpressRouteLinkMacSecCipher = "GcmAes128" + ExpressRouteLinkMacSecCipherGcmAesTwoFiveSix ExpressRouteLinkMacSecCipher = "GcmAes256" + ExpressRouteLinkMacSecCipherGcmAesXpnOneTwoEight ExpressRouteLinkMacSecCipher = "GcmAesXpn128" + ExpressRouteLinkMacSecCipherGcmAesXpnTwoFiveSix ExpressRouteLinkMacSecCipher = "GcmAesXpn256" +) + +func PossibleValuesForExpressRouteLinkMacSecCipher() []string { + return []string{ + string(ExpressRouteLinkMacSecCipherGcmAesOneTwoEight), + string(ExpressRouteLinkMacSecCipherGcmAesTwoFiveSix), + string(ExpressRouteLinkMacSecCipherGcmAesXpnOneTwoEight), + string(ExpressRouteLinkMacSecCipherGcmAesXpnTwoFiveSix), + } +} + +func (s *ExpressRouteLinkMacSecCipher) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRouteLinkMacSecCipher(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRouteLinkMacSecCipher(input string) (*ExpressRouteLinkMacSecCipher, error) { + vals := map[string]ExpressRouteLinkMacSecCipher{ + "gcmaes128": ExpressRouteLinkMacSecCipherGcmAesOneTwoEight, + "gcmaes256": ExpressRouteLinkMacSecCipherGcmAesTwoFiveSix, + "gcmaesxpn128": ExpressRouteLinkMacSecCipherGcmAesXpnOneTwoEight, + "gcmaesxpn256": ExpressRouteLinkMacSecCipherGcmAesXpnTwoFiveSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRouteLinkMacSecCipher(input) + return &out, nil +} + +type ExpressRouteLinkMacSecSciState string + +const ( + ExpressRouteLinkMacSecSciStateDisabled ExpressRouteLinkMacSecSciState = "Disabled" + ExpressRouteLinkMacSecSciStateEnabled ExpressRouteLinkMacSecSciState = "Enabled" +) + +func PossibleValuesForExpressRouteLinkMacSecSciState() []string { + return []string{ + string(ExpressRouteLinkMacSecSciStateDisabled), + string(ExpressRouteLinkMacSecSciStateEnabled), + } +} + +func (s *ExpressRouteLinkMacSecSciState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRouteLinkMacSecSciState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRouteLinkMacSecSciState(input string) (*ExpressRouteLinkMacSecSciState, error) { + vals := map[string]ExpressRouteLinkMacSecSciState{ + "disabled": ExpressRouteLinkMacSecSciStateDisabled, + "enabled": ExpressRouteLinkMacSecSciStateEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRouteLinkMacSecSciState(input) + return &out, nil +} + +type ExpressRoutePortsBillingType string + +const ( + ExpressRoutePortsBillingTypeMeteredData ExpressRoutePortsBillingType = "MeteredData" + ExpressRoutePortsBillingTypeUnlimitedData ExpressRoutePortsBillingType = "UnlimitedData" +) + +func PossibleValuesForExpressRoutePortsBillingType() []string { + return []string{ + string(ExpressRoutePortsBillingTypeMeteredData), + string(ExpressRoutePortsBillingTypeUnlimitedData), + } +} + +func (s *ExpressRoutePortsBillingType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRoutePortsBillingType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRoutePortsBillingType(input string) (*ExpressRoutePortsBillingType, error) { + vals := map[string]ExpressRoutePortsBillingType{ + "metereddata": ExpressRoutePortsBillingTypeMeteredData, + "unlimiteddata": ExpressRoutePortsBillingTypeUnlimitedData, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRoutePortsBillingType(input) + return &out, nil +} + +type ExpressRoutePortsEncapsulation string + +const ( + ExpressRoutePortsEncapsulationDotOneQ ExpressRoutePortsEncapsulation = "Dot1Q" + ExpressRoutePortsEncapsulationQinQ ExpressRoutePortsEncapsulation = "QinQ" +) + +func PossibleValuesForExpressRoutePortsEncapsulation() []string { + return []string{ + string(ExpressRoutePortsEncapsulationDotOneQ), + string(ExpressRoutePortsEncapsulationQinQ), + } +} + +func (s *ExpressRoutePortsEncapsulation) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRoutePortsEncapsulation(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRoutePortsEncapsulation(input string) (*ExpressRoutePortsEncapsulation, error) { + vals := map[string]ExpressRoutePortsEncapsulation{ + "dot1q": ExpressRoutePortsEncapsulationDotOneQ, + "qinq": ExpressRoutePortsEncapsulationQinQ, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRoutePortsEncapsulation(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/expressrouteports/id_expressrouteport.go b/resource-manager/network/2024-01-01/expressrouteports/id_expressrouteport.go new file mode 100644 index 00000000000..6ac3a3831e8 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteports/id_expressrouteport.go @@ -0,0 +1,130 @@ +package expressrouteports + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ExpressRoutePortId{}) +} + +var _ resourceids.ResourceId = &ExpressRoutePortId{} + +// ExpressRoutePortId is a struct representing the Resource ID for a Express Route Port +type ExpressRoutePortId struct { + SubscriptionId string + ResourceGroupName string + ExpressRoutePortName string +} + +// NewExpressRoutePortID returns a new ExpressRoutePortId struct +func NewExpressRoutePortID(subscriptionId string, resourceGroupName string, expressRoutePortName string) ExpressRoutePortId { + return ExpressRoutePortId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRoutePortName: expressRoutePortName, + } +} + +// ParseExpressRoutePortID parses 'input' into a ExpressRoutePortId +func ParseExpressRoutePortID(input string) (*ExpressRoutePortId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRoutePortId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRoutePortId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseExpressRoutePortIDInsensitively parses 'input' case-insensitively into a ExpressRoutePortId +// note: this method should only be used for API response data and not user input +func ParseExpressRoutePortIDInsensitively(input string) (*ExpressRoutePortId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRoutePortId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRoutePortId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ExpressRoutePortId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRoutePortName, ok = input.Parsed["expressRoutePortName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRoutePortName", input) + } + + return nil +} + +// ValidateExpressRoutePortID checks that 'input' can be parsed as a Express Route Port ID +func ValidateExpressRoutePortID(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 := ParseExpressRoutePortID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Express Route Port ID +func (id ExpressRoutePortId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRoutePorts/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRoutePortName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Express Route Port ID +func (id ExpressRoutePortId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRoutePorts", "expressRoutePorts", "expressRoutePorts"), + resourceids.UserSpecifiedSegment("expressRoutePortName", "expressRoutePortValue"), + } +} + +// String returns a human-readable description of this Express Route Port ID +func (id ExpressRoutePortId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Port Name: %q", id.ExpressRoutePortName), + } + return fmt.Sprintf("Express Route Port (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressrouteports/id_expressrouteport_test.go b/resource-manager/network/2024-01-01/expressrouteports/id_expressrouteport_test.go new file mode 100644 index 00000000000..ddf9459854a --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteports/id_expressrouteport_test.go @@ -0,0 +1,282 @@ +package expressrouteports + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ExpressRoutePortId{} + +func TestNewExpressRoutePortID(t *testing.T) { + id := NewExpressRoutePortID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRoutePortValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRoutePortName != "expressRoutePortValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRoutePortName'", id.ExpressRoutePortName, "expressRoutePortValue") + } +} + +func TestFormatExpressRoutePortID(t *testing.T) { + actual := NewExpressRoutePortID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRoutePortValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseExpressRoutePortID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRoutePortId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue", + Expected: &ExpressRoutePortId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRoutePortName: "expressRoutePortValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRoutePortID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRoutePortName != v.Expected.ExpressRoutePortName { + t.Fatalf("Expected %q but got %q for ExpressRoutePortName", v.Expected.ExpressRoutePortName, actual.ExpressRoutePortName) + } + + } +} + +func TestParseExpressRoutePortIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRoutePortId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpOrTs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue", + Expected: &ExpressRoutePortId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRoutePortName: "expressRoutePortValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRoutePorts/expressRoutePortValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpOrTs/eXpReSsRoUtEpOrTvAlUe", + Expected: &ExpressRoutePortId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRoutePortName: "eXpReSsRoUtEpOrTvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpOrTs/eXpReSsRoUtEpOrTvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRoutePortIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRoutePortName != v.Expected.ExpressRoutePortName { + t.Fatalf("Expected %q but got %q for ExpressRoutePortName", v.Expected.ExpressRoutePortName, actual.ExpressRoutePortName) + } + + } +} + +func TestSegmentsForExpressRoutePortId(t *testing.T) { + segments := ExpressRoutePortId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ExpressRoutePortId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressrouteports/method_createorupdate.go b/resource-manager/network/2024-01-01/expressrouteports/method_createorupdate.go new file mode 100644 index 00000000000..34782a4d4f3 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteports/method_createorupdate.go @@ -0,0 +1,75 @@ +package expressrouteports + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRoutePort +} + +// CreateOrUpdate ... +func (c ExpressRoutePortsClient) CreateOrUpdate(ctx context.Context, id ExpressRoutePortId, input ExpressRoutePort) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c ExpressRoutePortsClient) CreateOrUpdateThenPoll(ctx context.Context, id ExpressRoutePortId, input ExpressRoutePort) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressrouteports/method_delete.go b/resource-manager/network/2024-01-01/expressrouteports/method_delete.go new file mode 100644 index 00000000000..899e7de35bd --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteports/method_delete.go @@ -0,0 +1,71 @@ +package expressrouteports + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c ExpressRoutePortsClient) Delete(ctx context.Context, id ExpressRoutePortId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c ExpressRoutePortsClient) DeleteThenPoll(ctx context.Context, id ExpressRoutePortId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/expressrouteports/method_generateloa.go b/resource-manager/network/2024-01-01/expressrouteports/method_generateloa.go new file mode 100644 index 00000000000..d0010451bf9 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteports/method_generateloa.go @@ -0,0 +1,59 @@ +package expressrouteports + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GenerateLOAOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *GenerateExpressRoutePortsLOAResult +} + +// GenerateLOA ... +func (c ExpressRoutePortsClient) GenerateLOA(ctx context.Context, id ExpressRoutePortId, input GenerateExpressRoutePortsLOARequest) (result GenerateLOAOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/generateLoa", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model GenerateExpressRoutePortsLOAResult + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/expressrouteports/method_get.go b/resource-manager/network/2024-01-01/expressrouteports/method_get.go new file mode 100644 index 00000000000..0f35b842ad6 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteports/method_get.go @@ -0,0 +1,54 @@ +package expressrouteports + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRoutePort +} + +// Get ... +func (c ExpressRoutePortsClient) Get(ctx context.Context, id ExpressRoutePortId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ExpressRoutePort + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/expressrouteports/method_list.go b/resource-manager/network/2024-01-01/expressrouteports/method_list.go new file mode 100644 index 00000000000..0daec47a467 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteports/method_list.go @@ -0,0 +1,93 @@ +package expressrouteports + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ExpressRoutePort +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []ExpressRoutePort +} + +// List ... +func (c ExpressRoutePortsClient) List(ctx context.Context, id commonids.SubscriptionId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/expressRoutePorts", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ExpressRoutePort `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c ExpressRoutePortsClient) ListComplete(ctx context.Context, id commonids.SubscriptionId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, ExpressRoutePortOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ExpressRoutePortsClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate ExpressRoutePortOperationPredicate) (result ListCompleteResult, err error) { + items := make([]ExpressRoutePort, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/expressrouteports/method_listbyresourcegroup.go b/resource-manager/network/2024-01-01/expressrouteports/method_listbyresourcegroup.go new file mode 100644 index 00000000000..11c0c743535 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteports/method_listbyresourcegroup.go @@ -0,0 +1,93 @@ +package expressrouteports + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListByResourceGroupOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ExpressRoutePort +} + +type ListByResourceGroupCompleteResult struct { + LatestHttpResponse *http.Response + Items []ExpressRoutePort +} + +// ListByResourceGroup ... +func (c ExpressRoutePortsClient) ListByResourceGroup(ctx context.Context, id commonids.ResourceGroupId) (result ListByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/expressRoutePorts", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ExpressRoutePort `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListByResourceGroupComplete retrieves all the results into a single object +func (c ExpressRoutePortsClient) ListByResourceGroupComplete(ctx context.Context, id commonids.ResourceGroupId) (ListByResourceGroupCompleteResult, error) { + return c.ListByResourceGroupCompleteMatchingPredicate(ctx, id, ExpressRoutePortOperationPredicate{}) +} + +// ListByResourceGroupCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ExpressRoutePortsClient) ListByResourceGroupCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate ExpressRoutePortOperationPredicate) (result ListByResourceGroupCompleteResult, err error) { + items := make([]ExpressRoutePort, 0) + + resp, err := c.ListByResourceGroup(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListByResourceGroupCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/expressrouteports/method_updatetags.go b/resource-manager/network/2024-01-01/expressrouteports/method_updatetags.go new file mode 100644 index 00000000000..fef0242df71 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteports/method_updatetags.go @@ -0,0 +1,58 @@ +package expressrouteports + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRoutePort +} + +// UpdateTags ... +func (c ExpressRoutePortsClient) UpdateTags(ctx context.Context, id ExpressRoutePortId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ExpressRoutePort + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/expressrouteports/model_expressroutelink.go b/resource-manager/network/2024-01-01/expressrouteports/model_expressroutelink.go new file mode 100644 index 00000000000..60ed59156ad --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteports/model_expressroutelink.go @@ -0,0 +1,11 @@ +package expressrouteports + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ExpressRouteLinkPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteports/model_expressroutelinkmacsecconfig.go b/resource-manager/network/2024-01-01/expressrouteports/model_expressroutelinkmacsecconfig.go new file mode 100644 index 00000000000..f41c94b3401 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteports/model_expressroutelinkmacsecconfig.go @@ -0,0 +1,11 @@ +package expressrouteports + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteLinkMacSecConfig struct { + CakSecretIdentifier *string `json:"cakSecretIdentifier,omitempty"` + Cipher *ExpressRouteLinkMacSecCipher `json:"cipher,omitempty"` + CknSecretIdentifier *string `json:"cknSecretIdentifier,omitempty"` + SciState *ExpressRouteLinkMacSecSciState `json:"sciState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteports/model_expressroutelinkpropertiesformat.go b/resource-manager/network/2024-01-01/expressrouteports/model_expressroutelinkpropertiesformat.go new file mode 100644 index 00000000000..a9fd2f6e03d --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteports/model_expressroutelinkpropertiesformat.go @@ -0,0 +1,16 @@ +package expressrouteports + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteLinkPropertiesFormat struct { + AdminState *ExpressRouteLinkAdminState `json:"adminState,omitempty"` + ColoLocation *string `json:"coloLocation,omitempty"` + ConnectorType *ExpressRouteLinkConnectorType `json:"connectorType,omitempty"` + InterfaceName *string `json:"interfaceName,omitempty"` + MacSecConfig *ExpressRouteLinkMacSecConfig `json:"macSecConfig,omitempty"` + PatchPanelId *string `json:"patchPanelId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RackId *string `json:"rackId,omitempty"` + RouterName *string `json:"routerName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteports/model_expressrouteport.go b/resource-manager/network/2024-01-01/expressrouteports/model_expressrouteport.go new file mode 100644 index 00000000000..4e2aa94784f --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteports/model_expressrouteport.go @@ -0,0 +1,19 @@ +package expressrouteports + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRoutePort struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ExpressRoutePortPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteports/model_expressrouteportpropertiesformat.go b/resource-manager/network/2024-01-01/expressrouteports/model_expressrouteportpropertiesformat.go new file mode 100644 index 00000000000..897d5ea08de --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteports/model_expressrouteportpropertiesformat.go @@ -0,0 +1,19 @@ +package expressrouteports + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRoutePortPropertiesFormat struct { + AllocationDate *string `json:"allocationDate,omitempty"` + BandwidthInGbps *int64 `json:"bandwidthInGbps,omitempty"` + BillingType *ExpressRoutePortsBillingType `json:"billingType,omitempty"` + Circuits *[]SubResource `json:"circuits,omitempty"` + Encapsulation *ExpressRoutePortsEncapsulation `json:"encapsulation,omitempty"` + EtherType *string `json:"etherType,omitempty"` + Links *[]ExpressRouteLink `json:"links,omitempty"` + Mtu *string `json:"mtu,omitempty"` + PeeringLocation *string `json:"peeringLocation,omitempty"` + ProvisionedBandwidthInGbps *float64 `json:"provisionedBandwidthInGbps,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteports/model_generateexpressrouteportsloarequest.go b/resource-manager/network/2024-01-01/expressrouteports/model_generateexpressrouteportsloarequest.go new file mode 100644 index 00000000000..d588660f834 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteports/model_generateexpressrouteportsloarequest.go @@ -0,0 +1,8 @@ +package expressrouteports + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GenerateExpressRoutePortsLOARequest struct { + CustomerName string `json:"customerName"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteports/model_generateexpressrouteportsloaresult.go b/resource-manager/network/2024-01-01/expressrouteports/model_generateexpressrouteportsloaresult.go new file mode 100644 index 00000000000..54defeace0f --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteports/model_generateexpressrouteportsloaresult.go @@ -0,0 +1,8 @@ +package expressrouteports + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GenerateExpressRoutePortsLOAResult struct { + EncodedContent *string `json:"encodedContent,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteports/model_subresource.go b/resource-manager/network/2024-01-01/expressrouteports/model_subresource.go new file mode 100644 index 00000000000..ef7329a3163 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteports/model_subresource.go @@ -0,0 +1,8 @@ +package expressrouteports + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteports/model_tagsobject.go b/resource-manager/network/2024-01-01/expressrouteports/model_tagsobject.go new file mode 100644 index 00000000000..d0cb6f9d317 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteports/model_tagsobject.go @@ -0,0 +1,8 @@ +package expressrouteports + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteports/predicates.go b/resource-manager/network/2024-01-01/expressrouteports/predicates.go new file mode 100644 index 00000000000..7339fac991b --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteports/predicates.go @@ -0,0 +1,37 @@ +package expressrouteports + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRoutePortOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p ExpressRoutePortOperationPredicate) Matches(input ExpressRoutePort) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/expressrouteports/version.go b/resource-manager/network/2024-01-01/expressrouteports/version.go new file mode 100644 index 00000000000..31813ca97bb --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteports/version.go @@ -0,0 +1,12 @@ +package expressrouteports + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/expressrouteports/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/expressrouteportslocations/README.md b/resource-manager/network/2024-01-01/expressrouteportslocations/README.md new file mode 100644 index 00000000000..fc3689b53b5 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportslocations/README.md @@ -0,0 +1,54 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressrouteportslocations` Documentation + +The `expressrouteportslocations` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressrouteportslocations" +``` + + +### Client Initialization + +```go +client := expressrouteportslocations.NewExpressRoutePortsLocationsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ExpressRoutePortsLocationsClient.Get` + +```go +ctx := context.TODO() +id := expressrouteportslocations.NewExpressRoutePortsLocationID("12345678-1234-9876-4563-123456789012", "expressRoutePortsLocationValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ExpressRoutePortsLocationsClient.List` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/expressrouteportslocations/client.go b/resource-manager/network/2024-01-01/expressrouteportslocations/client.go new file mode 100644 index 00000000000..070961a7825 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportslocations/client.go @@ -0,0 +1,26 @@ +package expressrouteportslocations + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRoutePortsLocationsClient struct { + Client *resourcemanager.Client +} + +func NewExpressRoutePortsLocationsClientWithBaseURI(sdkApi sdkEnv.Api) (*ExpressRoutePortsLocationsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "expressrouteportslocations", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ExpressRoutePortsLocationsClient: %+v", err) + } + + return &ExpressRoutePortsLocationsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/expressrouteportslocations/constants.go b/resource-manager/network/2024-01-01/expressrouteportslocations/constants.go new file mode 100644 index 00000000000..79d7bad3ae5 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportslocations/constants.go @@ -0,0 +1,57 @@ +package expressrouteportslocations + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/expressrouteportslocations/id_expressrouteportslocation.go b/resource-manager/network/2024-01-01/expressrouteportslocations/id_expressrouteportslocation.go new file mode 100644 index 00000000000..94e09ce7a77 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportslocations/id_expressrouteportslocation.go @@ -0,0 +1,121 @@ +package expressrouteportslocations + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ExpressRoutePortsLocationId{}) +} + +var _ resourceids.ResourceId = &ExpressRoutePortsLocationId{} + +// ExpressRoutePortsLocationId is a struct representing the Resource ID for a Express Route Ports Location +type ExpressRoutePortsLocationId struct { + SubscriptionId string + ExpressRoutePortsLocationName string +} + +// NewExpressRoutePortsLocationID returns a new ExpressRoutePortsLocationId struct +func NewExpressRoutePortsLocationID(subscriptionId string, expressRoutePortsLocationName string) ExpressRoutePortsLocationId { + return ExpressRoutePortsLocationId{ + SubscriptionId: subscriptionId, + ExpressRoutePortsLocationName: expressRoutePortsLocationName, + } +} + +// ParseExpressRoutePortsLocationID parses 'input' into a ExpressRoutePortsLocationId +func ParseExpressRoutePortsLocationID(input string) (*ExpressRoutePortsLocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRoutePortsLocationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRoutePortsLocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseExpressRoutePortsLocationIDInsensitively parses 'input' case-insensitively into a ExpressRoutePortsLocationId +// note: this method should only be used for API response data and not user input +func ParseExpressRoutePortsLocationIDInsensitively(input string) (*ExpressRoutePortsLocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRoutePortsLocationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRoutePortsLocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ExpressRoutePortsLocationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ExpressRoutePortsLocationName, ok = input.Parsed["expressRoutePortsLocationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRoutePortsLocationName", input) + } + + return nil +} + +// ValidateExpressRoutePortsLocationID checks that 'input' can be parsed as a Express Route Ports Location ID +func ValidateExpressRoutePortsLocationID(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 := ParseExpressRoutePortsLocationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Express Route Ports Location ID +func (id ExpressRoutePortsLocationId) ID() string { + fmtString := "/subscriptions/%s/providers/Microsoft.Network/expressRoutePortsLocations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ExpressRoutePortsLocationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Express Route Ports Location ID +func (id ExpressRoutePortsLocationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRoutePortsLocations", "expressRoutePortsLocations", "expressRoutePortsLocations"), + resourceids.UserSpecifiedSegment("expressRoutePortsLocationName", "expressRoutePortsLocationValue"), + } +} + +// String returns a human-readable description of this Express Route Ports Location ID +func (id ExpressRoutePortsLocationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Express Route Ports Location Name: %q", id.ExpressRoutePortsLocationName), + } + return fmt.Sprintf("Express Route Ports Location (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressrouteportslocations/id_expressrouteportslocation_test.go b/resource-manager/network/2024-01-01/expressrouteportslocations/id_expressrouteportslocation_test.go new file mode 100644 index 00000000000..f10f6641906 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportslocations/id_expressrouteportslocation_test.go @@ -0,0 +1,237 @@ +package expressrouteportslocations + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ExpressRoutePortsLocationId{} + +func TestNewExpressRoutePortsLocationID(t *testing.T) { + id := NewExpressRoutePortsLocationID("12345678-1234-9876-4563-123456789012", "expressRoutePortsLocationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ExpressRoutePortsLocationName != "expressRoutePortsLocationValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRoutePortsLocationName'", id.ExpressRoutePortsLocationName, "expressRoutePortsLocationValue") + } +} + +func TestFormatExpressRoutePortsLocationID(t *testing.T) { + actual := NewExpressRoutePortsLocationID("12345678-1234-9876-4563-123456789012", "expressRoutePortsLocationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/expressRoutePortsLocations/expressRoutePortsLocationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseExpressRoutePortsLocationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRoutePortsLocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/expressRoutePortsLocations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/expressRoutePortsLocations/expressRoutePortsLocationValue", + Expected: &ExpressRoutePortsLocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ExpressRoutePortsLocationName: "expressRoutePortsLocationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/expressRoutePortsLocations/expressRoutePortsLocationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRoutePortsLocationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ExpressRoutePortsLocationName != v.Expected.ExpressRoutePortsLocationName { + t.Fatalf("Expected %q but got %q for ExpressRoutePortsLocationName", v.Expected.ExpressRoutePortsLocationName, actual.ExpressRoutePortsLocationName) + } + + } +} + +func TestParseExpressRoutePortsLocationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRoutePortsLocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/expressRoutePortsLocations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpOrTsLoCaTiOnS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/expressRoutePortsLocations/expressRoutePortsLocationValue", + Expected: &ExpressRoutePortsLocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ExpressRoutePortsLocationName: "expressRoutePortsLocationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/expressRoutePortsLocations/expressRoutePortsLocationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpOrTsLoCaTiOnS/eXpReSsRoUtEpOrTsLoCaTiOnVaLuE", + Expected: &ExpressRoutePortsLocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ExpressRoutePortsLocationName: "eXpReSsRoUtEpOrTsLoCaTiOnVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpOrTsLoCaTiOnS/eXpReSsRoUtEpOrTsLoCaTiOnVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRoutePortsLocationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ExpressRoutePortsLocationName != v.Expected.ExpressRoutePortsLocationName { + t.Fatalf("Expected %q but got %q for ExpressRoutePortsLocationName", v.Expected.ExpressRoutePortsLocationName, actual.ExpressRoutePortsLocationName) + } + + } +} + +func TestSegmentsForExpressRoutePortsLocationId(t *testing.T) { + segments := ExpressRoutePortsLocationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ExpressRoutePortsLocationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressrouteportslocations/method_get.go b/resource-manager/network/2024-01-01/expressrouteportslocations/method_get.go new file mode 100644 index 00000000000..58048a2240a --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportslocations/method_get.go @@ -0,0 +1,54 @@ +package expressrouteportslocations + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRoutePortsLocation +} + +// Get ... +func (c ExpressRoutePortsLocationsClient) Get(ctx context.Context, id ExpressRoutePortsLocationId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ExpressRoutePortsLocation + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/expressrouteportslocations/method_list.go b/resource-manager/network/2024-01-01/expressrouteportslocations/method_list.go new file mode 100644 index 00000000000..cdb1774aac9 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportslocations/method_list.go @@ -0,0 +1,93 @@ +package expressrouteportslocations + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ExpressRoutePortsLocation +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []ExpressRoutePortsLocation +} + +// List ... +func (c ExpressRoutePortsLocationsClient) List(ctx context.Context, id commonids.SubscriptionId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/expressRoutePortsLocations", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ExpressRoutePortsLocation `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c ExpressRoutePortsLocationsClient) ListComplete(ctx context.Context, id commonids.SubscriptionId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, ExpressRoutePortsLocationOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ExpressRoutePortsLocationsClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate ExpressRoutePortsLocationOperationPredicate) (result ListCompleteResult, err error) { + items := make([]ExpressRoutePortsLocation, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/expressrouteportslocations/model_expressrouteportslocation.go b/resource-manager/network/2024-01-01/expressrouteportslocations/model_expressrouteportslocation.go new file mode 100644 index 00000000000..86d94dc7922 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportslocations/model_expressrouteportslocation.go @@ -0,0 +1,13 @@ +package expressrouteportslocations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRoutePortsLocation struct { + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ExpressRoutePortsLocationPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteportslocations/model_expressrouteportslocationbandwidths.go b/resource-manager/network/2024-01-01/expressrouteportslocations/model_expressrouteportslocationbandwidths.go new file mode 100644 index 00000000000..018cb977672 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportslocations/model_expressrouteportslocationbandwidths.go @@ -0,0 +1,9 @@ +package expressrouteportslocations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRoutePortsLocationBandwidths struct { + OfferName *string `json:"offerName,omitempty"` + ValueInGbps *int64 `json:"valueInGbps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteportslocations/model_expressrouteportslocationpropertiesformat.go b/resource-manager/network/2024-01-01/expressrouteportslocations/model_expressrouteportslocationpropertiesformat.go new file mode 100644 index 00000000000..fa52c31306b --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportslocations/model_expressrouteportslocationpropertiesformat.go @@ -0,0 +1,11 @@ +package expressrouteportslocations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRoutePortsLocationPropertiesFormat struct { + Address *string `json:"address,omitempty"` + AvailableBandwidths *[]ExpressRoutePortsLocationBandwidths `json:"availableBandwidths,omitempty"` + Contact *string `json:"contact,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteportslocations/predicates.go b/resource-manager/network/2024-01-01/expressrouteportslocations/predicates.go new file mode 100644 index 00000000000..3b345c2e1f5 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportslocations/predicates.go @@ -0,0 +1,32 @@ +package expressrouteportslocations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRoutePortsLocationOperationPredicate struct { + Id *string + Location *string + Name *string + Type *string +} + +func (p ExpressRoutePortsLocationOperationPredicate) Matches(input ExpressRoutePortsLocation) bool { + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/expressrouteportslocations/version.go b/resource-manager/network/2024-01-01/expressrouteportslocations/version.go new file mode 100644 index 00000000000..e8620892046 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteportslocations/version.go @@ -0,0 +1,12 @@ +package expressrouteportslocations + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/expressrouteportslocations/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/expressrouteproviderports/README.md b/resource-manager/network/2024-01-01/expressrouteproviderports/README.md new file mode 100644 index 00000000000..81e2483a70a --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteproviderports/README.md @@ -0,0 +1,54 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressrouteproviderports` Documentation + +The `expressrouteproviderports` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressrouteproviderports" +``` + + +### Client Initialization + +```go +client := expressrouteproviderports.NewExpressRouteProviderPortsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ExpressRouteProviderPortsClient.ExpressRouteProviderPort` + +```go +ctx := context.TODO() +id := expressrouteproviderports.NewExpressRouteProviderPortID("12345678-1234-9876-4563-123456789012", "expressRouteProviderPortValue") + +read, err := client.ExpressRouteProviderPort(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ExpressRouteProviderPortsClient.LocationList` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.LocationList(ctx, id, expressrouteproviderports.DefaultLocationListOperationOptions())` can be used to do batched pagination +items, err := client.LocationListComplete(ctx, id, expressrouteproviderports.DefaultLocationListOperationOptions()) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/expressrouteproviderports/client.go b/resource-manager/network/2024-01-01/expressrouteproviderports/client.go new file mode 100644 index 00000000000..696d17bbfd6 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteproviderports/client.go @@ -0,0 +1,26 @@ +package expressrouteproviderports + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteProviderPortsClient struct { + Client *resourcemanager.Client +} + +func NewExpressRouteProviderPortsClientWithBaseURI(sdkApi sdkEnv.Api) (*ExpressRouteProviderPortsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "expressrouteproviderports", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ExpressRouteProviderPortsClient: %+v", err) + } + + return &ExpressRouteProviderPortsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/expressrouteproviderports/id_expressrouteproviderport.go b/resource-manager/network/2024-01-01/expressrouteproviderports/id_expressrouteproviderport.go new file mode 100644 index 00000000000..2e734bb82c3 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteproviderports/id_expressrouteproviderport.go @@ -0,0 +1,121 @@ +package expressrouteproviderports + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ExpressRouteProviderPortId{}) +} + +var _ resourceids.ResourceId = &ExpressRouteProviderPortId{} + +// ExpressRouteProviderPortId is a struct representing the Resource ID for a Express Route Provider Port +type ExpressRouteProviderPortId struct { + SubscriptionId string + ExpressRouteProviderPortName string +} + +// NewExpressRouteProviderPortID returns a new ExpressRouteProviderPortId struct +func NewExpressRouteProviderPortID(subscriptionId string, expressRouteProviderPortName string) ExpressRouteProviderPortId { + return ExpressRouteProviderPortId{ + SubscriptionId: subscriptionId, + ExpressRouteProviderPortName: expressRouteProviderPortName, + } +} + +// ParseExpressRouteProviderPortID parses 'input' into a ExpressRouteProviderPortId +func ParseExpressRouteProviderPortID(input string) (*ExpressRouteProviderPortId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRouteProviderPortId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRouteProviderPortId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseExpressRouteProviderPortIDInsensitively parses 'input' case-insensitively into a ExpressRouteProviderPortId +// note: this method should only be used for API response data and not user input +func ParseExpressRouteProviderPortIDInsensitively(input string) (*ExpressRouteProviderPortId, error) { + parser := resourceids.NewParserFromResourceIdType(&ExpressRouteProviderPortId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ExpressRouteProviderPortId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ExpressRouteProviderPortId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ExpressRouteProviderPortName, ok = input.Parsed["expressRouteProviderPortName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRouteProviderPortName", input) + } + + return nil +} + +// ValidateExpressRouteProviderPortID checks that 'input' can be parsed as a Express Route Provider Port ID +func ValidateExpressRouteProviderPortID(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 := ParseExpressRouteProviderPortID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Express Route Provider Port ID +func (id ExpressRouteProviderPortId) ID() string { + fmtString := "/subscriptions/%s/providers/Microsoft.Network/expressRouteProviderPorts/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ExpressRouteProviderPortName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Express Route Provider Port ID +func (id ExpressRouteProviderPortId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRouteProviderPorts", "expressRouteProviderPorts", "expressRouteProviderPorts"), + resourceids.UserSpecifiedSegment("expressRouteProviderPortName", "expressRouteProviderPortValue"), + } +} + +// String returns a human-readable description of this Express Route Provider Port ID +func (id ExpressRouteProviderPortId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Express Route Provider Port Name: %q", id.ExpressRouteProviderPortName), + } + return fmt.Sprintf("Express Route Provider Port (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/expressrouteproviderports/id_expressrouteproviderport_test.go b/resource-manager/network/2024-01-01/expressrouteproviderports/id_expressrouteproviderport_test.go new file mode 100644 index 00000000000..1c4f938991d --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteproviderports/id_expressrouteproviderport_test.go @@ -0,0 +1,237 @@ +package expressrouteproviderports + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ExpressRouteProviderPortId{} + +func TestNewExpressRouteProviderPortID(t *testing.T) { + id := NewExpressRouteProviderPortID("12345678-1234-9876-4563-123456789012", "expressRouteProviderPortValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ExpressRouteProviderPortName != "expressRouteProviderPortValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRouteProviderPortName'", id.ExpressRouteProviderPortName, "expressRouteProviderPortValue") + } +} + +func TestFormatExpressRouteProviderPortID(t *testing.T) { + actual := NewExpressRouteProviderPortID("12345678-1234-9876-4563-123456789012", "expressRouteProviderPortValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/expressRouteProviderPorts/expressRouteProviderPortValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseExpressRouteProviderPortID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRouteProviderPortId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/expressRouteProviderPorts", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/expressRouteProviderPorts/expressRouteProviderPortValue", + Expected: &ExpressRouteProviderPortId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ExpressRouteProviderPortName: "expressRouteProviderPortValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/expressRouteProviderPorts/expressRouteProviderPortValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRouteProviderPortID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ExpressRouteProviderPortName != v.Expected.ExpressRouteProviderPortName { + t.Fatalf("Expected %q but got %q for ExpressRouteProviderPortName", v.Expected.ExpressRouteProviderPortName, actual.ExpressRouteProviderPortName) + } + + } +} + +func TestParseExpressRouteProviderPortIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ExpressRouteProviderPortId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/expressRouteProviderPorts", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpRoViDeRpOrTs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/expressRouteProviderPorts/expressRouteProviderPortValue", + Expected: &ExpressRouteProviderPortId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ExpressRouteProviderPortName: "expressRouteProviderPortValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/expressRouteProviderPorts/expressRouteProviderPortValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpRoViDeRpOrTs/eXpReSsRoUtEpRoViDeRpOrTvAlUe", + Expected: &ExpressRouteProviderPortId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ExpressRouteProviderPortName: "eXpReSsRoUtEpRoViDeRpOrTvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEpRoViDeRpOrTs/eXpReSsRoUtEpRoViDeRpOrTvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseExpressRouteProviderPortIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ExpressRouteProviderPortName != v.Expected.ExpressRouteProviderPortName { + t.Fatalf("Expected %q but got %q for ExpressRouteProviderPortName", v.Expected.ExpressRouteProviderPortName, actual.ExpressRouteProviderPortName) + } + + } +} + +func TestSegmentsForExpressRouteProviderPortId(t *testing.T) { + segments := ExpressRouteProviderPortId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ExpressRouteProviderPortId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/expressrouteproviderports/method_expressrouteproviderport.go b/resource-manager/network/2024-01-01/expressrouteproviderports/method_expressrouteproviderport.go new file mode 100644 index 00000000000..95cb93096c7 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteproviderports/method_expressrouteproviderport.go @@ -0,0 +1,54 @@ +package expressrouteproviderports + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteProviderPortOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ExpressRouteProviderPort +} + +// ExpressRouteProviderPort ... +func (c ExpressRouteProviderPortsClient) ExpressRouteProviderPort(ctx context.Context, id ExpressRouteProviderPortId) (result ExpressRouteProviderPortOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ExpressRouteProviderPort + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/expressrouteproviderports/method_locationlist.go b/resource-manager/network/2024-01-01/expressrouteproviderports/method_locationlist.go new file mode 100644 index 00000000000..816e682da61 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteproviderports/method_locationlist.go @@ -0,0 +1,121 @@ +package expressrouteproviderports + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LocationListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ExpressRouteProviderPort +} + +type LocationListCompleteResult struct { + LatestHttpResponse *http.Response + Items []ExpressRouteProviderPort +} + +type LocationListOperationOptions struct { + Filter *string +} + +func DefaultLocationListOperationOptions() LocationListOperationOptions { + return LocationListOperationOptions{} +} + +func (o LocationListOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o LocationListOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o LocationListOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Filter != nil { + out.Append("$filter", fmt.Sprintf("%v", *o.Filter)) + } + return &out +} + +// LocationList ... +func (c ExpressRouteProviderPortsClient) LocationList(ctx context.Context, id commonids.SubscriptionId, options LocationListOperationOptions) (result LocationListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/expressRouteProviderPorts", id.ID()), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ExpressRouteProviderPort `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// LocationListComplete retrieves all the results into a single object +func (c ExpressRouteProviderPortsClient) LocationListComplete(ctx context.Context, id commonids.SubscriptionId, options LocationListOperationOptions) (LocationListCompleteResult, error) { + return c.LocationListCompleteMatchingPredicate(ctx, id, options, ExpressRouteProviderPortOperationPredicate{}) +} + +// LocationListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ExpressRouteProviderPortsClient) LocationListCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, options LocationListOperationOptions, predicate ExpressRouteProviderPortOperationPredicate) (result LocationListCompleteResult, err error) { + items := make([]ExpressRouteProviderPort, 0) + + resp, err := c.LocationList(ctx, id, options) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = LocationListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/expressrouteproviderports/model_expressrouteproviderport.go b/resource-manager/network/2024-01-01/expressrouteproviderports/model_expressrouteproviderport.go new file mode 100644 index 00000000000..9bb3723c40e --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteproviderports/model_expressrouteproviderport.go @@ -0,0 +1,14 @@ +package expressrouteproviderports + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteProviderPort struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ExpressRouteProviderPortProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteproviderports/model_expressrouteproviderportproperties.go b/resource-manager/network/2024-01-01/expressrouteproviderports/model_expressrouteproviderportproperties.go new file mode 100644 index 00000000000..d0a93ccf046 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteproviderports/model_expressrouteproviderportproperties.go @@ -0,0 +1,15 @@ +package expressrouteproviderports + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteProviderPortProperties struct { + OverprovisionFactor *int64 `json:"overprovisionFactor,omitempty"` + PeeringLocation *string `json:"peeringLocation,omitempty"` + PortBandwidthInMbps *int64 `json:"portBandwidthInMbps,omitempty"` + PortPairDescriptor *string `json:"portPairDescriptor,omitempty"` + PrimaryAzurePort *string `json:"primaryAzurePort,omitempty"` + RemainingBandwidthInMbps *int64 `json:"remainingBandwidthInMbps,omitempty"` + SecondaryAzurePort *string `json:"secondaryAzurePort,omitempty"` + UsedBandwidthInMbps *int64 `json:"usedBandwidthInMbps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteproviderports/predicates.go b/resource-manager/network/2024-01-01/expressrouteproviderports/predicates.go new file mode 100644 index 00000000000..ea48d5c374c --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteproviderports/predicates.go @@ -0,0 +1,37 @@ +package expressrouteproviderports + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteProviderPortOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p ExpressRouteProviderPortOperationPredicate) Matches(input ExpressRouteProviderPort) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/expressrouteproviderports/version.go b/resource-manager/network/2024-01-01/expressrouteproviderports/version.go new file mode 100644 index 00000000000..956f9fcf59c --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteproviderports/version.go @@ -0,0 +1,12 @@ +package expressrouteproviderports + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/expressrouteproviderports/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/expressrouteserviceproviders/README.md b/resource-manager/network/2024-01-01/expressrouteserviceproviders/README.md new file mode 100644 index 00000000000..11e66d75bc8 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteserviceproviders/README.md @@ -0,0 +1,38 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressrouteserviceproviders` Documentation + +The `expressrouteserviceproviders` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/expressrouteserviceproviders" +``` + + +### Client Initialization + +```go +client := expressrouteserviceproviders.NewExpressRouteServiceProvidersClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ExpressRouteServiceProvidersClient.List` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/expressrouteserviceproviders/client.go b/resource-manager/network/2024-01-01/expressrouteserviceproviders/client.go new file mode 100644 index 00000000000..d071b668e37 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteserviceproviders/client.go @@ -0,0 +1,26 @@ +package expressrouteserviceproviders + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteServiceProvidersClient struct { + Client *resourcemanager.Client +} + +func NewExpressRouteServiceProvidersClientWithBaseURI(sdkApi sdkEnv.Api) (*ExpressRouteServiceProvidersClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "expressrouteserviceproviders", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ExpressRouteServiceProvidersClient: %+v", err) + } + + return &ExpressRouteServiceProvidersClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/expressrouteserviceproviders/constants.go b/resource-manager/network/2024-01-01/expressrouteserviceproviders/constants.go new file mode 100644 index 00000000000..7e0b7b9a059 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteserviceproviders/constants.go @@ -0,0 +1,57 @@ +package expressrouteserviceproviders + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/expressrouteserviceproviders/method_list.go b/resource-manager/network/2024-01-01/expressrouteserviceproviders/method_list.go new file mode 100644 index 00000000000..632d9f32454 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteserviceproviders/method_list.go @@ -0,0 +1,93 @@ +package expressrouteserviceproviders + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ExpressRouteServiceProvider +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []ExpressRouteServiceProvider +} + +// List ... +func (c ExpressRouteServiceProvidersClient) List(ctx context.Context, id commonids.SubscriptionId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/expressRouteServiceProviders", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ExpressRouteServiceProvider `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c ExpressRouteServiceProvidersClient) ListComplete(ctx context.Context, id commonids.SubscriptionId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, ExpressRouteServiceProviderOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ExpressRouteServiceProvidersClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate ExpressRouteServiceProviderOperationPredicate) (result ListCompleteResult, err error) { + items := make([]ExpressRouteServiceProvider, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/expressrouteserviceproviders/model_expressrouteserviceprovider.go b/resource-manager/network/2024-01-01/expressrouteserviceproviders/model_expressrouteserviceprovider.go new file mode 100644 index 00000000000..156136ef150 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteserviceproviders/model_expressrouteserviceprovider.go @@ -0,0 +1,13 @@ +package expressrouteserviceproviders + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteServiceProvider struct { + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ExpressRouteServiceProviderPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteserviceproviders/model_expressrouteserviceproviderbandwidthsoffered.go b/resource-manager/network/2024-01-01/expressrouteserviceproviders/model_expressrouteserviceproviderbandwidthsoffered.go new file mode 100644 index 00000000000..72758b5e1d5 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteserviceproviders/model_expressrouteserviceproviderbandwidthsoffered.go @@ -0,0 +1,9 @@ +package expressrouteserviceproviders + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteServiceProviderBandwidthsOffered struct { + OfferName *string `json:"offerName,omitempty"` + ValueInMbps *int64 `json:"valueInMbps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteserviceproviders/model_expressrouteserviceproviderpropertiesformat.go b/resource-manager/network/2024-01-01/expressrouteserviceproviders/model_expressrouteserviceproviderpropertiesformat.go new file mode 100644 index 00000000000..e3c3cc178f9 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteserviceproviders/model_expressrouteserviceproviderpropertiesformat.go @@ -0,0 +1,10 @@ +package expressrouteserviceproviders + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteServiceProviderPropertiesFormat struct { + BandwidthsOffered *[]ExpressRouteServiceProviderBandwidthsOffered `json:"bandwidthsOffered,omitempty"` + PeeringLocations *[]string `json:"peeringLocations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/expressrouteserviceproviders/predicates.go b/resource-manager/network/2024-01-01/expressrouteserviceproviders/predicates.go new file mode 100644 index 00000000000..d2c605983d7 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteserviceproviders/predicates.go @@ -0,0 +1,32 @@ +package expressrouteserviceproviders + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteServiceProviderOperationPredicate struct { + Id *string + Location *string + Name *string + Type *string +} + +func (p ExpressRouteServiceProviderOperationPredicate) Matches(input ExpressRouteServiceProvider) bool { + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/expressrouteserviceproviders/version.go b/resource-manager/network/2024-01-01/expressrouteserviceproviders/version.go new file mode 100644 index 00000000000..382c55b65d8 --- /dev/null +++ b/resource-manager/network/2024-01-01/expressrouteserviceproviders/version.go @@ -0,0 +1,12 @@ +package expressrouteserviceproviders + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/expressrouteserviceproviders/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/README.md b/resource-manager/network/2024-01-01/firewallpolicies/README.md new file mode 100644 index 00000000000..344800f8260 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/README.md @@ -0,0 +1,355 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/firewallpolicies` Documentation + +The `firewallpolicies` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/firewallpolicies" +``` + + +### Client Initialization + +```go +client := firewallpolicies.NewFirewallPoliciesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `FirewallPoliciesClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := firewallpolicies.NewFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue") + +payload := firewallpolicies.FirewallPolicy{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `FirewallPoliciesClient.Delete` + +```go +ctx := context.TODO() +id := firewallpolicies.NewFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `FirewallPoliciesClient.FirewallPolicyDeploymentsDeploy` + +```go +ctx := context.TODO() +id := firewallpolicies.NewFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue") + +if err := client.FirewallPolicyDeploymentsDeployThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `FirewallPoliciesClient.FirewallPolicyDraftsCreateOrUpdate` + +```go +ctx := context.TODO() +id := firewallpolicies.NewFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue") + +payload := firewallpolicies.FirewallPolicyDraft{ + // ... +} + + +read, err := client.FirewallPolicyDraftsCreateOrUpdate(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `FirewallPoliciesClient.FirewallPolicyDraftsDelete` + +```go +ctx := context.TODO() +id := firewallpolicies.NewFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue") + +read, err := client.FirewallPolicyDraftsDelete(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `FirewallPoliciesClient.FirewallPolicyDraftsGet` + +```go +ctx := context.TODO() +id := firewallpolicies.NewFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue") + +read, err := client.FirewallPolicyDraftsGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `FirewallPoliciesClient.FirewallPolicyIdpsSignaturesFilterValuesList` + +```go +ctx := context.TODO() +id := firewallpolicies.NewFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue") + +payload := firewallpolicies.SignatureOverridesFilterValuesQuery{ + // ... +} + + +read, err := client.FirewallPolicyIdpsSignaturesFilterValuesList(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `FirewallPoliciesClient.FirewallPolicyIdpsSignaturesList` + +```go +ctx := context.TODO() +id := firewallpolicies.NewFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue") + +payload := firewallpolicies.IDPSQueryObject{ + // ... +} + + +read, err := client.FirewallPolicyIdpsSignaturesList(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `FirewallPoliciesClient.FirewallPolicyIdpsSignaturesOverridesGet` + +```go +ctx := context.TODO() +id := firewallpolicies.NewFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue") + +read, err := client.FirewallPolicyIdpsSignaturesOverridesGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `FirewallPoliciesClient.FirewallPolicyIdpsSignaturesOverridesList` + +```go +ctx := context.TODO() +id := firewallpolicies.NewFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue") + +read, err := client.FirewallPolicyIdpsSignaturesOverridesList(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `FirewallPoliciesClient.FirewallPolicyIdpsSignaturesOverridesPatch` + +```go +ctx := context.TODO() +id := firewallpolicies.NewFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue") + +payload := firewallpolicies.SignaturesOverrides{ + // ... +} + + +read, err := client.FirewallPolicyIdpsSignaturesOverridesPatch(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `FirewallPoliciesClient.FirewallPolicyIdpsSignaturesOverridesPut` + +```go +ctx := context.TODO() +id := firewallpolicies.NewFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue") + +payload := firewallpolicies.SignaturesOverrides{ + // ... +} + + +read, err := client.FirewallPolicyIdpsSignaturesOverridesPut(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `FirewallPoliciesClient.FirewallPolicyRuleCollectionGroupDraftsCreateOrUpdate` + +```go +ctx := context.TODO() +id := firewallpolicies.NewRuleCollectionGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue", "ruleCollectionGroupValue") + +payload := firewallpolicies.FirewallPolicyRuleCollectionGroupDraft{ + // ... +} + + +read, err := client.FirewallPolicyRuleCollectionGroupDraftsCreateOrUpdate(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `FirewallPoliciesClient.FirewallPolicyRuleCollectionGroupDraftsDelete` + +```go +ctx := context.TODO() +id := firewallpolicies.NewRuleCollectionGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue", "ruleCollectionGroupValue") + +read, err := client.FirewallPolicyRuleCollectionGroupDraftsDelete(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `FirewallPoliciesClient.FirewallPolicyRuleCollectionGroupDraftsGet` + +```go +ctx := context.TODO() +id := firewallpolicies.NewRuleCollectionGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue", "ruleCollectionGroupValue") + +read, err := client.FirewallPolicyRuleCollectionGroupDraftsGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `FirewallPoliciesClient.Get` + +```go +ctx := context.TODO() +id := firewallpolicies.NewFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue") + +read, err := client.Get(ctx, id, firewallpolicies.DefaultGetOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `FirewallPoliciesClient.List` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `FirewallPoliciesClient.ListAll` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.ListAll(ctx, id)` can be used to do batched pagination +items, err := client.ListAllComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `FirewallPoliciesClient.UpdateTags` + +```go +ctx := context.TODO() +id := firewallpolicies.NewFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue") + +payload := firewallpolicies.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/firewallpolicies/client.go b/resource-manager/network/2024-01-01/firewallpolicies/client.go new file mode 100644 index 00000000000..a162ae7a1c4 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/client.go @@ -0,0 +1,26 @@ +package firewallpolicies + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPoliciesClient struct { + Client *resourcemanager.Client +} + +func NewFirewallPoliciesClientWithBaseURI(sdkApi sdkEnv.Api) (*FirewallPoliciesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "firewallpolicies", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating FirewallPoliciesClient: %+v", err) + } + + return &FirewallPoliciesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/constants.go b/resource-manager/network/2024-01-01/firewallpolicies/constants.go new file mode 100644 index 00000000000..1888a04c5a5 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/constants.go @@ -0,0 +1,669 @@ +package firewallpolicies + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AutoLearnPrivateRangesMode string + +const ( + AutoLearnPrivateRangesModeDisabled AutoLearnPrivateRangesMode = "Disabled" + AutoLearnPrivateRangesModeEnabled AutoLearnPrivateRangesMode = "Enabled" +) + +func PossibleValuesForAutoLearnPrivateRangesMode() []string { + return []string{ + string(AutoLearnPrivateRangesModeDisabled), + string(AutoLearnPrivateRangesModeEnabled), + } +} + +func (s *AutoLearnPrivateRangesMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAutoLearnPrivateRangesMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAutoLearnPrivateRangesMode(input string) (*AutoLearnPrivateRangesMode, error) { + vals := map[string]AutoLearnPrivateRangesMode{ + "disabled": AutoLearnPrivateRangesModeDisabled, + "enabled": AutoLearnPrivateRangesModeEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := AutoLearnPrivateRangesMode(input) + return &out, nil +} + +type AzureFirewallThreatIntelMode string + +const ( + AzureFirewallThreatIntelModeAlert AzureFirewallThreatIntelMode = "Alert" + AzureFirewallThreatIntelModeDeny AzureFirewallThreatIntelMode = "Deny" + AzureFirewallThreatIntelModeOff AzureFirewallThreatIntelMode = "Off" +) + +func PossibleValuesForAzureFirewallThreatIntelMode() []string { + return []string{ + string(AzureFirewallThreatIntelModeAlert), + string(AzureFirewallThreatIntelModeDeny), + string(AzureFirewallThreatIntelModeOff), + } +} + +func (s *AzureFirewallThreatIntelMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAzureFirewallThreatIntelMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAzureFirewallThreatIntelMode(input string) (*AzureFirewallThreatIntelMode, error) { + vals := map[string]AzureFirewallThreatIntelMode{ + "alert": AzureFirewallThreatIntelModeAlert, + "deny": AzureFirewallThreatIntelModeDeny, + "off": AzureFirewallThreatIntelModeOff, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := AzureFirewallThreatIntelMode(input) + return &out, nil +} + +type FirewallPolicyFilterRuleCollectionActionType string + +const ( + FirewallPolicyFilterRuleCollectionActionTypeAllow FirewallPolicyFilterRuleCollectionActionType = "Allow" + FirewallPolicyFilterRuleCollectionActionTypeDeny FirewallPolicyFilterRuleCollectionActionType = "Deny" +) + +func PossibleValuesForFirewallPolicyFilterRuleCollectionActionType() []string { + return []string{ + string(FirewallPolicyFilterRuleCollectionActionTypeAllow), + string(FirewallPolicyFilterRuleCollectionActionTypeDeny), + } +} + +func (s *FirewallPolicyFilterRuleCollectionActionType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFirewallPolicyFilterRuleCollectionActionType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFirewallPolicyFilterRuleCollectionActionType(input string) (*FirewallPolicyFilterRuleCollectionActionType, error) { + vals := map[string]FirewallPolicyFilterRuleCollectionActionType{ + "allow": FirewallPolicyFilterRuleCollectionActionTypeAllow, + "deny": FirewallPolicyFilterRuleCollectionActionTypeDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FirewallPolicyFilterRuleCollectionActionType(input) + return &out, nil +} + +type FirewallPolicyIDPSQuerySortOrder string + +const ( + FirewallPolicyIDPSQuerySortOrderAscending FirewallPolicyIDPSQuerySortOrder = "Ascending" + FirewallPolicyIDPSQuerySortOrderDescending FirewallPolicyIDPSQuerySortOrder = "Descending" +) + +func PossibleValuesForFirewallPolicyIDPSQuerySortOrder() []string { + return []string{ + string(FirewallPolicyIDPSQuerySortOrderAscending), + string(FirewallPolicyIDPSQuerySortOrderDescending), + } +} + +func (s *FirewallPolicyIDPSQuerySortOrder) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFirewallPolicyIDPSQuerySortOrder(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFirewallPolicyIDPSQuerySortOrder(input string) (*FirewallPolicyIDPSQuerySortOrder, error) { + vals := map[string]FirewallPolicyIDPSQuerySortOrder{ + "ascending": FirewallPolicyIDPSQuerySortOrderAscending, + "descending": FirewallPolicyIDPSQuerySortOrderDescending, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FirewallPolicyIDPSQuerySortOrder(input) + return &out, nil +} + +type FirewallPolicyIDPSSignatureDirection int64 + +const ( + FirewallPolicyIDPSSignatureDirectionFour FirewallPolicyIDPSSignatureDirection = 4 + FirewallPolicyIDPSSignatureDirectionOne FirewallPolicyIDPSSignatureDirection = 1 + FirewallPolicyIDPSSignatureDirectionThree FirewallPolicyIDPSSignatureDirection = 3 + FirewallPolicyIDPSSignatureDirectionTwo FirewallPolicyIDPSSignatureDirection = 2 + FirewallPolicyIDPSSignatureDirectionZero FirewallPolicyIDPSSignatureDirection = 0 +) + +func PossibleValuesForFirewallPolicyIDPSSignatureDirection() []int64 { + return []int64{ + int64(FirewallPolicyIDPSSignatureDirectionFour), + int64(FirewallPolicyIDPSSignatureDirectionOne), + int64(FirewallPolicyIDPSSignatureDirectionThree), + int64(FirewallPolicyIDPSSignatureDirectionTwo), + int64(FirewallPolicyIDPSSignatureDirectionZero), + } +} + +type FirewallPolicyIDPSSignatureMode int64 + +const ( + FirewallPolicyIDPSSignatureModeOne FirewallPolicyIDPSSignatureMode = 1 + FirewallPolicyIDPSSignatureModeTwo FirewallPolicyIDPSSignatureMode = 2 + FirewallPolicyIDPSSignatureModeZero FirewallPolicyIDPSSignatureMode = 0 +) + +func PossibleValuesForFirewallPolicyIDPSSignatureMode() []int64 { + return []int64{ + int64(FirewallPolicyIDPSSignatureModeOne), + int64(FirewallPolicyIDPSSignatureModeTwo), + int64(FirewallPolicyIDPSSignatureModeZero), + } +} + +type FirewallPolicyIDPSSignatureSeverity int64 + +const ( + FirewallPolicyIDPSSignatureSeverityOne FirewallPolicyIDPSSignatureSeverity = 1 + FirewallPolicyIDPSSignatureSeverityThree FirewallPolicyIDPSSignatureSeverity = 3 + FirewallPolicyIDPSSignatureSeverityTwo FirewallPolicyIDPSSignatureSeverity = 2 +) + +func PossibleValuesForFirewallPolicyIDPSSignatureSeverity() []int64 { + return []int64{ + int64(FirewallPolicyIDPSSignatureSeverityOne), + int64(FirewallPolicyIDPSSignatureSeverityThree), + int64(FirewallPolicyIDPSSignatureSeverityTwo), + } +} + +type FirewallPolicyIntrusionDetectionProfileType string + +const ( + FirewallPolicyIntrusionDetectionProfileTypeAdvanced FirewallPolicyIntrusionDetectionProfileType = "Advanced" + FirewallPolicyIntrusionDetectionProfileTypeBasic FirewallPolicyIntrusionDetectionProfileType = "Basic" + FirewallPolicyIntrusionDetectionProfileTypeExtended FirewallPolicyIntrusionDetectionProfileType = "Extended" + FirewallPolicyIntrusionDetectionProfileTypeStandard FirewallPolicyIntrusionDetectionProfileType = "Standard" +) + +func PossibleValuesForFirewallPolicyIntrusionDetectionProfileType() []string { + return []string{ + string(FirewallPolicyIntrusionDetectionProfileTypeAdvanced), + string(FirewallPolicyIntrusionDetectionProfileTypeBasic), + string(FirewallPolicyIntrusionDetectionProfileTypeExtended), + string(FirewallPolicyIntrusionDetectionProfileTypeStandard), + } +} + +func (s *FirewallPolicyIntrusionDetectionProfileType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFirewallPolicyIntrusionDetectionProfileType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFirewallPolicyIntrusionDetectionProfileType(input string) (*FirewallPolicyIntrusionDetectionProfileType, error) { + vals := map[string]FirewallPolicyIntrusionDetectionProfileType{ + "advanced": FirewallPolicyIntrusionDetectionProfileTypeAdvanced, + "basic": FirewallPolicyIntrusionDetectionProfileTypeBasic, + "extended": FirewallPolicyIntrusionDetectionProfileTypeExtended, + "standard": FirewallPolicyIntrusionDetectionProfileTypeStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FirewallPolicyIntrusionDetectionProfileType(input) + return &out, nil +} + +type FirewallPolicyIntrusionDetectionProtocol string + +const ( + FirewallPolicyIntrusionDetectionProtocolANY FirewallPolicyIntrusionDetectionProtocol = "ANY" + FirewallPolicyIntrusionDetectionProtocolICMP FirewallPolicyIntrusionDetectionProtocol = "ICMP" + FirewallPolicyIntrusionDetectionProtocolTCP FirewallPolicyIntrusionDetectionProtocol = "TCP" + FirewallPolicyIntrusionDetectionProtocolUDP FirewallPolicyIntrusionDetectionProtocol = "UDP" +) + +func PossibleValuesForFirewallPolicyIntrusionDetectionProtocol() []string { + return []string{ + string(FirewallPolicyIntrusionDetectionProtocolANY), + string(FirewallPolicyIntrusionDetectionProtocolICMP), + string(FirewallPolicyIntrusionDetectionProtocolTCP), + string(FirewallPolicyIntrusionDetectionProtocolUDP), + } +} + +func (s *FirewallPolicyIntrusionDetectionProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFirewallPolicyIntrusionDetectionProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFirewallPolicyIntrusionDetectionProtocol(input string) (*FirewallPolicyIntrusionDetectionProtocol, error) { + vals := map[string]FirewallPolicyIntrusionDetectionProtocol{ + "any": FirewallPolicyIntrusionDetectionProtocolANY, + "icmp": FirewallPolicyIntrusionDetectionProtocolICMP, + "tcp": FirewallPolicyIntrusionDetectionProtocolTCP, + "udp": FirewallPolicyIntrusionDetectionProtocolUDP, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FirewallPolicyIntrusionDetectionProtocol(input) + return &out, nil +} + +type FirewallPolicyIntrusionDetectionStateType string + +const ( + FirewallPolicyIntrusionDetectionStateTypeAlert FirewallPolicyIntrusionDetectionStateType = "Alert" + FirewallPolicyIntrusionDetectionStateTypeDeny FirewallPolicyIntrusionDetectionStateType = "Deny" + FirewallPolicyIntrusionDetectionStateTypeOff FirewallPolicyIntrusionDetectionStateType = "Off" +) + +func PossibleValuesForFirewallPolicyIntrusionDetectionStateType() []string { + return []string{ + string(FirewallPolicyIntrusionDetectionStateTypeAlert), + string(FirewallPolicyIntrusionDetectionStateTypeDeny), + string(FirewallPolicyIntrusionDetectionStateTypeOff), + } +} + +func (s *FirewallPolicyIntrusionDetectionStateType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFirewallPolicyIntrusionDetectionStateType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFirewallPolicyIntrusionDetectionStateType(input string) (*FirewallPolicyIntrusionDetectionStateType, error) { + vals := map[string]FirewallPolicyIntrusionDetectionStateType{ + "alert": FirewallPolicyIntrusionDetectionStateTypeAlert, + "deny": FirewallPolicyIntrusionDetectionStateTypeDeny, + "off": FirewallPolicyIntrusionDetectionStateTypeOff, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FirewallPolicyIntrusionDetectionStateType(input) + return &out, nil +} + +type FirewallPolicyNatRuleCollectionActionType string + +const ( + FirewallPolicyNatRuleCollectionActionTypeDNAT FirewallPolicyNatRuleCollectionActionType = "DNAT" +) + +func PossibleValuesForFirewallPolicyNatRuleCollectionActionType() []string { + return []string{ + string(FirewallPolicyNatRuleCollectionActionTypeDNAT), + } +} + +func (s *FirewallPolicyNatRuleCollectionActionType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFirewallPolicyNatRuleCollectionActionType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFirewallPolicyNatRuleCollectionActionType(input string) (*FirewallPolicyNatRuleCollectionActionType, error) { + vals := map[string]FirewallPolicyNatRuleCollectionActionType{ + "dnat": FirewallPolicyNatRuleCollectionActionTypeDNAT, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FirewallPolicyNatRuleCollectionActionType(input) + return &out, nil +} + +type FirewallPolicyRuleApplicationProtocolType string + +const ( + FirewallPolicyRuleApplicationProtocolTypeHTTP FirewallPolicyRuleApplicationProtocolType = "Http" + FirewallPolicyRuleApplicationProtocolTypeHTTPS FirewallPolicyRuleApplicationProtocolType = "Https" +) + +func PossibleValuesForFirewallPolicyRuleApplicationProtocolType() []string { + return []string{ + string(FirewallPolicyRuleApplicationProtocolTypeHTTP), + string(FirewallPolicyRuleApplicationProtocolTypeHTTPS), + } +} + +func (s *FirewallPolicyRuleApplicationProtocolType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFirewallPolicyRuleApplicationProtocolType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFirewallPolicyRuleApplicationProtocolType(input string) (*FirewallPolicyRuleApplicationProtocolType, error) { + vals := map[string]FirewallPolicyRuleApplicationProtocolType{ + "http": FirewallPolicyRuleApplicationProtocolTypeHTTP, + "https": FirewallPolicyRuleApplicationProtocolTypeHTTPS, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FirewallPolicyRuleApplicationProtocolType(input) + return &out, nil +} + +type FirewallPolicyRuleCollectionType string + +const ( + FirewallPolicyRuleCollectionTypeFirewallPolicyFilterRuleCollection FirewallPolicyRuleCollectionType = "FirewallPolicyFilterRuleCollection" + FirewallPolicyRuleCollectionTypeFirewallPolicyNatRuleCollection FirewallPolicyRuleCollectionType = "FirewallPolicyNatRuleCollection" +) + +func PossibleValuesForFirewallPolicyRuleCollectionType() []string { + return []string{ + string(FirewallPolicyRuleCollectionTypeFirewallPolicyFilterRuleCollection), + string(FirewallPolicyRuleCollectionTypeFirewallPolicyNatRuleCollection), + } +} + +func (s *FirewallPolicyRuleCollectionType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFirewallPolicyRuleCollectionType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFirewallPolicyRuleCollectionType(input string) (*FirewallPolicyRuleCollectionType, error) { + vals := map[string]FirewallPolicyRuleCollectionType{ + "firewallpolicyfilterrulecollection": FirewallPolicyRuleCollectionTypeFirewallPolicyFilterRuleCollection, + "firewallpolicynatrulecollection": FirewallPolicyRuleCollectionTypeFirewallPolicyNatRuleCollection, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FirewallPolicyRuleCollectionType(input) + return &out, nil +} + +type FirewallPolicyRuleNetworkProtocol string + +const ( + FirewallPolicyRuleNetworkProtocolAny FirewallPolicyRuleNetworkProtocol = "Any" + FirewallPolicyRuleNetworkProtocolICMP FirewallPolicyRuleNetworkProtocol = "ICMP" + FirewallPolicyRuleNetworkProtocolTCP FirewallPolicyRuleNetworkProtocol = "TCP" + FirewallPolicyRuleNetworkProtocolUDP FirewallPolicyRuleNetworkProtocol = "UDP" +) + +func PossibleValuesForFirewallPolicyRuleNetworkProtocol() []string { + return []string{ + string(FirewallPolicyRuleNetworkProtocolAny), + string(FirewallPolicyRuleNetworkProtocolICMP), + string(FirewallPolicyRuleNetworkProtocolTCP), + string(FirewallPolicyRuleNetworkProtocolUDP), + } +} + +func (s *FirewallPolicyRuleNetworkProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFirewallPolicyRuleNetworkProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFirewallPolicyRuleNetworkProtocol(input string) (*FirewallPolicyRuleNetworkProtocol, error) { + vals := map[string]FirewallPolicyRuleNetworkProtocol{ + "any": FirewallPolicyRuleNetworkProtocolAny, + "icmp": FirewallPolicyRuleNetworkProtocolICMP, + "tcp": FirewallPolicyRuleNetworkProtocolTCP, + "udp": FirewallPolicyRuleNetworkProtocolUDP, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FirewallPolicyRuleNetworkProtocol(input) + return &out, nil +} + +type FirewallPolicyRuleType string + +const ( + FirewallPolicyRuleTypeApplicationRule FirewallPolicyRuleType = "ApplicationRule" + FirewallPolicyRuleTypeNatRule FirewallPolicyRuleType = "NatRule" + FirewallPolicyRuleTypeNetworkRule FirewallPolicyRuleType = "NetworkRule" +) + +func PossibleValuesForFirewallPolicyRuleType() []string { + return []string{ + string(FirewallPolicyRuleTypeApplicationRule), + string(FirewallPolicyRuleTypeNatRule), + string(FirewallPolicyRuleTypeNetworkRule), + } +} + +func (s *FirewallPolicyRuleType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFirewallPolicyRuleType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFirewallPolicyRuleType(input string) (*FirewallPolicyRuleType, error) { + vals := map[string]FirewallPolicyRuleType{ + "applicationrule": FirewallPolicyRuleTypeApplicationRule, + "natrule": FirewallPolicyRuleTypeNatRule, + "networkrule": FirewallPolicyRuleTypeNetworkRule, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FirewallPolicyRuleType(input) + return &out, nil +} + +type FirewallPolicySkuTier string + +const ( + FirewallPolicySkuTierBasic FirewallPolicySkuTier = "Basic" + FirewallPolicySkuTierPremium FirewallPolicySkuTier = "Premium" + FirewallPolicySkuTierStandard FirewallPolicySkuTier = "Standard" +) + +func PossibleValuesForFirewallPolicySkuTier() []string { + return []string{ + string(FirewallPolicySkuTierBasic), + string(FirewallPolicySkuTierPremium), + string(FirewallPolicySkuTierStandard), + } +} + +func (s *FirewallPolicySkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFirewallPolicySkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFirewallPolicySkuTier(input string) (*FirewallPolicySkuTier, error) { + vals := map[string]FirewallPolicySkuTier{ + "basic": FirewallPolicySkuTierBasic, + "premium": FirewallPolicySkuTierPremium, + "standard": FirewallPolicySkuTierStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FirewallPolicySkuTier(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/id_firewallpolicy.go b/resource-manager/network/2024-01-01/firewallpolicies/id_firewallpolicy.go new file mode 100644 index 00000000000..b3ab374101c --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/id_firewallpolicy.go @@ -0,0 +1,130 @@ +package firewallpolicies + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&FirewallPolicyId{}) +} + +var _ resourceids.ResourceId = &FirewallPolicyId{} + +// FirewallPolicyId is a struct representing the Resource ID for a Firewall Policy +type FirewallPolicyId struct { + SubscriptionId string + ResourceGroupName string + FirewallPolicyName string +} + +// NewFirewallPolicyID returns a new FirewallPolicyId struct +func NewFirewallPolicyID(subscriptionId string, resourceGroupName string, firewallPolicyName string) FirewallPolicyId { + return FirewallPolicyId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + FirewallPolicyName: firewallPolicyName, + } +} + +// ParseFirewallPolicyID parses 'input' into a FirewallPolicyId +func ParseFirewallPolicyID(input string) (*FirewallPolicyId, error) { + parser := resourceids.NewParserFromResourceIdType(&FirewallPolicyId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := FirewallPolicyId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseFirewallPolicyIDInsensitively parses 'input' case-insensitively into a FirewallPolicyId +// note: this method should only be used for API response data and not user input +func ParseFirewallPolicyIDInsensitively(input string) (*FirewallPolicyId, error) { + parser := resourceids.NewParserFromResourceIdType(&FirewallPolicyId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := FirewallPolicyId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *FirewallPolicyId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.FirewallPolicyName, ok = input.Parsed["firewallPolicyName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "firewallPolicyName", input) + } + + return nil +} + +// ValidateFirewallPolicyID checks that 'input' can be parsed as a Firewall Policy ID +func ValidateFirewallPolicyID(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 := ParseFirewallPolicyID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Firewall Policy ID +func (id FirewallPolicyId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/firewallPolicies/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.FirewallPolicyName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Firewall Policy ID +func (id FirewallPolicyId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticFirewallPolicies", "firewallPolicies", "firewallPolicies"), + resourceids.UserSpecifiedSegment("firewallPolicyName", "firewallPolicyValue"), + } +} + +// String returns a human-readable description of this Firewall Policy ID +func (id FirewallPolicyId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Firewall Policy Name: %q", id.FirewallPolicyName), + } + return fmt.Sprintf("Firewall Policy (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/id_firewallpolicy_test.go b/resource-manager/network/2024-01-01/firewallpolicies/id_firewallpolicy_test.go new file mode 100644 index 00000000000..ef55791e4fc --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/id_firewallpolicy_test.go @@ -0,0 +1,282 @@ +package firewallpolicies + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &FirewallPolicyId{} + +func TestNewFirewallPolicyID(t *testing.T) { + id := NewFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.FirewallPolicyName != "firewallPolicyValue" { + t.Fatalf("Expected %q but got %q for Segment 'FirewallPolicyName'", id.FirewallPolicyName, "firewallPolicyValue") + } +} + +func TestFormatFirewallPolicyID(t *testing.T) { + actual := NewFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseFirewallPolicyID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *FirewallPolicyId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue", + Expected: &FirewallPolicyId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + FirewallPolicyName: "firewallPolicyValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseFirewallPolicyID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.FirewallPolicyName != v.Expected.FirewallPolicyName { + t.Fatalf("Expected %q but got %q for FirewallPolicyName", v.Expected.FirewallPolicyName, actual.FirewallPolicyName) + } + + } +} + +func TestParseFirewallPolicyIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *FirewallPolicyId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/fIrEwAlLpOlIcIeS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue", + Expected: &FirewallPolicyId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + FirewallPolicyName: "firewallPolicyValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/fIrEwAlLpOlIcIeS/fIrEwAlLpOlIcYvAlUe", + Expected: &FirewallPolicyId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + FirewallPolicyName: "fIrEwAlLpOlIcYvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/fIrEwAlLpOlIcIeS/fIrEwAlLpOlIcYvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseFirewallPolicyIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.FirewallPolicyName != v.Expected.FirewallPolicyName { + t.Fatalf("Expected %q but got %q for FirewallPolicyName", v.Expected.FirewallPolicyName, actual.FirewallPolicyName) + } + + } +} + +func TestSegmentsForFirewallPolicyId(t *testing.T) { + segments := FirewallPolicyId{}.Segments() + if len(segments) == 0 { + t.Fatalf("FirewallPolicyId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/id_rulecollectiongroup.go b/resource-manager/network/2024-01-01/firewallpolicies/id_rulecollectiongroup.go new file mode 100644 index 00000000000..8e6983cfa1e --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/id_rulecollectiongroup.go @@ -0,0 +1,139 @@ +package firewallpolicies + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&RuleCollectionGroupId{}) +} + +var _ resourceids.ResourceId = &RuleCollectionGroupId{} + +// RuleCollectionGroupId is a struct representing the Resource ID for a Rule Collection Group +type RuleCollectionGroupId struct { + SubscriptionId string + ResourceGroupName string + FirewallPolicyName string + RuleCollectionGroupName string +} + +// NewRuleCollectionGroupID returns a new RuleCollectionGroupId struct +func NewRuleCollectionGroupID(subscriptionId string, resourceGroupName string, firewallPolicyName string, ruleCollectionGroupName string) RuleCollectionGroupId { + return RuleCollectionGroupId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + FirewallPolicyName: firewallPolicyName, + RuleCollectionGroupName: ruleCollectionGroupName, + } +} + +// ParseRuleCollectionGroupID parses 'input' into a RuleCollectionGroupId +func ParseRuleCollectionGroupID(input string) (*RuleCollectionGroupId, error) { + parser := resourceids.NewParserFromResourceIdType(&RuleCollectionGroupId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RuleCollectionGroupId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseRuleCollectionGroupIDInsensitively parses 'input' case-insensitively into a RuleCollectionGroupId +// note: this method should only be used for API response data and not user input +func ParseRuleCollectionGroupIDInsensitively(input string) (*RuleCollectionGroupId, error) { + parser := resourceids.NewParserFromResourceIdType(&RuleCollectionGroupId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RuleCollectionGroupId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *RuleCollectionGroupId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.FirewallPolicyName, ok = input.Parsed["firewallPolicyName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "firewallPolicyName", input) + } + + if id.RuleCollectionGroupName, ok = input.Parsed["ruleCollectionGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "ruleCollectionGroupName", input) + } + + return nil +} + +// ValidateRuleCollectionGroupID checks that 'input' can be parsed as a Rule Collection Group ID +func ValidateRuleCollectionGroupID(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 := ParseRuleCollectionGroupID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Rule Collection Group ID +func (id RuleCollectionGroupId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/firewallPolicies/%s/ruleCollectionGroups/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.FirewallPolicyName, id.RuleCollectionGroupName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Rule Collection Group ID +func (id RuleCollectionGroupId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticFirewallPolicies", "firewallPolicies", "firewallPolicies"), + resourceids.UserSpecifiedSegment("firewallPolicyName", "firewallPolicyValue"), + resourceids.StaticSegment("staticRuleCollectionGroups", "ruleCollectionGroups", "ruleCollectionGroups"), + resourceids.UserSpecifiedSegment("ruleCollectionGroupName", "ruleCollectionGroupValue"), + } +} + +// String returns a human-readable description of this Rule Collection Group ID +func (id RuleCollectionGroupId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Firewall Policy Name: %q", id.FirewallPolicyName), + fmt.Sprintf("Rule Collection Group Name: %q", id.RuleCollectionGroupName), + } + return fmt.Sprintf("Rule Collection Group (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/id_rulecollectiongroup_test.go b/resource-manager/network/2024-01-01/firewallpolicies/id_rulecollectiongroup_test.go new file mode 100644 index 00000000000..a44bf5f7bf8 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/id_rulecollectiongroup_test.go @@ -0,0 +1,327 @@ +package firewallpolicies + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &RuleCollectionGroupId{} + +func TestNewRuleCollectionGroupID(t *testing.T) { + id := NewRuleCollectionGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue", "ruleCollectionGroupValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.FirewallPolicyName != "firewallPolicyValue" { + t.Fatalf("Expected %q but got %q for Segment 'FirewallPolicyName'", id.FirewallPolicyName, "firewallPolicyValue") + } + + if id.RuleCollectionGroupName != "ruleCollectionGroupValue" { + t.Fatalf("Expected %q but got %q for Segment 'RuleCollectionGroupName'", id.RuleCollectionGroupName, "ruleCollectionGroupValue") + } +} + +func TestFormatRuleCollectionGroupID(t *testing.T) { + actual := NewRuleCollectionGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue", "ruleCollectionGroupValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue/ruleCollectionGroups/ruleCollectionGroupValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseRuleCollectionGroupID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RuleCollectionGroupId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue/ruleCollectionGroups", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue/ruleCollectionGroups/ruleCollectionGroupValue", + Expected: &RuleCollectionGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + FirewallPolicyName: "firewallPolicyValue", + RuleCollectionGroupName: "ruleCollectionGroupValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue/ruleCollectionGroups/ruleCollectionGroupValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRuleCollectionGroupID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.FirewallPolicyName != v.Expected.FirewallPolicyName { + t.Fatalf("Expected %q but got %q for FirewallPolicyName", v.Expected.FirewallPolicyName, actual.FirewallPolicyName) + } + + if actual.RuleCollectionGroupName != v.Expected.RuleCollectionGroupName { + t.Fatalf("Expected %q but got %q for RuleCollectionGroupName", v.Expected.RuleCollectionGroupName, actual.RuleCollectionGroupName) + } + + } +} + +func TestParseRuleCollectionGroupIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RuleCollectionGroupId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/fIrEwAlLpOlIcIeS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/fIrEwAlLpOlIcIeS/fIrEwAlLpOlIcYvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue/ruleCollectionGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/fIrEwAlLpOlIcIeS/fIrEwAlLpOlIcYvAlUe/rUlEcOlLeCtIoNgRoUpS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue/ruleCollectionGroups/ruleCollectionGroupValue", + Expected: &RuleCollectionGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + FirewallPolicyName: "firewallPolicyValue", + RuleCollectionGroupName: "ruleCollectionGroupValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue/ruleCollectionGroups/ruleCollectionGroupValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/fIrEwAlLpOlIcIeS/fIrEwAlLpOlIcYvAlUe/rUlEcOlLeCtIoNgRoUpS/rUlEcOlLeCtIoNgRoUpVaLuE", + Expected: &RuleCollectionGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + FirewallPolicyName: "fIrEwAlLpOlIcYvAlUe", + RuleCollectionGroupName: "rUlEcOlLeCtIoNgRoUpVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/fIrEwAlLpOlIcIeS/fIrEwAlLpOlIcYvAlUe/rUlEcOlLeCtIoNgRoUpS/rUlEcOlLeCtIoNgRoUpVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRuleCollectionGroupIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.FirewallPolicyName != v.Expected.FirewallPolicyName { + t.Fatalf("Expected %q but got %q for FirewallPolicyName", v.Expected.FirewallPolicyName, actual.FirewallPolicyName) + } + + if actual.RuleCollectionGroupName != v.Expected.RuleCollectionGroupName { + t.Fatalf("Expected %q but got %q for RuleCollectionGroupName", v.Expected.RuleCollectionGroupName, actual.RuleCollectionGroupName) + } + + } +} + +func TestSegmentsForRuleCollectionGroupId(t *testing.T) { + segments := RuleCollectionGroupId{}.Segments() + if len(segments) == 0 { + t.Fatalf("RuleCollectionGroupId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/method_createorupdate.go b/resource-manager/network/2024-01-01/firewallpolicies/method_createorupdate.go new file mode 100644 index 00000000000..0492bbef61e --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/method_createorupdate.go @@ -0,0 +1,75 @@ +package firewallpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *FirewallPolicy +} + +// CreateOrUpdate ... +func (c FirewallPoliciesClient) CreateOrUpdate(ctx context.Context, id FirewallPolicyId, input FirewallPolicy) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c FirewallPoliciesClient) CreateOrUpdateThenPoll(ctx context.Context, id FirewallPolicyId, input FirewallPolicy) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/method_delete.go b/resource-manager/network/2024-01-01/firewallpolicies/method_delete.go new file mode 100644 index 00000000000..432932fda66 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/method_delete.go @@ -0,0 +1,71 @@ +package firewallpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c FirewallPoliciesClient) Delete(ctx context.Context, id FirewallPolicyId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c FirewallPoliciesClient) DeleteThenPoll(ctx context.Context, id FirewallPolicyId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicydeploymentsdeploy.go b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicydeploymentsdeploy.go new file mode 100644 index 00000000000..2b0ff5b7afe --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicydeploymentsdeploy.go @@ -0,0 +1,69 @@ +package firewallpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyDeploymentsDeployOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// FirewallPolicyDeploymentsDeploy ... +func (c FirewallPoliciesClient) FirewallPolicyDeploymentsDeploy(ctx context.Context, id FirewallPolicyId) (result FirewallPolicyDeploymentsDeployOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/deploy", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// FirewallPolicyDeploymentsDeployThenPoll performs FirewallPolicyDeploymentsDeploy then polls until it's completed +func (c FirewallPoliciesClient) FirewallPolicyDeploymentsDeployThenPoll(ctx context.Context, id FirewallPolicyId) error { + result, err := c.FirewallPolicyDeploymentsDeploy(ctx, id) + if err != nil { + return fmt.Errorf("performing FirewallPolicyDeploymentsDeploy: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after FirewallPolicyDeploymentsDeploy: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicydraftscreateorupdate.go b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicydraftscreateorupdate.go new file mode 100644 index 00000000000..357da5c76f6 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicydraftscreateorupdate.go @@ -0,0 +1,60 @@ +package firewallpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyDraftsCreateOrUpdateOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *FirewallPolicyDraft +} + +// FirewallPolicyDraftsCreateOrUpdate ... +func (c FirewallPoliciesClient) FirewallPolicyDraftsCreateOrUpdate(ctx context.Context, id FirewallPolicyId, input FirewallPolicyDraft) (result FirewallPolicyDraftsCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: fmt.Sprintf("%s/firewallPolicyDrafts/default", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model FirewallPolicyDraft + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicydraftsdelete.go b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicydraftsdelete.go new file mode 100644 index 00000000000..a0fd3352ff2 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicydraftsdelete.go @@ -0,0 +1,48 @@ +package firewallpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyDraftsDeleteOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData +} + +// FirewallPolicyDraftsDelete ... +func (c FirewallPoliciesClient) FirewallPolicyDraftsDelete(ctx context.Context, id FirewallPolicyId) (result FirewallPolicyDraftsDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: fmt.Sprintf("%s/firewallPolicyDrafts/default", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicydraftsget.go b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicydraftsget.go new file mode 100644 index 00000000000..19de14230bb --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicydraftsget.go @@ -0,0 +1,55 @@ +package firewallpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyDraftsGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *FirewallPolicyDraft +} + +// FirewallPolicyDraftsGet ... +func (c FirewallPoliciesClient) FirewallPolicyDraftsGet(ctx context.Context, id FirewallPolicyId) (result FirewallPolicyDraftsGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/firewallPolicyDrafts/default", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model FirewallPolicyDraft + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyidpssignaturesfiltervalueslist.go b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyidpssignaturesfiltervalueslist.go new file mode 100644 index 00000000000..e13bba542e4 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyidpssignaturesfiltervalueslist.go @@ -0,0 +1,59 @@ +package firewallpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyIdpsSignaturesFilterValuesListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *SignatureOverridesFilterValuesResponse +} + +// FirewallPolicyIdpsSignaturesFilterValuesList ... +func (c FirewallPoliciesClient) FirewallPolicyIdpsSignaturesFilterValuesList(ctx context.Context, id FirewallPolicyId, input SignatureOverridesFilterValuesQuery) (result FirewallPolicyIdpsSignaturesFilterValuesListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/listIdpsFilterOptions", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model SignatureOverridesFilterValuesResponse + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyidpssignatureslist.go b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyidpssignatureslist.go new file mode 100644 index 00000000000..3317a5b3046 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyidpssignatureslist.go @@ -0,0 +1,59 @@ +package firewallpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyIdpsSignaturesListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *QueryResults +} + +// FirewallPolicyIdpsSignaturesList ... +func (c FirewallPoliciesClient) FirewallPolicyIdpsSignaturesList(ctx context.Context, id FirewallPolicyId, input IDPSQueryObject) (result FirewallPolicyIdpsSignaturesListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/listIdpsSignatures", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model QueryResults + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyidpssignaturesoverridesget.go b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyidpssignaturesoverridesget.go new file mode 100644 index 00000000000..0a494459f55 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyidpssignaturesoverridesget.go @@ -0,0 +1,55 @@ +package firewallpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyIdpsSignaturesOverridesGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *SignaturesOverrides +} + +// FirewallPolicyIdpsSignaturesOverridesGet ... +func (c FirewallPoliciesClient) FirewallPolicyIdpsSignaturesOverridesGet(ctx context.Context, id FirewallPolicyId) (result FirewallPolicyIdpsSignaturesOverridesGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/signatureOverrides/default", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model SignaturesOverrides + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyidpssignaturesoverrideslist.go b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyidpssignaturesoverrideslist.go new file mode 100644 index 00000000000..0fb145a6c0c --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyidpssignaturesoverrideslist.go @@ -0,0 +1,55 @@ +package firewallpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyIdpsSignaturesOverridesListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *SignaturesOverridesList +} + +// FirewallPolicyIdpsSignaturesOverridesList ... +func (c FirewallPoliciesClient) FirewallPolicyIdpsSignaturesOverridesList(ctx context.Context, id FirewallPolicyId) (result FirewallPolicyIdpsSignaturesOverridesListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/signatureOverrides", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model SignaturesOverridesList + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyidpssignaturesoverridespatch.go b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyidpssignaturesoverridespatch.go new file mode 100644 index 00000000000..99eb2fc1d38 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyidpssignaturesoverridespatch.go @@ -0,0 +1,59 @@ +package firewallpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyIdpsSignaturesOverridesPatchOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *SignaturesOverrides +} + +// FirewallPolicyIdpsSignaturesOverridesPatch ... +func (c FirewallPoliciesClient) FirewallPolicyIdpsSignaturesOverridesPatch(ctx context.Context, id FirewallPolicyId, input SignaturesOverrides) (result FirewallPolicyIdpsSignaturesOverridesPatchOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: fmt.Sprintf("%s/signatureOverrides/default", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model SignaturesOverrides + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyidpssignaturesoverridesput.go b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyidpssignaturesoverridesput.go new file mode 100644 index 00000000000..2b131f1a401 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyidpssignaturesoverridesput.go @@ -0,0 +1,59 @@ +package firewallpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyIdpsSignaturesOverridesPutOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *SignaturesOverrides +} + +// FirewallPolicyIdpsSignaturesOverridesPut ... +func (c FirewallPoliciesClient) FirewallPolicyIdpsSignaturesOverridesPut(ctx context.Context, id FirewallPolicyId, input SignaturesOverrides) (result FirewallPolicyIdpsSignaturesOverridesPutOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: fmt.Sprintf("%s/signatureOverrides/default", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model SignaturesOverrides + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyrulecollectiongroupdraftscreateorupdate.go b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyrulecollectiongroupdraftscreateorupdate.go new file mode 100644 index 00000000000..19def263e37 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyrulecollectiongroupdraftscreateorupdate.go @@ -0,0 +1,60 @@ +package firewallpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyRuleCollectionGroupDraftsCreateOrUpdateOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *FirewallPolicyRuleCollectionGroupDraft +} + +// FirewallPolicyRuleCollectionGroupDraftsCreateOrUpdate ... +func (c FirewallPoliciesClient) FirewallPolicyRuleCollectionGroupDraftsCreateOrUpdate(ctx context.Context, id RuleCollectionGroupId, input FirewallPolicyRuleCollectionGroupDraft) (result FirewallPolicyRuleCollectionGroupDraftsCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: fmt.Sprintf("%s/ruleCollectionGroupDrafts/default", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model FirewallPolicyRuleCollectionGroupDraft + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyrulecollectiongroupdraftsdelete.go b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyrulecollectiongroupdraftsdelete.go new file mode 100644 index 00000000000..da02af84b53 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyrulecollectiongroupdraftsdelete.go @@ -0,0 +1,48 @@ +package firewallpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyRuleCollectionGroupDraftsDeleteOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData +} + +// FirewallPolicyRuleCollectionGroupDraftsDelete ... +func (c FirewallPoliciesClient) FirewallPolicyRuleCollectionGroupDraftsDelete(ctx context.Context, id RuleCollectionGroupId) (result FirewallPolicyRuleCollectionGroupDraftsDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: fmt.Sprintf("%s/ruleCollectionGroupDrafts/default", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyrulecollectiongroupdraftsget.go b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyrulecollectiongroupdraftsget.go new file mode 100644 index 00000000000..46a0e076225 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/method_firewallpolicyrulecollectiongroupdraftsget.go @@ -0,0 +1,55 @@ +package firewallpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyRuleCollectionGroupDraftsGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *FirewallPolicyRuleCollectionGroupDraft +} + +// FirewallPolicyRuleCollectionGroupDraftsGet ... +func (c FirewallPoliciesClient) FirewallPolicyRuleCollectionGroupDraftsGet(ctx context.Context, id RuleCollectionGroupId) (result FirewallPolicyRuleCollectionGroupDraftsGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/ruleCollectionGroupDrafts/default", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model FirewallPolicyRuleCollectionGroupDraft + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/method_get.go b/resource-manager/network/2024-01-01/firewallpolicies/method_get.go new file mode 100644 index 00000000000..6d04656e020 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/method_get.go @@ -0,0 +1,83 @@ +package firewallpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *FirewallPolicy +} + +type GetOperationOptions struct { + Expand *string +} + +func DefaultGetOperationOptions() GetOperationOptions { + return GetOperationOptions{} +} + +func (o GetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// Get ... +func (c FirewallPoliciesClient) Get(ctx context.Context, id FirewallPolicyId, options GetOperationOptions) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model FirewallPolicy + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/method_list.go b/resource-manager/network/2024-01-01/firewallpolicies/method_list.go new file mode 100644 index 00000000000..efe3cd5f08b --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/method_list.go @@ -0,0 +1,93 @@ +package firewallpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]FirewallPolicy +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []FirewallPolicy +} + +// List ... +func (c FirewallPoliciesClient) List(ctx context.Context, id commonids.ResourceGroupId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/firewallPolicies", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]FirewallPolicy `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c FirewallPoliciesClient) ListComplete(ctx context.Context, id commonids.ResourceGroupId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, FirewallPolicyOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c FirewallPoliciesClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate FirewallPolicyOperationPredicate) (result ListCompleteResult, err error) { + items := make([]FirewallPolicy, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/method_listall.go b/resource-manager/network/2024-01-01/firewallpolicies/method_listall.go new file mode 100644 index 00000000000..1984a126505 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/method_listall.go @@ -0,0 +1,93 @@ +package firewallpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAllOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]FirewallPolicy +} + +type ListAllCompleteResult struct { + LatestHttpResponse *http.Response + Items []FirewallPolicy +} + +// ListAll ... +func (c FirewallPoliciesClient) ListAll(ctx context.Context, id commonids.SubscriptionId) (result ListAllOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/firewallPolicies", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]FirewallPolicy `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListAllComplete retrieves all the results into a single object +func (c FirewallPoliciesClient) ListAllComplete(ctx context.Context, id commonids.SubscriptionId) (ListAllCompleteResult, error) { + return c.ListAllCompleteMatchingPredicate(ctx, id, FirewallPolicyOperationPredicate{}) +} + +// ListAllCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c FirewallPoliciesClient) ListAllCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate FirewallPolicyOperationPredicate) (result ListAllCompleteResult, err error) { + items := make([]FirewallPolicy, 0) + + resp, err := c.ListAll(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListAllCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/method_updatetags.go b/resource-manager/network/2024-01-01/firewallpolicies/method_updatetags.go new file mode 100644 index 00000000000..05b103ecce7 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/method_updatetags.go @@ -0,0 +1,58 @@ +package firewallpolicies + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *FirewallPolicy +} + +// UpdateTags ... +func (c FirewallPoliciesClient) UpdateTags(ctx context.Context, id FirewallPolicyId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model FirewallPolicy + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_applicationrule.go b/resource-manager/network/2024-01-01/firewallpolicies/model_applicationrule.go new file mode 100644 index 00000000000..29202064c8a --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_applicationrule.go @@ -0,0 +1,52 @@ +package firewallpolicies + +import ( + "encoding/json" + "fmt" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ FirewallPolicyRule = ApplicationRule{} + +type ApplicationRule struct { + DestinationAddresses *[]string `json:"destinationAddresses,omitempty"` + FqdnTags *[]string `json:"fqdnTags,omitempty"` + HTTPHeadersToInsert *[]FirewallPolicyHTTPHeaderToInsert `json:"httpHeadersToInsert,omitempty"` + Protocols *[]FirewallPolicyRuleApplicationProtocol `json:"protocols,omitempty"` + SourceAddresses *[]string `json:"sourceAddresses,omitempty"` + SourceIPGroups *[]string `json:"sourceIpGroups,omitempty"` + TargetFqdns *[]string `json:"targetFqdns,omitempty"` + TargetUrls *[]string `json:"targetUrls,omitempty"` + TerminateTLS *bool `json:"terminateTLS,omitempty"` + WebCategories *[]string `json:"webCategories,omitempty"` + + // Fields inherited from FirewallPolicyRule + Description *string `json:"description,omitempty"` + Name *string `json:"name,omitempty"` +} + +var _ json.Marshaler = ApplicationRule{} + +func (s ApplicationRule) MarshalJSON() ([]byte, error) { + type wrapper ApplicationRule + wrapped := wrapper(s) + encoded, err := json.Marshal(wrapped) + if err != nil { + return nil, fmt.Errorf("marshaling ApplicationRule: %+v", err) + } + + var decoded map[string]interface{} + if err := json.Unmarshal(encoded, &decoded); err != nil { + return nil, fmt.Errorf("unmarshaling ApplicationRule: %+v", err) + } + decoded["ruleType"] = "ApplicationRule" + + encoded, err = json.Marshal(decoded) + if err != nil { + return nil, fmt.Errorf("re-marshaling ApplicationRule: %+v", err) + } + + return encoded, nil +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_dnssettings.go b/resource-manager/network/2024-01-01/firewallpolicies/model_dnssettings.go new file mode 100644 index 00000000000..6983f66f9dd --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_dnssettings.go @@ -0,0 +1,10 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DnsSettings struct { + EnableProxy *bool `json:"enableProxy,omitempty"` + RequireProxyForNetworkRules *bool `json:"requireProxyForNetworkRules,omitempty"` + Servers *[]string `json:"servers,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_explicitproxy.go b/resource-manager/network/2024-01-01/firewallpolicies/model_explicitproxy.go new file mode 100644 index 00000000000..d8af7221ddf --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_explicitproxy.go @@ -0,0 +1,13 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExplicitProxy struct { + EnableExplicitProxy *bool `json:"enableExplicitProxy,omitempty"` + EnablePacFile *bool `json:"enablePacFile,omitempty"` + HTTPPort *int64 `json:"httpPort,omitempty"` + HTTPSPort *int64 `json:"httpsPort,omitempty"` + PacFile *string `json:"pacFile,omitempty"` + PacFilePort *int64 `json:"pacFilePort,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_filteritems.go b/resource-manager/network/2024-01-01/firewallpolicies/model_filteritems.go new file mode 100644 index 00000000000..943657d23f0 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_filteritems.go @@ -0,0 +1,9 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FilterItems struct { + Field *string `json:"field,omitempty"` + Values *[]string `json:"values,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicy.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicy.go new file mode 100644 index 00000000000..fb85165c9d9 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicy.go @@ -0,0 +1,19 @@ +package firewallpolicies + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FirewallPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicycertificateauthority.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicycertificateauthority.go new file mode 100644 index 00000000000..b1d1e5fcdd8 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicycertificateauthority.go @@ -0,0 +1,9 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyCertificateAuthority struct { + KeyVaultSecretId *string `json:"keyVaultSecretId,omitempty"` + Name *string `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicydraft.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicydraft.go new file mode 100644 index 00000000000..1f156e948dd --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicydraft.go @@ -0,0 +1,13 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyDraft struct { + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FirewallPolicyDraftProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicydraftproperties.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicydraftproperties.go new file mode 100644 index 00000000000..7303ad731f2 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicydraftproperties.go @@ -0,0 +1,16 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyDraftProperties struct { + BasePolicy *SubResource `json:"basePolicy,omitempty"` + DnsSettings *DnsSettings `json:"dnsSettings,omitempty"` + ExplicitProxy *ExplicitProxy `json:"explicitProxy,omitempty"` + Insights *FirewallPolicyInsights `json:"insights,omitempty"` + IntrusionDetection *FirewallPolicyIntrusionDetection `json:"intrusionDetection,omitempty"` + Snat *FirewallPolicySNAT `json:"snat,omitempty"` + Sql *FirewallPolicySQL `json:"sql,omitempty"` + ThreatIntelMode *AzureFirewallThreatIntelMode `json:"threatIntelMode,omitempty"` + ThreatIntelWhitelist *FirewallPolicyThreatIntelWhitelist `json:"threatIntelWhitelist,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyfilterrulecollection.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyfilterrulecollection.go new file mode 100644 index 00000000000..53b5f41f1d3 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyfilterrulecollection.go @@ -0,0 +1,81 @@ +package firewallpolicies + +import ( + "encoding/json" + "fmt" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ FirewallPolicyRuleCollection = FirewallPolicyFilterRuleCollection{} + +type FirewallPolicyFilterRuleCollection struct { + Action *FirewallPolicyFilterRuleCollectionAction `json:"action,omitempty"` + Rules *[]FirewallPolicyRule `json:"rules,omitempty"` + + // Fields inherited from FirewallPolicyRuleCollection + Name *string `json:"name,omitempty"` + Priority *int64 `json:"priority,omitempty"` +} + +var _ json.Marshaler = FirewallPolicyFilterRuleCollection{} + +func (s FirewallPolicyFilterRuleCollection) MarshalJSON() ([]byte, error) { + type wrapper FirewallPolicyFilterRuleCollection + wrapped := wrapper(s) + encoded, err := json.Marshal(wrapped) + if err != nil { + return nil, fmt.Errorf("marshaling FirewallPolicyFilterRuleCollection: %+v", err) + } + + var decoded map[string]interface{} + if err := json.Unmarshal(encoded, &decoded); err != nil { + return nil, fmt.Errorf("unmarshaling FirewallPolicyFilterRuleCollection: %+v", err) + } + decoded["ruleCollectionType"] = "FirewallPolicyFilterRuleCollection" + + encoded, err = json.Marshal(decoded) + if err != nil { + return nil, fmt.Errorf("re-marshaling FirewallPolicyFilterRuleCollection: %+v", err) + } + + return encoded, nil +} + +var _ json.Unmarshaler = &FirewallPolicyFilterRuleCollection{} + +func (s *FirewallPolicyFilterRuleCollection) UnmarshalJSON(bytes []byte) error { + type alias FirewallPolicyFilterRuleCollection + var decoded alias + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling into FirewallPolicyFilterRuleCollection: %+v", err) + } + + s.Action = decoded.Action + s.Name = decoded.Name + s.Priority = decoded.Priority + + var temp map[string]json.RawMessage + if err := json.Unmarshal(bytes, &temp); err != nil { + return fmt.Errorf("unmarshaling FirewallPolicyFilterRuleCollection into map[string]json.RawMessage: %+v", err) + } + + if v, ok := temp["rules"]; ok { + var listTemp []json.RawMessage + if err := json.Unmarshal(v, &listTemp); err != nil { + return fmt.Errorf("unmarshaling Rules into list []json.RawMessage: %+v", err) + } + + output := make([]FirewallPolicyRule, 0) + for i, val := range listTemp { + impl, err := unmarshalFirewallPolicyRuleImplementation(val) + if err != nil { + return fmt.Errorf("unmarshaling index %d field 'Rules' for 'FirewallPolicyFilterRuleCollection': %+v", i, err) + } + output = append(output, impl) + } + s.Rules = &output + } + return nil +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyfilterrulecollectionaction.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyfilterrulecollectionaction.go new file mode 100644 index 00000000000..fdd82344dc1 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyfilterrulecollectionaction.go @@ -0,0 +1,8 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyFilterRuleCollectionAction struct { + Type *FirewallPolicyFilterRuleCollectionActionType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyhttpheadertoinsert.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyhttpheadertoinsert.go new file mode 100644 index 00000000000..27586a9bc9d --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyhttpheadertoinsert.go @@ -0,0 +1,9 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyHTTPHeaderToInsert struct { + HeaderName *string `json:"headerName,omitempty"` + HeaderValue *string `json:"headerValue,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyinsights.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyinsights.go new file mode 100644 index 00000000000..5af7b2e446d --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyinsights.go @@ -0,0 +1,10 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyInsights struct { + IsEnabled *bool `json:"isEnabled,omitempty"` + LogAnalyticsResources *FirewallPolicyLogAnalyticsResources `json:"logAnalyticsResources,omitempty"` + RetentionDays *int64 `json:"retentionDays,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyintrusiondetection.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyintrusiondetection.go new file mode 100644 index 00000000000..f51c93257c5 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyintrusiondetection.go @@ -0,0 +1,10 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyIntrusionDetection struct { + Configuration *FirewallPolicyIntrusionDetectionConfiguration `json:"configuration,omitempty"` + Mode *FirewallPolicyIntrusionDetectionStateType `json:"mode,omitempty"` + Profile *FirewallPolicyIntrusionDetectionProfileType `json:"profile,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyintrusiondetectionbypasstrafficspecifications.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyintrusiondetectionbypasstrafficspecifications.go new file mode 100644 index 00000000000..088a6c5515f --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyintrusiondetectionbypasstrafficspecifications.go @@ -0,0 +1,15 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyIntrusionDetectionBypassTrafficSpecifications struct { + Description *string `json:"description,omitempty"` + DestinationAddresses *[]string `json:"destinationAddresses,omitempty"` + DestinationIPGroups *[]string `json:"destinationIpGroups,omitempty"` + DestinationPorts *[]string `json:"destinationPorts,omitempty"` + Name *string `json:"name,omitempty"` + Protocol *FirewallPolicyIntrusionDetectionProtocol `json:"protocol,omitempty"` + SourceAddresses *[]string `json:"sourceAddresses,omitempty"` + SourceIPGroups *[]string `json:"sourceIpGroups,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyintrusiondetectionconfiguration.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyintrusiondetectionconfiguration.go new file mode 100644 index 00000000000..dce919867c0 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyintrusiondetectionconfiguration.go @@ -0,0 +1,10 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyIntrusionDetectionConfiguration struct { + BypassTrafficSettings *[]FirewallPolicyIntrusionDetectionBypassTrafficSpecifications `json:"bypassTrafficSettings,omitempty"` + PrivateRanges *[]string `json:"privateRanges,omitempty"` + SignatureOverrides *[]FirewallPolicyIntrusionDetectionSignatureSpecification `json:"signatureOverrides,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyintrusiondetectionsignaturespecification.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyintrusiondetectionsignaturespecification.go new file mode 100644 index 00000000000..2bae7fe0f04 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyintrusiondetectionsignaturespecification.go @@ -0,0 +1,9 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyIntrusionDetectionSignatureSpecification struct { + Id *string `json:"id,omitempty"` + Mode *FirewallPolicyIntrusionDetectionStateType `json:"mode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyloganalyticsresources.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyloganalyticsresources.go new file mode 100644 index 00000000000..4f1280d942b --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyloganalyticsresources.go @@ -0,0 +1,9 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyLogAnalyticsResources struct { + DefaultWorkspaceId *SubResource `json:"defaultWorkspaceId,omitempty"` + Workspaces *[]FirewallPolicyLogAnalyticsWorkspace `json:"workspaces,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyloganalyticsworkspace.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyloganalyticsworkspace.go new file mode 100644 index 00000000000..4cc72aa7cbb --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyloganalyticsworkspace.go @@ -0,0 +1,9 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyLogAnalyticsWorkspace struct { + Region *string `json:"region,omitempty"` + WorkspaceId *SubResource `json:"workspaceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicynatrulecollection.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicynatrulecollection.go new file mode 100644 index 00000000000..71ddc01e8c2 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicynatrulecollection.go @@ -0,0 +1,81 @@ +package firewallpolicies + +import ( + "encoding/json" + "fmt" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ FirewallPolicyRuleCollection = FirewallPolicyNatRuleCollection{} + +type FirewallPolicyNatRuleCollection struct { + Action *FirewallPolicyNatRuleCollectionAction `json:"action,omitempty"` + Rules *[]FirewallPolicyRule `json:"rules,omitempty"` + + // Fields inherited from FirewallPolicyRuleCollection + Name *string `json:"name,omitempty"` + Priority *int64 `json:"priority,omitempty"` +} + +var _ json.Marshaler = FirewallPolicyNatRuleCollection{} + +func (s FirewallPolicyNatRuleCollection) MarshalJSON() ([]byte, error) { + type wrapper FirewallPolicyNatRuleCollection + wrapped := wrapper(s) + encoded, err := json.Marshal(wrapped) + if err != nil { + return nil, fmt.Errorf("marshaling FirewallPolicyNatRuleCollection: %+v", err) + } + + var decoded map[string]interface{} + if err := json.Unmarshal(encoded, &decoded); err != nil { + return nil, fmt.Errorf("unmarshaling FirewallPolicyNatRuleCollection: %+v", err) + } + decoded["ruleCollectionType"] = "FirewallPolicyNatRuleCollection" + + encoded, err = json.Marshal(decoded) + if err != nil { + return nil, fmt.Errorf("re-marshaling FirewallPolicyNatRuleCollection: %+v", err) + } + + return encoded, nil +} + +var _ json.Unmarshaler = &FirewallPolicyNatRuleCollection{} + +func (s *FirewallPolicyNatRuleCollection) UnmarshalJSON(bytes []byte) error { + type alias FirewallPolicyNatRuleCollection + var decoded alias + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling into FirewallPolicyNatRuleCollection: %+v", err) + } + + s.Action = decoded.Action + s.Name = decoded.Name + s.Priority = decoded.Priority + + var temp map[string]json.RawMessage + if err := json.Unmarshal(bytes, &temp); err != nil { + return fmt.Errorf("unmarshaling FirewallPolicyNatRuleCollection into map[string]json.RawMessage: %+v", err) + } + + if v, ok := temp["rules"]; ok { + var listTemp []json.RawMessage + if err := json.Unmarshal(v, &listTemp); err != nil { + return fmt.Errorf("unmarshaling Rules into list []json.RawMessage: %+v", err) + } + + output := make([]FirewallPolicyRule, 0) + for i, val := range listTemp { + impl, err := unmarshalFirewallPolicyRuleImplementation(val) + if err != nil { + return fmt.Errorf("unmarshaling index %d field 'Rules' for 'FirewallPolicyNatRuleCollection': %+v", i, err) + } + output = append(output, impl) + } + s.Rules = &output + } + return nil +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicynatrulecollectionaction.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicynatrulecollectionaction.go new file mode 100644 index 00000000000..4b895cf6198 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicynatrulecollectionaction.go @@ -0,0 +1,8 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyNatRuleCollectionAction struct { + Type *FirewallPolicyNatRuleCollectionActionType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicypropertiesformat.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicypropertiesformat.go new file mode 100644 index 00000000000..b439737323d --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicypropertiesformat.go @@ -0,0 +1,23 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyPropertiesFormat struct { + BasePolicy *SubResource `json:"basePolicy,omitempty"` + ChildPolicies *[]SubResource `json:"childPolicies,omitempty"` + DnsSettings *DnsSettings `json:"dnsSettings,omitempty"` + ExplicitProxy *ExplicitProxy `json:"explicitProxy,omitempty"` + Firewalls *[]SubResource `json:"firewalls,omitempty"` + Insights *FirewallPolicyInsights `json:"insights,omitempty"` + IntrusionDetection *FirewallPolicyIntrusionDetection `json:"intrusionDetection,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RuleCollectionGroups *[]SubResource `json:"ruleCollectionGroups,omitempty"` + Size *string `json:"size,omitempty"` + Sku *FirewallPolicySku `json:"sku,omitempty"` + Snat *FirewallPolicySNAT `json:"snat,omitempty"` + Sql *FirewallPolicySQL `json:"sql,omitempty"` + ThreatIntelMode *AzureFirewallThreatIntelMode `json:"threatIntelMode,omitempty"` + ThreatIntelWhitelist *FirewallPolicyThreatIntelWhitelist `json:"threatIntelWhitelist,omitempty"` + TransportSecurity *FirewallPolicyTransportSecurity `json:"transportSecurity,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyrule.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyrule.go new file mode 100644 index 00000000000..057fc40d54f --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyrule.go @@ -0,0 +1,69 @@ +package firewallpolicies + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyRule interface { +} + +// RawFirewallPolicyRuleImpl is returned when the Discriminated Value +// doesn't match any of the defined types +// NOTE: this should only be used when a type isn't defined for this type of Object (as a workaround) +// and is used only for Deserialization (e.g. this cannot be used as a Request Payload). +type RawFirewallPolicyRuleImpl struct { + Type string + Values map[string]interface{} +} + +func unmarshalFirewallPolicyRuleImplementation(input []byte) (FirewallPolicyRule, error) { + if input == nil { + return nil, nil + } + + var temp map[string]interface{} + if err := json.Unmarshal(input, &temp); err != nil { + return nil, fmt.Errorf("unmarshaling FirewallPolicyRule into map[string]interface: %+v", err) + } + + value, ok := temp["ruleType"].(string) + if !ok { + return nil, nil + } + + if strings.EqualFold(value, "ApplicationRule") { + var out ApplicationRule + if err := json.Unmarshal(input, &out); err != nil { + return nil, fmt.Errorf("unmarshaling into ApplicationRule: %+v", err) + } + return out, nil + } + + if strings.EqualFold(value, "NatRule") { + var out NatRule + if err := json.Unmarshal(input, &out); err != nil { + return nil, fmt.Errorf("unmarshaling into NatRule: %+v", err) + } + return out, nil + } + + if strings.EqualFold(value, "NetworkRule") { + var out NetworkRule + if err := json.Unmarshal(input, &out); err != nil { + return nil, fmt.Errorf("unmarshaling into NetworkRule: %+v", err) + } + return out, nil + } + + out := RawFirewallPolicyRuleImpl{ + Type: value, + Values: temp, + } + return out, nil + +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyruleapplicationprotocol.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyruleapplicationprotocol.go new file mode 100644 index 00000000000..4c9fdab828c --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyruleapplicationprotocol.go @@ -0,0 +1,9 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyRuleApplicationProtocol struct { + Port *int64 `json:"port,omitempty"` + ProtocolType *FirewallPolicyRuleApplicationProtocolType `json:"protocolType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyrulecollection.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyrulecollection.go new file mode 100644 index 00000000000..69c3d27a2bb --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyrulecollection.go @@ -0,0 +1,61 @@ +package firewallpolicies + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyRuleCollection interface { +} + +// RawFirewallPolicyRuleCollectionImpl is returned when the Discriminated Value +// doesn't match any of the defined types +// NOTE: this should only be used when a type isn't defined for this type of Object (as a workaround) +// and is used only for Deserialization (e.g. this cannot be used as a Request Payload). +type RawFirewallPolicyRuleCollectionImpl struct { + Type string + Values map[string]interface{} +} + +func unmarshalFirewallPolicyRuleCollectionImplementation(input []byte) (FirewallPolicyRuleCollection, error) { + if input == nil { + return nil, nil + } + + var temp map[string]interface{} + if err := json.Unmarshal(input, &temp); err != nil { + return nil, fmt.Errorf("unmarshaling FirewallPolicyRuleCollection into map[string]interface: %+v", err) + } + + value, ok := temp["ruleCollectionType"].(string) + if !ok { + return nil, nil + } + + if strings.EqualFold(value, "FirewallPolicyFilterRuleCollection") { + var out FirewallPolicyFilterRuleCollection + if err := json.Unmarshal(input, &out); err != nil { + return nil, fmt.Errorf("unmarshaling into FirewallPolicyFilterRuleCollection: %+v", err) + } + return out, nil + } + + if strings.EqualFold(value, "FirewallPolicyNatRuleCollection") { + var out FirewallPolicyNatRuleCollection + if err := json.Unmarshal(input, &out); err != nil { + return nil, fmt.Errorf("unmarshaling into FirewallPolicyNatRuleCollection: %+v", err) + } + return out, nil + } + + out := RawFirewallPolicyRuleCollectionImpl{ + Type: value, + Values: temp, + } + return out, nil + +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyrulecollectiongroupdraft.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyrulecollectiongroupdraft.go new file mode 100644 index 00000000000..638137d0747 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyrulecollectiongroupdraft.go @@ -0,0 +1,11 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyRuleCollectionGroupDraft struct { + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FirewallPolicyRuleCollectionGroupDraftProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyrulecollectiongroupdraftproperties.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyrulecollectiongroupdraftproperties.go new file mode 100644 index 00000000000..376fd8c32ec --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicyrulecollectiongroupdraftproperties.go @@ -0,0 +1,51 @@ +package firewallpolicies + +import ( + "encoding/json" + "fmt" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyRuleCollectionGroupDraftProperties struct { + Priority *int64 `json:"priority,omitempty"` + RuleCollections *[]FirewallPolicyRuleCollection `json:"ruleCollections,omitempty"` + Size *string `json:"size,omitempty"` +} + +var _ json.Unmarshaler = &FirewallPolicyRuleCollectionGroupDraftProperties{} + +func (s *FirewallPolicyRuleCollectionGroupDraftProperties) UnmarshalJSON(bytes []byte) error { + type alias FirewallPolicyRuleCollectionGroupDraftProperties + var decoded alias + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling into FirewallPolicyRuleCollectionGroupDraftProperties: %+v", err) + } + + s.Priority = decoded.Priority + s.Size = decoded.Size + + var temp map[string]json.RawMessage + if err := json.Unmarshal(bytes, &temp); err != nil { + return fmt.Errorf("unmarshaling FirewallPolicyRuleCollectionGroupDraftProperties into map[string]json.RawMessage: %+v", err) + } + + if v, ok := temp["ruleCollections"]; ok { + var listTemp []json.RawMessage + if err := json.Unmarshal(v, &listTemp); err != nil { + return fmt.Errorf("unmarshaling RuleCollections into list []json.RawMessage: %+v", err) + } + + output := make([]FirewallPolicyRuleCollection, 0) + for i, val := range listTemp { + impl, err := unmarshalFirewallPolicyRuleCollectionImplementation(val) + if err != nil { + return fmt.Errorf("unmarshaling index %d field 'RuleCollections' for 'FirewallPolicyRuleCollectionGroupDraftProperties': %+v", i, err) + } + output = append(output, impl) + } + s.RuleCollections = &output + } + return nil +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicysku.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicysku.go new file mode 100644 index 00000000000..6c0cef08260 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicysku.go @@ -0,0 +1,8 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicySku struct { + Tier *FirewallPolicySkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicysnat.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicysnat.go new file mode 100644 index 00000000000..33dcf12744e --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicysnat.go @@ -0,0 +1,9 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicySNAT struct { + AutoLearnPrivateRanges *AutoLearnPrivateRangesMode `json:"autoLearnPrivateRanges,omitempty"` + PrivateRanges *[]string `json:"privateRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicysql.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicysql.go new file mode 100644 index 00000000000..32e50565577 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicysql.go @@ -0,0 +1,8 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicySQL struct { + AllowSqlRedirect *bool `json:"allowSqlRedirect,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicythreatintelwhitelist.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicythreatintelwhitelist.go new file mode 100644 index 00000000000..376fba1c268 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicythreatintelwhitelist.go @@ -0,0 +1,9 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyThreatIntelWhitelist struct { + Fqdns *[]string `json:"fqdns,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicytransportsecurity.go b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicytransportsecurity.go new file mode 100644 index 00000000000..9fdbf9b4877 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_firewallpolicytransportsecurity.go @@ -0,0 +1,8 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyTransportSecurity struct { + CertificateAuthority *FirewallPolicyCertificateAuthority `json:"certificateAuthority,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_idpsqueryobject.go b/resource-manager/network/2024-01-01/firewallpolicies/model_idpsqueryobject.go new file mode 100644 index 00000000000..3a1aca509b6 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_idpsqueryobject.go @@ -0,0 +1,12 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IDPSQueryObject struct { + Filters *[]FilterItems `json:"filters,omitempty"` + OrderBy *OrderBy `json:"orderBy,omitempty"` + ResultsPerPage *int64 `json:"resultsPerPage,omitempty"` + Search *string `json:"search,omitempty"` + Skip *int64 `json:"skip,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_natrule.go b/resource-manager/network/2024-01-01/firewallpolicies/model_natrule.go new file mode 100644 index 00000000000..0c83394fd20 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_natrule.go @@ -0,0 +1,50 @@ +package firewallpolicies + +import ( + "encoding/json" + "fmt" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ FirewallPolicyRule = NatRule{} + +type NatRule struct { + DestinationAddresses *[]string `json:"destinationAddresses,omitempty"` + DestinationPorts *[]string `json:"destinationPorts,omitempty"` + IPProtocols *[]FirewallPolicyRuleNetworkProtocol `json:"ipProtocols,omitempty"` + SourceAddresses *[]string `json:"sourceAddresses,omitempty"` + SourceIPGroups *[]string `json:"sourceIpGroups,omitempty"` + TranslatedAddress *string `json:"translatedAddress,omitempty"` + TranslatedFqdn *string `json:"translatedFqdn,omitempty"` + TranslatedPort *string `json:"translatedPort,omitempty"` + + // Fields inherited from FirewallPolicyRule + Description *string `json:"description,omitempty"` + Name *string `json:"name,omitempty"` +} + +var _ json.Marshaler = NatRule{} + +func (s NatRule) MarshalJSON() ([]byte, error) { + type wrapper NatRule + wrapped := wrapper(s) + encoded, err := json.Marshal(wrapped) + if err != nil { + return nil, fmt.Errorf("marshaling NatRule: %+v", err) + } + + var decoded map[string]interface{} + if err := json.Unmarshal(encoded, &decoded); err != nil { + return nil, fmt.Errorf("unmarshaling NatRule: %+v", err) + } + decoded["ruleType"] = "NatRule" + + encoded, err = json.Marshal(decoded) + if err != nil { + return nil, fmt.Errorf("re-marshaling NatRule: %+v", err) + } + + return encoded, nil +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_networkrule.go b/resource-manager/network/2024-01-01/firewallpolicies/model_networkrule.go new file mode 100644 index 00000000000..95108d1b710 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_networkrule.go @@ -0,0 +1,49 @@ +package firewallpolicies + +import ( + "encoding/json" + "fmt" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ FirewallPolicyRule = NetworkRule{} + +type NetworkRule struct { + DestinationAddresses *[]string `json:"destinationAddresses,omitempty"` + DestinationFqdns *[]string `json:"destinationFqdns,omitempty"` + DestinationIPGroups *[]string `json:"destinationIpGroups,omitempty"` + DestinationPorts *[]string `json:"destinationPorts,omitempty"` + IPProtocols *[]FirewallPolicyRuleNetworkProtocol `json:"ipProtocols,omitempty"` + SourceAddresses *[]string `json:"sourceAddresses,omitempty"` + SourceIPGroups *[]string `json:"sourceIpGroups,omitempty"` + + // Fields inherited from FirewallPolicyRule + Description *string `json:"description,omitempty"` + Name *string `json:"name,omitempty"` +} + +var _ json.Marshaler = NetworkRule{} + +func (s NetworkRule) MarshalJSON() ([]byte, error) { + type wrapper NetworkRule + wrapped := wrapper(s) + encoded, err := json.Marshal(wrapped) + if err != nil { + return nil, fmt.Errorf("marshaling NetworkRule: %+v", err) + } + + var decoded map[string]interface{} + if err := json.Unmarshal(encoded, &decoded); err != nil { + return nil, fmt.Errorf("unmarshaling NetworkRule: %+v", err) + } + decoded["ruleType"] = "NetworkRule" + + encoded, err = json.Marshal(decoded) + if err != nil { + return nil, fmt.Errorf("re-marshaling NetworkRule: %+v", err) + } + + return encoded, nil +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_orderby.go b/resource-manager/network/2024-01-01/firewallpolicies/model_orderby.go new file mode 100644 index 00000000000..db1d05e4478 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_orderby.go @@ -0,0 +1,9 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type OrderBy struct { + Field *string `json:"field,omitempty"` + Order *FirewallPolicyIDPSQuerySortOrder `json:"order,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_queryresults.go b/resource-manager/network/2024-01-01/firewallpolicies/model_queryresults.go new file mode 100644 index 00000000000..4c0591a2f83 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_queryresults.go @@ -0,0 +1,9 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type QueryResults struct { + MatchingRecordsCount *int64 `json:"matchingRecordsCount,omitempty"` + Signatures *[]SingleQueryResult `json:"signatures,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_signatureoverridesfiltervaluesquery.go b/resource-manager/network/2024-01-01/firewallpolicies/model_signatureoverridesfiltervaluesquery.go new file mode 100644 index 00000000000..718d141e3c0 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_signatureoverridesfiltervaluesquery.go @@ -0,0 +1,8 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SignatureOverridesFilterValuesQuery struct { + FilterName *string `json:"filterName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_signatureoverridesfiltervaluesresponse.go b/resource-manager/network/2024-01-01/firewallpolicies/model_signatureoverridesfiltervaluesresponse.go new file mode 100644 index 00000000000..4b135d882ba --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_signatureoverridesfiltervaluesresponse.go @@ -0,0 +1,8 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SignatureOverridesFilterValuesResponse struct { + FilterValues *[]string `json:"filterValues,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_signaturesoverrides.go b/resource-manager/network/2024-01-01/firewallpolicies/model_signaturesoverrides.go new file mode 100644 index 00000000000..2f1b84510c9 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_signaturesoverrides.go @@ -0,0 +1,11 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SignaturesOverrides struct { + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SignaturesOverridesProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_signaturesoverrideslist.go b/resource-manager/network/2024-01-01/firewallpolicies/model_signaturesoverrideslist.go new file mode 100644 index 00000000000..d403a4eb590 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_signaturesoverrideslist.go @@ -0,0 +1,8 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SignaturesOverridesList struct { + Value *[]SignaturesOverrides `json:"value,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_signaturesoverridesproperties.go b/resource-manager/network/2024-01-01/firewallpolicies/model_signaturesoverridesproperties.go new file mode 100644 index 00000000000..a93d8699c02 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_signaturesoverridesproperties.go @@ -0,0 +1,8 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SignaturesOverridesProperties struct { + Signatures *map[string]string `json:"signatures,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_singlequeryresult.go b/resource-manager/network/2024-01-01/firewallpolicies/model_singlequeryresult.go new file mode 100644 index 00000000000..cbf78585e56 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_singlequeryresult.go @@ -0,0 +1,18 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SingleQueryResult struct { + Description *string `json:"description,omitempty"` + DestinationPorts *[]string `json:"destinationPorts,omitempty"` + Direction *FirewallPolicyIDPSSignatureDirection `json:"direction,omitempty"` + Group *string `json:"group,omitempty"` + InheritedFromParentPolicy *bool `json:"inheritedFromParentPolicy,omitempty"` + LastUpdated *string `json:"lastUpdated,omitempty"` + Mode *FirewallPolicyIDPSSignatureMode `json:"mode,omitempty"` + Protocol *string `json:"protocol,omitempty"` + Severity *FirewallPolicyIDPSSignatureSeverity `json:"severity,omitempty"` + SignatureId *int64 `json:"signatureId,omitempty"` + SourcePorts *[]string `json:"sourcePorts,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_subresource.go b/resource-manager/network/2024-01-01/firewallpolicies/model_subresource.go new file mode 100644 index 00000000000..abee9f81d03 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_subresource.go @@ -0,0 +1,8 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/model_tagsobject.go b/resource-manager/network/2024-01-01/firewallpolicies/model_tagsobject.go new file mode 100644 index 00000000000..22cc23110be --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/model_tagsobject.go @@ -0,0 +1,8 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/predicates.go b/resource-manager/network/2024-01-01/firewallpolicies/predicates.go new file mode 100644 index 00000000000..2640042ba7a --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/predicates.go @@ -0,0 +1,37 @@ +package firewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p FirewallPolicyOperationPredicate) Matches(input FirewallPolicy) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/firewallpolicies/version.go b/resource-manager/network/2024-01-01/firewallpolicies/version.go new file mode 100644 index 00000000000..596e85e2740 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicies/version.go @@ -0,0 +1,12 @@ +package firewallpolicies + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/firewallpolicies/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/README.md b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/README.md new file mode 100644 index 00000000000..7e087e39958 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/README.md @@ -0,0 +1,82 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups` Documentation + +The `firewallpolicyrulecollectiongroups` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups" +``` + + +### Client Initialization + +```go +client := firewallpolicyrulecollectiongroups.NewFirewallPolicyRuleCollectionGroupsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `FirewallPolicyRuleCollectionGroupsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := firewallpolicyrulecollectiongroups.NewRuleCollectionGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue", "ruleCollectionGroupValue") + +payload := firewallpolicyrulecollectiongroups.FirewallPolicyRuleCollectionGroup{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `FirewallPolicyRuleCollectionGroupsClient.Delete` + +```go +ctx := context.TODO() +id := firewallpolicyrulecollectiongroups.NewRuleCollectionGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue", "ruleCollectionGroupValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `FirewallPolicyRuleCollectionGroupsClient.Get` + +```go +ctx := context.TODO() +id := firewallpolicyrulecollectiongroups.NewRuleCollectionGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue", "ruleCollectionGroupValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `FirewallPolicyRuleCollectionGroupsClient.List` + +```go +ctx := context.TODO() +id := firewallpolicyrulecollectiongroups.NewFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/client.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/client.go new file mode 100644 index 00000000000..ef562ceb4a0 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/client.go @@ -0,0 +1,26 @@ +package firewallpolicyrulecollectiongroups + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyRuleCollectionGroupsClient struct { + Client *resourcemanager.Client +} + +func NewFirewallPolicyRuleCollectionGroupsClientWithBaseURI(sdkApi sdkEnv.Api) (*FirewallPolicyRuleCollectionGroupsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "firewallpolicyrulecollectiongroups", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating FirewallPolicyRuleCollectionGroupsClient: %+v", err) + } + + return &FirewallPolicyRuleCollectionGroupsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/constants.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/constants.go new file mode 100644 index 00000000000..73fd6902a8b --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/constants.go @@ -0,0 +1,309 @@ +package firewallpolicyrulecollectiongroups + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyFilterRuleCollectionActionType string + +const ( + FirewallPolicyFilterRuleCollectionActionTypeAllow FirewallPolicyFilterRuleCollectionActionType = "Allow" + FirewallPolicyFilterRuleCollectionActionTypeDeny FirewallPolicyFilterRuleCollectionActionType = "Deny" +) + +func PossibleValuesForFirewallPolicyFilterRuleCollectionActionType() []string { + return []string{ + string(FirewallPolicyFilterRuleCollectionActionTypeAllow), + string(FirewallPolicyFilterRuleCollectionActionTypeDeny), + } +} + +func (s *FirewallPolicyFilterRuleCollectionActionType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFirewallPolicyFilterRuleCollectionActionType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFirewallPolicyFilterRuleCollectionActionType(input string) (*FirewallPolicyFilterRuleCollectionActionType, error) { + vals := map[string]FirewallPolicyFilterRuleCollectionActionType{ + "allow": FirewallPolicyFilterRuleCollectionActionTypeAllow, + "deny": FirewallPolicyFilterRuleCollectionActionTypeDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FirewallPolicyFilterRuleCollectionActionType(input) + return &out, nil +} + +type FirewallPolicyNatRuleCollectionActionType string + +const ( + FirewallPolicyNatRuleCollectionActionTypeDNAT FirewallPolicyNatRuleCollectionActionType = "DNAT" +) + +func PossibleValuesForFirewallPolicyNatRuleCollectionActionType() []string { + return []string{ + string(FirewallPolicyNatRuleCollectionActionTypeDNAT), + } +} + +func (s *FirewallPolicyNatRuleCollectionActionType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFirewallPolicyNatRuleCollectionActionType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFirewallPolicyNatRuleCollectionActionType(input string) (*FirewallPolicyNatRuleCollectionActionType, error) { + vals := map[string]FirewallPolicyNatRuleCollectionActionType{ + "dnat": FirewallPolicyNatRuleCollectionActionTypeDNAT, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FirewallPolicyNatRuleCollectionActionType(input) + return &out, nil +} + +type FirewallPolicyRuleApplicationProtocolType string + +const ( + FirewallPolicyRuleApplicationProtocolTypeHTTP FirewallPolicyRuleApplicationProtocolType = "Http" + FirewallPolicyRuleApplicationProtocolTypeHTTPS FirewallPolicyRuleApplicationProtocolType = "Https" +) + +func PossibleValuesForFirewallPolicyRuleApplicationProtocolType() []string { + return []string{ + string(FirewallPolicyRuleApplicationProtocolTypeHTTP), + string(FirewallPolicyRuleApplicationProtocolTypeHTTPS), + } +} + +func (s *FirewallPolicyRuleApplicationProtocolType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFirewallPolicyRuleApplicationProtocolType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFirewallPolicyRuleApplicationProtocolType(input string) (*FirewallPolicyRuleApplicationProtocolType, error) { + vals := map[string]FirewallPolicyRuleApplicationProtocolType{ + "http": FirewallPolicyRuleApplicationProtocolTypeHTTP, + "https": FirewallPolicyRuleApplicationProtocolTypeHTTPS, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FirewallPolicyRuleApplicationProtocolType(input) + return &out, nil +} + +type FirewallPolicyRuleCollectionType string + +const ( + FirewallPolicyRuleCollectionTypeFirewallPolicyFilterRuleCollection FirewallPolicyRuleCollectionType = "FirewallPolicyFilterRuleCollection" + FirewallPolicyRuleCollectionTypeFirewallPolicyNatRuleCollection FirewallPolicyRuleCollectionType = "FirewallPolicyNatRuleCollection" +) + +func PossibleValuesForFirewallPolicyRuleCollectionType() []string { + return []string{ + string(FirewallPolicyRuleCollectionTypeFirewallPolicyFilterRuleCollection), + string(FirewallPolicyRuleCollectionTypeFirewallPolicyNatRuleCollection), + } +} + +func (s *FirewallPolicyRuleCollectionType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFirewallPolicyRuleCollectionType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFirewallPolicyRuleCollectionType(input string) (*FirewallPolicyRuleCollectionType, error) { + vals := map[string]FirewallPolicyRuleCollectionType{ + "firewallpolicyfilterrulecollection": FirewallPolicyRuleCollectionTypeFirewallPolicyFilterRuleCollection, + "firewallpolicynatrulecollection": FirewallPolicyRuleCollectionTypeFirewallPolicyNatRuleCollection, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FirewallPolicyRuleCollectionType(input) + return &out, nil +} + +type FirewallPolicyRuleNetworkProtocol string + +const ( + FirewallPolicyRuleNetworkProtocolAny FirewallPolicyRuleNetworkProtocol = "Any" + FirewallPolicyRuleNetworkProtocolICMP FirewallPolicyRuleNetworkProtocol = "ICMP" + FirewallPolicyRuleNetworkProtocolTCP FirewallPolicyRuleNetworkProtocol = "TCP" + FirewallPolicyRuleNetworkProtocolUDP FirewallPolicyRuleNetworkProtocol = "UDP" +) + +func PossibleValuesForFirewallPolicyRuleNetworkProtocol() []string { + return []string{ + string(FirewallPolicyRuleNetworkProtocolAny), + string(FirewallPolicyRuleNetworkProtocolICMP), + string(FirewallPolicyRuleNetworkProtocolTCP), + string(FirewallPolicyRuleNetworkProtocolUDP), + } +} + +func (s *FirewallPolicyRuleNetworkProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFirewallPolicyRuleNetworkProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFirewallPolicyRuleNetworkProtocol(input string) (*FirewallPolicyRuleNetworkProtocol, error) { + vals := map[string]FirewallPolicyRuleNetworkProtocol{ + "any": FirewallPolicyRuleNetworkProtocolAny, + "icmp": FirewallPolicyRuleNetworkProtocolICMP, + "tcp": FirewallPolicyRuleNetworkProtocolTCP, + "udp": FirewallPolicyRuleNetworkProtocolUDP, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FirewallPolicyRuleNetworkProtocol(input) + return &out, nil +} + +type FirewallPolicyRuleType string + +const ( + FirewallPolicyRuleTypeApplicationRule FirewallPolicyRuleType = "ApplicationRule" + FirewallPolicyRuleTypeNatRule FirewallPolicyRuleType = "NatRule" + FirewallPolicyRuleTypeNetworkRule FirewallPolicyRuleType = "NetworkRule" +) + +func PossibleValuesForFirewallPolicyRuleType() []string { + return []string{ + string(FirewallPolicyRuleTypeApplicationRule), + string(FirewallPolicyRuleTypeNatRule), + string(FirewallPolicyRuleTypeNetworkRule), + } +} + +func (s *FirewallPolicyRuleType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFirewallPolicyRuleType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFirewallPolicyRuleType(input string) (*FirewallPolicyRuleType, error) { + vals := map[string]FirewallPolicyRuleType{ + "applicationrule": FirewallPolicyRuleTypeApplicationRule, + "natrule": FirewallPolicyRuleTypeNatRule, + "networkrule": FirewallPolicyRuleTypeNetworkRule, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FirewallPolicyRuleType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/id_firewallpolicy.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/id_firewallpolicy.go new file mode 100644 index 00000000000..9a3d14e2193 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/id_firewallpolicy.go @@ -0,0 +1,130 @@ +package firewallpolicyrulecollectiongroups + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&FirewallPolicyId{}) +} + +var _ resourceids.ResourceId = &FirewallPolicyId{} + +// FirewallPolicyId is a struct representing the Resource ID for a Firewall Policy +type FirewallPolicyId struct { + SubscriptionId string + ResourceGroupName string + FirewallPolicyName string +} + +// NewFirewallPolicyID returns a new FirewallPolicyId struct +func NewFirewallPolicyID(subscriptionId string, resourceGroupName string, firewallPolicyName string) FirewallPolicyId { + return FirewallPolicyId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + FirewallPolicyName: firewallPolicyName, + } +} + +// ParseFirewallPolicyID parses 'input' into a FirewallPolicyId +func ParseFirewallPolicyID(input string) (*FirewallPolicyId, error) { + parser := resourceids.NewParserFromResourceIdType(&FirewallPolicyId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := FirewallPolicyId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseFirewallPolicyIDInsensitively parses 'input' case-insensitively into a FirewallPolicyId +// note: this method should only be used for API response data and not user input +func ParseFirewallPolicyIDInsensitively(input string) (*FirewallPolicyId, error) { + parser := resourceids.NewParserFromResourceIdType(&FirewallPolicyId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := FirewallPolicyId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *FirewallPolicyId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.FirewallPolicyName, ok = input.Parsed["firewallPolicyName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "firewallPolicyName", input) + } + + return nil +} + +// ValidateFirewallPolicyID checks that 'input' can be parsed as a Firewall Policy ID +func ValidateFirewallPolicyID(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 := ParseFirewallPolicyID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Firewall Policy ID +func (id FirewallPolicyId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/firewallPolicies/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.FirewallPolicyName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Firewall Policy ID +func (id FirewallPolicyId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticFirewallPolicies", "firewallPolicies", "firewallPolicies"), + resourceids.UserSpecifiedSegment("firewallPolicyName", "firewallPolicyValue"), + } +} + +// String returns a human-readable description of this Firewall Policy ID +func (id FirewallPolicyId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Firewall Policy Name: %q", id.FirewallPolicyName), + } + return fmt.Sprintf("Firewall Policy (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/id_firewallpolicy_test.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/id_firewallpolicy_test.go new file mode 100644 index 00000000000..d44f67c1a8e --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/id_firewallpolicy_test.go @@ -0,0 +1,282 @@ +package firewallpolicyrulecollectiongroups + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &FirewallPolicyId{} + +func TestNewFirewallPolicyID(t *testing.T) { + id := NewFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.FirewallPolicyName != "firewallPolicyValue" { + t.Fatalf("Expected %q but got %q for Segment 'FirewallPolicyName'", id.FirewallPolicyName, "firewallPolicyValue") + } +} + +func TestFormatFirewallPolicyID(t *testing.T) { + actual := NewFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseFirewallPolicyID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *FirewallPolicyId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue", + Expected: &FirewallPolicyId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + FirewallPolicyName: "firewallPolicyValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseFirewallPolicyID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.FirewallPolicyName != v.Expected.FirewallPolicyName { + t.Fatalf("Expected %q but got %q for FirewallPolicyName", v.Expected.FirewallPolicyName, actual.FirewallPolicyName) + } + + } +} + +func TestParseFirewallPolicyIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *FirewallPolicyId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/fIrEwAlLpOlIcIeS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue", + Expected: &FirewallPolicyId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + FirewallPolicyName: "firewallPolicyValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/fIrEwAlLpOlIcIeS/fIrEwAlLpOlIcYvAlUe", + Expected: &FirewallPolicyId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + FirewallPolicyName: "fIrEwAlLpOlIcYvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/fIrEwAlLpOlIcIeS/fIrEwAlLpOlIcYvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseFirewallPolicyIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.FirewallPolicyName != v.Expected.FirewallPolicyName { + t.Fatalf("Expected %q but got %q for FirewallPolicyName", v.Expected.FirewallPolicyName, actual.FirewallPolicyName) + } + + } +} + +func TestSegmentsForFirewallPolicyId(t *testing.T) { + segments := FirewallPolicyId{}.Segments() + if len(segments) == 0 { + t.Fatalf("FirewallPolicyId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/id_rulecollectiongroup.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/id_rulecollectiongroup.go new file mode 100644 index 00000000000..5af7b6ffe79 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/id_rulecollectiongroup.go @@ -0,0 +1,139 @@ +package firewallpolicyrulecollectiongroups + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&RuleCollectionGroupId{}) +} + +var _ resourceids.ResourceId = &RuleCollectionGroupId{} + +// RuleCollectionGroupId is a struct representing the Resource ID for a Rule Collection Group +type RuleCollectionGroupId struct { + SubscriptionId string + ResourceGroupName string + FirewallPolicyName string + RuleCollectionGroupName string +} + +// NewRuleCollectionGroupID returns a new RuleCollectionGroupId struct +func NewRuleCollectionGroupID(subscriptionId string, resourceGroupName string, firewallPolicyName string, ruleCollectionGroupName string) RuleCollectionGroupId { + return RuleCollectionGroupId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + FirewallPolicyName: firewallPolicyName, + RuleCollectionGroupName: ruleCollectionGroupName, + } +} + +// ParseRuleCollectionGroupID parses 'input' into a RuleCollectionGroupId +func ParseRuleCollectionGroupID(input string) (*RuleCollectionGroupId, error) { + parser := resourceids.NewParserFromResourceIdType(&RuleCollectionGroupId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RuleCollectionGroupId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseRuleCollectionGroupIDInsensitively parses 'input' case-insensitively into a RuleCollectionGroupId +// note: this method should only be used for API response data and not user input +func ParseRuleCollectionGroupIDInsensitively(input string) (*RuleCollectionGroupId, error) { + parser := resourceids.NewParserFromResourceIdType(&RuleCollectionGroupId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RuleCollectionGroupId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *RuleCollectionGroupId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.FirewallPolicyName, ok = input.Parsed["firewallPolicyName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "firewallPolicyName", input) + } + + if id.RuleCollectionGroupName, ok = input.Parsed["ruleCollectionGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "ruleCollectionGroupName", input) + } + + return nil +} + +// ValidateRuleCollectionGroupID checks that 'input' can be parsed as a Rule Collection Group ID +func ValidateRuleCollectionGroupID(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 := ParseRuleCollectionGroupID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Rule Collection Group ID +func (id RuleCollectionGroupId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/firewallPolicies/%s/ruleCollectionGroups/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.FirewallPolicyName, id.RuleCollectionGroupName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Rule Collection Group ID +func (id RuleCollectionGroupId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticFirewallPolicies", "firewallPolicies", "firewallPolicies"), + resourceids.UserSpecifiedSegment("firewallPolicyName", "firewallPolicyValue"), + resourceids.StaticSegment("staticRuleCollectionGroups", "ruleCollectionGroups", "ruleCollectionGroups"), + resourceids.UserSpecifiedSegment("ruleCollectionGroupName", "ruleCollectionGroupValue"), + } +} + +// String returns a human-readable description of this Rule Collection Group ID +func (id RuleCollectionGroupId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Firewall Policy Name: %q", id.FirewallPolicyName), + fmt.Sprintf("Rule Collection Group Name: %q", id.RuleCollectionGroupName), + } + return fmt.Sprintf("Rule Collection Group (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/id_rulecollectiongroup_test.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/id_rulecollectiongroup_test.go new file mode 100644 index 00000000000..fc951be50ba --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/id_rulecollectiongroup_test.go @@ -0,0 +1,327 @@ +package firewallpolicyrulecollectiongroups + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &RuleCollectionGroupId{} + +func TestNewRuleCollectionGroupID(t *testing.T) { + id := NewRuleCollectionGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue", "ruleCollectionGroupValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.FirewallPolicyName != "firewallPolicyValue" { + t.Fatalf("Expected %q but got %q for Segment 'FirewallPolicyName'", id.FirewallPolicyName, "firewallPolicyValue") + } + + if id.RuleCollectionGroupName != "ruleCollectionGroupValue" { + t.Fatalf("Expected %q but got %q for Segment 'RuleCollectionGroupName'", id.RuleCollectionGroupName, "ruleCollectionGroupValue") + } +} + +func TestFormatRuleCollectionGroupID(t *testing.T) { + actual := NewRuleCollectionGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "firewallPolicyValue", "ruleCollectionGroupValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue/ruleCollectionGroups/ruleCollectionGroupValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseRuleCollectionGroupID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RuleCollectionGroupId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue/ruleCollectionGroups", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue/ruleCollectionGroups/ruleCollectionGroupValue", + Expected: &RuleCollectionGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + FirewallPolicyName: "firewallPolicyValue", + RuleCollectionGroupName: "ruleCollectionGroupValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue/ruleCollectionGroups/ruleCollectionGroupValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRuleCollectionGroupID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.FirewallPolicyName != v.Expected.FirewallPolicyName { + t.Fatalf("Expected %q but got %q for FirewallPolicyName", v.Expected.FirewallPolicyName, actual.FirewallPolicyName) + } + + if actual.RuleCollectionGroupName != v.Expected.RuleCollectionGroupName { + t.Fatalf("Expected %q but got %q for RuleCollectionGroupName", v.Expected.RuleCollectionGroupName, actual.RuleCollectionGroupName) + } + + } +} + +func TestParseRuleCollectionGroupIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RuleCollectionGroupId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/fIrEwAlLpOlIcIeS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/fIrEwAlLpOlIcIeS/fIrEwAlLpOlIcYvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue/ruleCollectionGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/fIrEwAlLpOlIcIeS/fIrEwAlLpOlIcYvAlUe/rUlEcOlLeCtIoNgRoUpS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue/ruleCollectionGroups/ruleCollectionGroupValue", + Expected: &RuleCollectionGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + FirewallPolicyName: "firewallPolicyValue", + RuleCollectionGroupName: "ruleCollectionGroupValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/firewallPolicies/firewallPolicyValue/ruleCollectionGroups/ruleCollectionGroupValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/fIrEwAlLpOlIcIeS/fIrEwAlLpOlIcYvAlUe/rUlEcOlLeCtIoNgRoUpS/rUlEcOlLeCtIoNgRoUpVaLuE", + Expected: &RuleCollectionGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + FirewallPolicyName: "fIrEwAlLpOlIcYvAlUe", + RuleCollectionGroupName: "rUlEcOlLeCtIoNgRoUpVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/fIrEwAlLpOlIcIeS/fIrEwAlLpOlIcYvAlUe/rUlEcOlLeCtIoNgRoUpS/rUlEcOlLeCtIoNgRoUpVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRuleCollectionGroupIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.FirewallPolicyName != v.Expected.FirewallPolicyName { + t.Fatalf("Expected %q but got %q for FirewallPolicyName", v.Expected.FirewallPolicyName, actual.FirewallPolicyName) + } + + if actual.RuleCollectionGroupName != v.Expected.RuleCollectionGroupName { + t.Fatalf("Expected %q but got %q for RuleCollectionGroupName", v.Expected.RuleCollectionGroupName, actual.RuleCollectionGroupName) + } + + } +} + +func TestSegmentsForRuleCollectionGroupId(t *testing.T) { + segments := RuleCollectionGroupId{}.Segments() + if len(segments) == 0 { + t.Fatalf("RuleCollectionGroupId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/method_createorupdate.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/method_createorupdate.go new file mode 100644 index 00000000000..b067734262c --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/method_createorupdate.go @@ -0,0 +1,75 @@ +package firewallpolicyrulecollectiongroups + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *FirewallPolicyRuleCollectionGroup +} + +// CreateOrUpdate ... +func (c FirewallPolicyRuleCollectionGroupsClient) CreateOrUpdate(ctx context.Context, id RuleCollectionGroupId, input FirewallPolicyRuleCollectionGroup) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c FirewallPolicyRuleCollectionGroupsClient) CreateOrUpdateThenPoll(ctx context.Context, id RuleCollectionGroupId, input FirewallPolicyRuleCollectionGroup) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/method_delete.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/method_delete.go new file mode 100644 index 00000000000..159bb061b84 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/method_delete.go @@ -0,0 +1,71 @@ +package firewallpolicyrulecollectiongroups + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c FirewallPolicyRuleCollectionGroupsClient) Delete(ctx context.Context, id RuleCollectionGroupId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c FirewallPolicyRuleCollectionGroupsClient) DeleteThenPoll(ctx context.Context, id RuleCollectionGroupId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/method_get.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/method_get.go new file mode 100644 index 00000000000..9c1602d7177 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/method_get.go @@ -0,0 +1,54 @@ +package firewallpolicyrulecollectiongroups + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *FirewallPolicyRuleCollectionGroup +} + +// Get ... +func (c FirewallPolicyRuleCollectionGroupsClient) Get(ctx context.Context, id RuleCollectionGroupId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model FirewallPolicyRuleCollectionGroup + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/method_list.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/method_list.go new file mode 100644 index 00000000000..d65b94bc0f4 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/method_list.go @@ -0,0 +1,92 @@ +package firewallpolicyrulecollectiongroups + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]FirewallPolicyRuleCollectionGroup +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []FirewallPolicyRuleCollectionGroup +} + +// List ... +func (c FirewallPolicyRuleCollectionGroupsClient) List(ctx context.Context, id FirewallPolicyId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/ruleCollectionGroups", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]FirewallPolicyRuleCollectionGroup `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c FirewallPolicyRuleCollectionGroupsClient) ListComplete(ctx context.Context, id FirewallPolicyId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, FirewallPolicyRuleCollectionGroupOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c FirewallPolicyRuleCollectionGroupsClient) ListCompleteMatchingPredicate(ctx context.Context, id FirewallPolicyId, predicate FirewallPolicyRuleCollectionGroupOperationPredicate) (result ListCompleteResult, err error) { + items := make([]FirewallPolicyRuleCollectionGroup, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_applicationrule.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_applicationrule.go new file mode 100644 index 00000000000..3e2815413ed --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_applicationrule.go @@ -0,0 +1,52 @@ +package firewallpolicyrulecollectiongroups + +import ( + "encoding/json" + "fmt" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ FirewallPolicyRule = ApplicationRule{} + +type ApplicationRule struct { + DestinationAddresses *[]string `json:"destinationAddresses,omitempty"` + FqdnTags *[]string `json:"fqdnTags,omitempty"` + HTTPHeadersToInsert *[]FirewallPolicyHTTPHeaderToInsert `json:"httpHeadersToInsert,omitempty"` + Protocols *[]FirewallPolicyRuleApplicationProtocol `json:"protocols,omitempty"` + SourceAddresses *[]string `json:"sourceAddresses,omitempty"` + SourceIPGroups *[]string `json:"sourceIpGroups,omitempty"` + TargetFqdns *[]string `json:"targetFqdns,omitempty"` + TargetUrls *[]string `json:"targetUrls,omitempty"` + TerminateTLS *bool `json:"terminateTLS,omitempty"` + WebCategories *[]string `json:"webCategories,omitempty"` + + // Fields inherited from FirewallPolicyRule + Description *string `json:"description,omitempty"` + Name *string `json:"name,omitempty"` +} + +var _ json.Marshaler = ApplicationRule{} + +func (s ApplicationRule) MarshalJSON() ([]byte, error) { + type wrapper ApplicationRule + wrapped := wrapper(s) + encoded, err := json.Marshal(wrapped) + if err != nil { + return nil, fmt.Errorf("marshaling ApplicationRule: %+v", err) + } + + var decoded map[string]interface{} + if err := json.Unmarshal(encoded, &decoded); err != nil { + return nil, fmt.Errorf("unmarshaling ApplicationRule: %+v", err) + } + decoded["ruleType"] = "ApplicationRule" + + encoded, err = json.Marshal(decoded) + if err != nil { + return nil, fmt.Errorf("re-marshaling ApplicationRule: %+v", err) + } + + return encoded, nil +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyfilterrulecollection.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyfilterrulecollection.go new file mode 100644 index 00000000000..6e9762da492 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyfilterrulecollection.go @@ -0,0 +1,81 @@ +package firewallpolicyrulecollectiongroups + +import ( + "encoding/json" + "fmt" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ FirewallPolicyRuleCollection = FirewallPolicyFilterRuleCollection{} + +type FirewallPolicyFilterRuleCollection struct { + Action *FirewallPolicyFilterRuleCollectionAction `json:"action,omitempty"` + Rules *[]FirewallPolicyRule `json:"rules,omitempty"` + + // Fields inherited from FirewallPolicyRuleCollection + Name *string `json:"name,omitempty"` + Priority *int64 `json:"priority,omitempty"` +} + +var _ json.Marshaler = FirewallPolicyFilterRuleCollection{} + +func (s FirewallPolicyFilterRuleCollection) MarshalJSON() ([]byte, error) { + type wrapper FirewallPolicyFilterRuleCollection + wrapped := wrapper(s) + encoded, err := json.Marshal(wrapped) + if err != nil { + return nil, fmt.Errorf("marshaling FirewallPolicyFilterRuleCollection: %+v", err) + } + + var decoded map[string]interface{} + if err := json.Unmarshal(encoded, &decoded); err != nil { + return nil, fmt.Errorf("unmarshaling FirewallPolicyFilterRuleCollection: %+v", err) + } + decoded["ruleCollectionType"] = "FirewallPolicyFilterRuleCollection" + + encoded, err = json.Marshal(decoded) + if err != nil { + return nil, fmt.Errorf("re-marshaling FirewallPolicyFilterRuleCollection: %+v", err) + } + + return encoded, nil +} + +var _ json.Unmarshaler = &FirewallPolicyFilterRuleCollection{} + +func (s *FirewallPolicyFilterRuleCollection) UnmarshalJSON(bytes []byte) error { + type alias FirewallPolicyFilterRuleCollection + var decoded alias + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling into FirewallPolicyFilterRuleCollection: %+v", err) + } + + s.Action = decoded.Action + s.Name = decoded.Name + s.Priority = decoded.Priority + + var temp map[string]json.RawMessage + if err := json.Unmarshal(bytes, &temp); err != nil { + return fmt.Errorf("unmarshaling FirewallPolicyFilterRuleCollection into map[string]json.RawMessage: %+v", err) + } + + if v, ok := temp["rules"]; ok { + var listTemp []json.RawMessage + if err := json.Unmarshal(v, &listTemp); err != nil { + return fmt.Errorf("unmarshaling Rules into list []json.RawMessage: %+v", err) + } + + output := make([]FirewallPolicyRule, 0) + for i, val := range listTemp { + impl, err := unmarshalFirewallPolicyRuleImplementation(val) + if err != nil { + return fmt.Errorf("unmarshaling index %d field 'Rules' for 'FirewallPolicyFilterRuleCollection': %+v", i, err) + } + output = append(output, impl) + } + s.Rules = &output + } + return nil +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyfilterrulecollectionaction.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyfilterrulecollectionaction.go new file mode 100644 index 00000000000..42d0cb7d127 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyfilterrulecollectionaction.go @@ -0,0 +1,8 @@ +package firewallpolicyrulecollectiongroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyFilterRuleCollectionAction struct { + Type *FirewallPolicyFilterRuleCollectionActionType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyhttpheadertoinsert.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyhttpheadertoinsert.go new file mode 100644 index 00000000000..f7dd43c6089 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyhttpheadertoinsert.go @@ -0,0 +1,9 @@ +package firewallpolicyrulecollectiongroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyHTTPHeaderToInsert struct { + HeaderName *string `json:"headerName,omitempty"` + HeaderValue *string `json:"headerValue,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicynatrulecollection.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicynatrulecollection.go new file mode 100644 index 00000000000..114889c0540 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicynatrulecollection.go @@ -0,0 +1,81 @@ +package firewallpolicyrulecollectiongroups + +import ( + "encoding/json" + "fmt" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ FirewallPolicyRuleCollection = FirewallPolicyNatRuleCollection{} + +type FirewallPolicyNatRuleCollection struct { + Action *FirewallPolicyNatRuleCollectionAction `json:"action,omitempty"` + Rules *[]FirewallPolicyRule `json:"rules,omitempty"` + + // Fields inherited from FirewallPolicyRuleCollection + Name *string `json:"name,omitempty"` + Priority *int64 `json:"priority,omitempty"` +} + +var _ json.Marshaler = FirewallPolicyNatRuleCollection{} + +func (s FirewallPolicyNatRuleCollection) MarshalJSON() ([]byte, error) { + type wrapper FirewallPolicyNatRuleCollection + wrapped := wrapper(s) + encoded, err := json.Marshal(wrapped) + if err != nil { + return nil, fmt.Errorf("marshaling FirewallPolicyNatRuleCollection: %+v", err) + } + + var decoded map[string]interface{} + if err := json.Unmarshal(encoded, &decoded); err != nil { + return nil, fmt.Errorf("unmarshaling FirewallPolicyNatRuleCollection: %+v", err) + } + decoded["ruleCollectionType"] = "FirewallPolicyNatRuleCollection" + + encoded, err = json.Marshal(decoded) + if err != nil { + return nil, fmt.Errorf("re-marshaling FirewallPolicyNatRuleCollection: %+v", err) + } + + return encoded, nil +} + +var _ json.Unmarshaler = &FirewallPolicyNatRuleCollection{} + +func (s *FirewallPolicyNatRuleCollection) UnmarshalJSON(bytes []byte) error { + type alias FirewallPolicyNatRuleCollection + var decoded alias + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling into FirewallPolicyNatRuleCollection: %+v", err) + } + + s.Action = decoded.Action + s.Name = decoded.Name + s.Priority = decoded.Priority + + var temp map[string]json.RawMessage + if err := json.Unmarshal(bytes, &temp); err != nil { + return fmt.Errorf("unmarshaling FirewallPolicyNatRuleCollection into map[string]json.RawMessage: %+v", err) + } + + if v, ok := temp["rules"]; ok { + var listTemp []json.RawMessage + if err := json.Unmarshal(v, &listTemp); err != nil { + return fmt.Errorf("unmarshaling Rules into list []json.RawMessage: %+v", err) + } + + output := make([]FirewallPolicyRule, 0) + for i, val := range listTemp { + impl, err := unmarshalFirewallPolicyRuleImplementation(val) + if err != nil { + return fmt.Errorf("unmarshaling index %d field 'Rules' for 'FirewallPolicyNatRuleCollection': %+v", i, err) + } + output = append(output, impl) + } + s.Rules = &output + } + return nil +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicynatrulecollectionaction.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicynatrulecollectionaction.go new file mode 100644 index 00000000000..0b31f5d8ffa --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicynatrulecollectionaction.go @@ -0,0 +1,8 @@ +package firewallpolicyrulecollectiongroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyNatRuleCollectionAction struct { + Type *FirewallPolicyNatRuleCollectionActionType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyrule.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyrule.go new file mode 100644 index 00000000000..5cd71ef998a --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyrule.go @@ -0,0 +1,69 @@ +package firewallpolicyrulecollectiongroups + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyRule interface { +} + +// RawFirewallPolicyRuleImpl is returned when the Discriminated Value +// doesn't match any of the defined types +// NOTE: this should only be used when a type isn't defined for this type of Object (as a workaround) +// and is used only for Deserialization (e.g. this cannot be used as a Request Payload). +type RawFirewallPolicyRuleImpl struct { + Type string + Values map[string]interface{} +} + +func unmarshalFirewallPolicyRuleImplementation(input []byte) (FirewallPolicyRule, error) { + if input == nil { + return nil, nil + } + + var temp map[string]interface{} + if err := json.Unmarshal(input, &temp); err != nil { + return nil, fmt.Errorf("unmarshaling FirewallPolicyRule into map[string]interface: %+v", err) + } + + value, ok := temp["ruleType"].(string) + if !ok { + return nil, nil + } + + if strings.EqualFold(value, "ApplicationRule") { + var out ApplicationRule + if err := json.Unmarshal(input, &out); err != nil { + return nil, fmt.Errorf("unmarshaling into ApplicationRule: %+v", err) + } + return out, nil + } + + if strings.EqualFold(value, "NatRule") { + var out NatRule + if err := json.Unmarshal(input, &out); err != nil { + return nil, fmt.Errorf("unmarshaling into NatRule: %+v", err) + } + return out, nil + } + + if strings.EqualFold(value, "NetworkRule") { + var out NetworkRule + if err := json.Unmarshal(input, &out); err != nil { + return nil, fmt.Errorf("unmarshaling into NetworkRule: %+v", err) + } + return out, nil + } + + out := RawFirewallPolicyRuleImpl{ + Type: value, + Values: temp, + } + return out, nil + +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyruleapplicationprotocol.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyruleapplicationprotocol.go new file mode 100644 index 00000000000..cc2db178d08 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyruleapplicationprotocol.go @@ -0,0 +1,9 @@ +package firewallpolicyrulecollectiongroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyRuleApplicationProtocol struct { + Port *int64 `json:"port,omitempty"` + ProtocolType *FirewallPolicyRuleApplicationProtocolType `json:"protocolType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyrulecollection.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyrulecollection.go new file mode 100644 index 00000000000..30f1b958dc8 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyrulecollection.go @@ -0,0 +1,61 @@ +package firewallpolicyrulecollectiongroups + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyRuleCollection interface { +} + +// RawFirewallPolicyRuleCollectionImpl is returned when the Discriminated Value +// doesn't match any of the defined types +// NOTE: this should only be used when a type isn't defined for this type of Object (as a workaround) +// and is used only for Deserialization (e.g. this cannot be used as a Request Payload). +type RawFirewallPolicyRuleCollectionImpl struct { + Type string + Values map[string]interface{} +} + +func unmarshalFirewallPolicyRuleCollectionImplementation(input []byte) (FirewallPolicyRuleCollection, error) { + if input == nil { + return nil, nil + } + + var temp map[string]interface{} + if err := json.Unmarshal(input, &temp); err != nil { + return nil, fmt.Errorf("unmarshaling FirewallPolicyRuleCollection into map[string]interface: %+v", err) + } + + value, ok := temp["ruleCollectionType"].(string) + if !ok { + return nil, nil + } + + if strings.EqualFold(value, "FirewallPolicyFilterRuleCollection") { + var out FirewallPolicyFilterRuleCollection + if err := json.Unmarshal(input, &out); err != nil { + return nil, fmt.Errorf("unmarshaling into FirewallPolicyFilterRuleCollection: %+v", err) + } + return out, nil + } + + if strings.EqualFold(value, "FirewallPolicyNatRuleCollection") { + var out FirewallPolicyNatRuleCollection + if err := json.Unmarshal(input, &out); err != nil { + return nil, fmt.Errorf("unmarshaling into FirewallPolicyNatRuleCollection: %+v", err) + } + return out, nil + } + + out := RawFirewallPolicyRuleCollectionImpl{ + Type: value, + Values: temp, + } + return out, nil + +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyrulecollectiongroup.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyrulecollectiongroup.go new file mode 100644 index 00000000000..3cd2b948905 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyrulecollectiongroup.go @@ -0,0 +1,12 @@ +package firewallpolicyrulecollectiongroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyRuleCollectionGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FirewallPolicyRuleCollectionGroupProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyrulecollectiongroupproperties.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyrulecollectiongroupproperties.go new file mode 100644 index 00000000000..e395e7aa41f --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_firewallpolicyrulecollectiongroupproperties.go @@ -0,0 +1,53 @@ +package firewallpolicyrulecollectiongroups + +import ( + "encoding/json" + "fmt" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyRuleCollectionGroupProperties struct { + Priority *int64 `json:"priority,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RuleCollections *[]FirewallPolicyRuleCollection `json:"ruleCollections,omitempty"` + Size *string `json:"size,omitempty"` +} + +var _ json.Unmarshaler = &FirewallPolicyRuleCollectionGroupProperties{} + +func (s *FirewallPolicyRuleCollectionGroupProperties) UnmarshalJSON(bytes []byte) error { + type alias FirewallPolicyRuleCollectionGroupProperties + var decoded alias + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling into FirewallPolicyRuleCollectionGroupProperties: %+v", err) + } + + s.Priority = decoded.Priority + s.ProvisioningState = decoded.ProvisioningState + s.Size = decoded.Size + + var temp map[string]json.RawMessage + if err := json.Unmarshal(bytes, &temp); err != nil { + return fmt.Errorf("unmarshaling FirewallPolicyRuleCollectionGroupProperties into map[string]json.RawMessage: %+v", err) + } + + if v, ok := temp["ruleCollections"]; ok { + var listTemp []json.RawMessage + if err := json.Unmarshal(v, &listTemp); err != nil { + return fmt.Errorf("unmarshaling RuleCollections into list []json.RawMessage: %+v", err) + } + + output := make([]FirewallPolicyRuleCollection, 0) + for i, val := range listTemp { + impl, err := unmarshalFirewallPolicyRuleCollectionImplementation(val) + if err != nil { + return fmt.Errorf("unmarshaling index %d field 'RuleCollections' for 'FirewallPolicyRuleCollectionGroupProperties': %+v", i, err) + } + output = append(output, impl) + } + s.RuleCollections = &output + } + return nil +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_natrule.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_natrule.go new file mode 100644 index 00000000000..5354374d68c --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_natrule.go @@ -0,0 +1,50 @@ +package firewallpolicyrulecollectiongroups + +import ( + "encoding/json" + "fmt" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ FirewallPolicyRule = NatRule{} + +type NatRule struct { + DestinationAddresses *[]string `json:"destinationAddresses,omitempty"` + DestinationPorts *[]string `json:"destinationPorts,omitempty"` + IPProtocols *[]FirewallPolicyRuleNetworkProtocol `json:"ipProtocols,omitempty"` + SourceAddresses *[]string `json:"sourceAddresses,omitempty"` + SourceIPGroups *[]string `json:"sourceIpGroups,omitempty"` + TranslatedAddress *string `json:"translatedAddress,omitempty"` + TranslatedFqdn *string `json:"translatedFqdn,omitempty"` + TranslatedPort *string `json:"translatedPort,omitempty"` + + // Fields inherited from FirewallPolicyRule + Description *string `json:"description,omitempty"` + Name *string `json:"name,omitempty"` +} + +var _ json.Marshaler = NatRule{} + +func (s NatRule) MarshalJSON() ([]byte, error) { + type wrapper NatRule + wrapped := wrapper(s) + encoded, err := json.Marshal(wrapped) + if err != nil { + return nil, fmt.Errorf("marshaling NatRule: %+v", err) + } + + var decoded map[string]interface{} + if err := json.Unmarshal(encoded, &decoded); err != nil { + return nil, fmt.Errorf("unmarshaling NatRule: %+v", err) + } + decoded["ruleType"] = "NatRule" + + encoded, err = json.Marshal(decoded) + if err != nil { + return nil, fmt.Errorf("re-marshaling NatRule: %+v", err) + } + + return encoded, nil +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_networkrule.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_networkrule.go new file mode 100644 index 00000000000..7548f48a194 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/model_networkrule.go @@ -0,0 +1,49 @@ +package firewallpolicyrulecollectiongroups + +import ( + "encoding/json" + "fmt" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ FirewallPolicyRule = NetworkRule{} + +type NetworkRule struct { + DestinationAddresses *[]string `json:"destinationAddresses,omitempty"` + DestinationFqdns *[]string `json:"destinationFqdns,omitempty"` + DestinationIPGroups *[]string `json:"destinationIpGroups,omitempty"` + DestinationPorts *[]string `json:"destinationPorts,omitempty"` + IPProtocols *[]FirewallPolicyRuleNetworkProtocol `json:"ipProtocols,omitempty"` + SourceAddresses *[]string `json:"sourceAddresses,omitempty"` + SourceIPGroups *[]string `json:"sourceIpGroups,omitempty"` + + // Fields inherited from FirewallPolicyRule + Description *string `json:"description,omitempty"` + Name *string `json:"name,omitempty"` +} + +var _ json.Marshaler = NetworkRule{} + +func (s NetworkRule) MarshalJSON() ([]byte, error) { + type wrapper NetworkRule + wrapped := wrapper(s) + encoded, err := json.Marshal(wrapped) + if err != nil { + return nil, fmt.Errorf("marshaling NetworkRule: %+v", err) + } + + var decoded map[string]interface{} + if err := json.Unmarshal(encoded, &decoded); err != nil { + return nil, fmt.Errorf("unmarshaling NetworkRule: %+v", err) + } + decoded["ruleType"] = "NetworkRule" + + encoded, err = json.Marshal(decoded) + if err != nil { + return nil, fmt.Errorf("re-marshaling NetworkRule: %+v", err) + } + + return encoded, nil +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/predicates.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/predicates.go new file mode 100644 index 00000000000..9762acada56 --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/predicates.go @@ -0,0 +1,32 @@ +package firewallpolicyrulecollectiongroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FirewallPolicyRuleCollectionGroupOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p FirewallPolicyRuleCollectionGroupOperationPredicate) Matches(input FirewallPolicyRuleCollectionGroup) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/version.go b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/version.go new file mode 100644 index 00000000000..be70c5b884d --- /dev/null +++ b/resource-manager/network/2024-01-01/firewallpolicyrulecollectiongroups/version.go @@ -0,0 +1,12 @@ +package firewallpolicyrulecollectiongroups + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/firewallpolicyrulecollectiongroups/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/flowlogs/README.md b/resource-manager/network/2024-01-01/flowlogs/README.md new file mode 100644 index 00000000000..b3358728d02 --- /dev/null +++ b/resource-manager/network/2024-01-01/flowlogs/README.md @@ -0,0 +1,103 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/flowlogs` Documentation + +The `flowlogs` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/flowlogs" +``` + + +### Client Initialization + +```go +client := flowlogs.NewFlowLogsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `FlowLogsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := flowlogs.NewFlowLogID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue", "flowLogValue") + +payload := flowlogs.FlowLog{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `FlowLogsClient.Delete` + +```go +ctx := context.TODO() +id := flowlogs.NewFlowLogID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue", "flowLogValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `FlowLogsClient.Get` + +```go +ctx := context.TODO() +id := flowlogs.NewFlowLogID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue", "flowLogValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `FlowLogsClient.List` + +```go +ctx := context.TODO() +id := flowlogs.NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `FlowLogsClient.UpdateTags` + +```go +ctx := context.TODO() +id := flowlogs.NewFlowLogID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue", "flowLogValue") + +payload := flowlogs.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/flowlogs/client.go b/resource-manager/network/2024-01-01/flowlogs/client.go new file mode 100644 index 00000000000..9368055263b --- /dev/null +++ b/resource-manager/network/2024-01-01/flowlogs/client.go @@ -0,0 +1,26 @@ +package flowlogs + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogsClient struct { + Client *resourcemanager.Client +} + +func NewFlowLogsClientWithBaseURI(sdkApi sdkEnv.Api) (*FlowLogsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "flowlogs", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating FlowLogsClient: %+v", err) + } + + return &FlowLogsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/flowlogs/constants.go b/resource-manager/network/2024-01-01/flowlogs/constants.go new file mode 100644 index 00000000000..e5e97eea109 --- /dev/null +++ b/resource-manager/network/2024-01-01/flowlogs/constants.go @@ -0,0 +1,95 @@ +package flowlogs + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/flowlogs/id_flowlog.go b/resource-manager/network/2024-01-01/flowlogs/id_flowlog.go new file mode 100644 index 00000000000..65f0fddaf41 --- /dev/null +++ b/resource-manager/network/2024-01-01/flowlogs/id_flowlog.go @@ -0,0 +1,139 @@ +package flowlogs + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&FlowLogId{}) +} + +var _ resourceids.ResourceId = &FlowLogId{} + +// FlowLogId is a struct representing the Resource ID for a Flow Log +type FlowLogId struct { + SubscriptionId string + ResourceGroupName string + NetworkWatcherName string + FlowLogName string +} + +// NewFlowLogID returns a new FlowLogId struct +func NewFlowLogID(subscriptionId string, resourceGroupName string, networkWatcherName string, flowLogName string) FlowLogId { + return FlowLogId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkWatcherName: networkWatcherName, + FlowLogName: flowLogName, + } +} + +// ParseFlowLogID parses 'input' into a FlowLogId +func ParseFlowLogID(input string) (*FlowLogId, error) { + parser := resourceids.NewParserFromResourceIdType(&FlowLogId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := FlowLogId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseFlowLogIDInsensitively parses 'input' case-insensitively into a FlowLogId +// note: this method should only be used for API response data and not user input +func ParseFlowLogIDInsensitively(input string) (*FlowLogId, error) { + parser := resourceids.NewParserFromResourceIdType(&FlowLogId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := FlowLogId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *FlowLogId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkWatcherName, ok = input.Parsed["networkWatcherName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkWatcherName", input) + } + + if id.FlowLogName, ok = input.Parsed["flowLogName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "flowLogName", input) + } + + return nil +} + +// ValidateFlowLogID checks that 'input' can be parsed as a Flow Log ID +func ValidateFlowLogID(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 := ParseFlowLogID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Flow Log ID +func (id FlowLogId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkWatchers/%s/flowLogs/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkWatcherName, id.FlowLogName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Flow Log ID +func (id FlowLogId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkWatchers", "networkWatchers", "networkWatchers"), + resourceids.UserSpecifiedSegment("networkWatcherName", "networkWatcherValue"), + resourceids.StaticSegment("staticFlowLogs", "flowLogs", "flowLogs"), + resourceids.UserSpecifiedSegment("flowLogName", "flowLogValue"), + } +} + +// String returns a human-readable description of this Flow Log ID +func (id FlowLogId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Watcher Name: %q", id.NetworkWatcherName), + fmt.Sprintf("Flow Log Name: %q", id.FlowLogName), + } + return fmt.Sprintf("Flow Log (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/flowlogs/id_flowlog_test.go b/resource-manager/network/2024-01-01/flowlogs/id_flowlog_test.go new file mode 100644 index 00000000000..b57a529ab52 --- /dev/null +++ b/resource-manager/network/2024-01-01/flowlogs/id_flowlog_test.go @@ -0,0 +1,327 @@ +package flowlogs + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &FlowLogId{} + +func TestNewFlowLogID(t *testing.T) { + id := NewFlowLogID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue", "flowLogValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkWatcherName != "networkWatcherValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkWatcherName'", id.NetworkWatcherName, "networkWatcherValue") + } + + if id.FlowLogName != "flowLogValue" { + t.Fatalf("Expected %q but got %q for Segment 'FlowLogName'", id.FlowLogName, "flowLogValue") + } +} + +func TestFormatFlowLogID(t *testing.T) { + actual := NewFlowLogID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue", "flowLogValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/flowLogs/flowLogValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseFlowLogID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *FlowLogId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/flowLogs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/flowLogs/flowLogValue", + Expected: &FlowLogId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkWatcherName: "networkWatcherValue", + FlowLogName: "flowLogValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/flowLogs/flowLogValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseFlowLogID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkWatcherName != v.Expected.NetworkWatcherName { + t.Fatalf("Expected %q but got %q for NetworkWatcherName", v.Expected.NetworkWatcherName, actual.NetworkWatcherName) + } + + if actual.FlowLogName != v.Expected.FlowLogName { + t.Fatalf("Expected %q but got %q for FlowLogName", v.Expected.FlowLogName, actual.FlowLogName) + } + + } +} + +func TestParseFlowLogIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *FlowLogId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs/nEtWoRkWaTcHeRvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/flowLogs", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs/nEtWoRkWaTcHeRvAlUe/fLoWlOgS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/flowLogs/flowLogValue", + Expected: &FlowLogId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkWatcherName: "networkWatcherValue", + FlowLogName: "flowLogValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/flowLogs/flowLogValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs/nEtWoRkWaTcHeRvAlUe/fLoWlOgS/fLoWlOgVaLuE", + Expected: &FlowLogId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkWatcherName: "nEtWoRkWaTcHeRvAlUe", + FlowLogName: "fLoWlOgVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs/nEtWoRkWaTcHeRvAlUe/fLoWlOgS/fLoWlOgVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseFlowLogIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkWatcherName != v.Expected.NetworkWatcherName { + t.Fatalf("Expected %q but got %q for NetworkWatcherName", v.Expected.NetworkWatcherName, actual.NetworkWatcherName) + } + + if actual.FlowLogName != v.Expected.FlowLogName { + t.Fatalf("Expected %q but got %q for FlowLogName", v.Expected.FlowLogName, actual.FlowLogName) + } + + } +} + +func TestSegmentsForFlowLogId(t *testing.T) { + segments := FlowLogId{}.Segments() + if len(segments) == 0 { + t.Fatalf("FlowLogId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/flowlogs/id_networkwatcher.go b/resource-manager/network/2024-01-01/flowlogs/id_networkwatcher.go new file mode 100644 index 00000000000..480aa5be344 --- /dev/null +++ b/resource-manager/network/2024-01-01/flowlogs/id_networkwatcher.go @@ -0,0 +1,130 @@ +package flowlogs + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NetworkWatcherId{}) +} + +var _ resourceids.ResourceId = &NetworkWatcherId{} + +// NetworkWatcherId is a struct representing the Resource ID for a Network Watcher +type NetworkWatcherId struct { + SubscriptionId string + ResourceGroupName string + NetworkWatcherName string +} + +// NewNetworkWatcherID returns a new NetworkWatcherId struct +func NewNetworkWatcherID(subscriptionId string, resourceGroupName string, networkWatcherName string) NetworkWatcherId { + return NetworkWatcherId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkWatcherName: networkWatcherName, + } +} + +// ParseNetworkWatcherID parses 'input' into a NetworkWatcherId +func ParseNetworkWatcherID(input string) (*NetworkWatcherId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkWatcherId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkWatcherId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNetworkWatcherIDInsensitively parses 'input' case-insensitively into a NetworkWatcherId +// note: this method should only be used for API response data and not user input +func ParseNetworkWatcherIDInsensitively(input string) (*NetworkWatcherId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkWatcherId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkWatcherId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NetworkWatcherId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkWatcherName, ok = input.Parsed["networkWatcherName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkWatcherName", input) + } + + return nil +} + +// ValidateNetworkWatcherID checks that 'input' can be parsed as a Network Watcher ID +func ValidateNetworkWatcherID(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 := ParseNetworkWatcherID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Network Watcher ID +func (id NetworkWatcherId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkWatchers/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkWatcherName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Network Watcher ID +func (id NetworkWatcherId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkWatchers", "networkWatchers", "networkWatchers"), + resourceids.UserSpecifiedSegment("networkWatcherName", "networkWatcherValue"), + } +} + +// String returns a human-readable description of this Network Watcher ID +func (id NetworkWatcherId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Watcher Name: %q", id.NetworkWatcherName), + } + return fmt.Sprintf("Network Watcher (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/flowlogs/id_networkwatcher_test.go b/resource-manager/network/2024-01-01/flowlogs/id_networkwatcher_test.go new file mode 100644 index 00000000000..8d877dbc644 --- /dev/null +++ b/resource-manager/network/2024-01-01/flowlogs/id_networkwatcher_test.go @@ -0,0 +1,282 @@ +package flowlogs + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NetworkWatcherId{} + +func TestNewNetworkWatcherID(t *testing.T) { + id := NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkWatcherName != "networkWatcherValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkWatcherName'", id.NetworkWatcherName, "networkWatcherValue") + } +} + +func TestFormatNetworkWatcherID(t *testing.T) { + actual := NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNetworkWatcherID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkWatcherId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue", + Expected: &NetworkWatcherId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkWatcherName: "networkWatcherValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkWatcherID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkWatcherName != v.Expected.NetworkWatcherName { + t.Fatalf("Expected %q but got %q for NetworkWatcherName", v.Expected.NetworkWatcherName, actual.NetworkWatcherName) + } + + } +} + +func TestParseNetworkWatcherIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkWatcherId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue", + Expected: &NetworkWatcherId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkWatcherName: "networkWatcherValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs/nEtWoRkWaTcHeRvAlUe", + Expected: &NetworkWatcherId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkWatcherName: "nEtWoRkWaTcHeRvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs/nEtWoRkWaTcHeRvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkWatcherIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkWatcherName != v.Expected.NetworkWatcherName { + t.Fatalf("Expected %q but got %q for NetworkWatcherName", v.Expected.NetworkWatcherName, actual.NetworkWatcherName) + } + + } +} + +func TestSegmentsForNetworkWatcherId(t *testing.T) { + segments := NetworkWatcherId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NetworkWatcherId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/flowlogs/method_createorupdate.go b/resource-manager/network/2024-01-01/flowlogs/method_createorupdate.go new file mode 100644 index 00000000000..9469b674d32 --- /dev/null +++ b/resource-manager/network/2024-01-01/flowlogs/method_createorupdate.go @@ -0,0 +1,75 @@ +package flowlogs + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *FlowLog +} + +// CreateOrUpdate ... +func (c FlowLogsClient) CreateOrUpdate(ctx context.Context, id FlowLogId, input FlowLog) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c FlowLogsClient) CreateOrUpdateThenPoll(ctx context.Context, id FlowLogId, input FlowLog) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/flowlogs/method_delete.go b/resource-manager/network/2024-01-01/flowlogs/method_delete.go new file mode 100644 index 00000000000..1ff7776fa73 --- /dev/null +++ b/resource-manager/network/2024-01-01/flowlogs/method_delete.go @@ -0,0 +1,70 @@ +package flowlogs + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c FlowLogsClient) Delete(ctx context.Context, id FlowLogId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c FlowLogsClient) DeleteThenPoll(ctx context.Context, id FlowLogId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/flowlogs/method_get.go b/resource-manager/network/2024-01-01/flowlogs/method_get.go new file mode 100644 index 00000000000..91942eff6d3 --- /dev/null +++ b/resource-manager/network/2024-01-01/flowlogs/method_get.go @@ -0,0 +1,54 @@ +package flowlogs + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *FlowLog +} + +// Get ... +func (c FlowLogsClient) Get(ctx context.Context, id FlowLogId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model FlowLog + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/flowlogs/method_list.go b/resource-manager/network/2024-01-01/flowlogs/method_list.go new file mode 100644 index 00000000000..9d5d0ccacbd --- /dev/null +++ b/resource-manager/network/2024-01-01/flowlogs/method_list.go @@ -0,0 +1,92 @@ +package flowlogs + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]FlowLog +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []FlowLog +} + +// List ... +func (c FlowLogsClient) List(ctx context.Context, id NetworkWatcherId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/flowLogs", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]FlowLog `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c FlowLogsClient) ListComplete(ctx context.Context, id NetworkWatcherId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, FlowLogOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c FlowLogsClient) ListCompleteMatchingPredicate(ctx context.Context, id NetworkWatcherId, predicate FlowLogOperationPredicate) (result ListCompleteResult, err error) { + items := make([]FlowLog, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/flowlogs/method_updatetags.go b/resource-manager/network/2024-01-01/flowlogs/method_updatetags.go new file mode 100644 index 00000000000..7ef9682b564 --- /dev/null +++ b/resource-manager/network/2024-01-01/flowlogs/method_updatetags.go @@ -0,0 +1,58 @@ +package flowlogs + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *FlowLog +} + +// UpdateTags ... +func (c FlowLogsClient) UpdateTags(ctx context.Context, id FlowLogId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model FlowLog + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/flowlogs/model_flowlog.go b/resource-manager/network/2024-01-01/flowlogs/model_flowlog.go new file mode 100644 index 00000000000..b379e613ed9 --- /dev/null +++ b/resource-manager/network/2024-01-01/flowlogs/model_flowlog.go @@ -0,0 +1,19 @@ +package flowlogs + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLog struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FlowLogPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/flowlogs/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/flowlogs/model_flowlogformatparameters.go new file mode 100644 index 00000000000..16ca58e95a3 --- /dev/null +++ b/resource-manager/network/2024-01-01/flowlogs/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package flowlogs + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/flowlogs/model_flowlogpropertiesformat.go b/resource-manager/network/2024-01-01/flowlogs/model_flowlogpropertiesformat.go new file mode 100644 index 00000000000..e08f8fc6124 --- /dev/null +++ b/resource-manager/network/2024-01-01/flowlogs/model_flowlogpropertiesformat.go @@ -0,0 +1,15 @@ +package flowlogs + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogPropertiesFormat struct { + Enabled *bool `json:"enabled,omitempty"` + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` + TargetResourceGuid *string `json:"targetResourceGuid,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/flowlogs/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/flowlogs/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..37f07668bea --- /dev/null +++ b/resource-manager/network/2024-01-01/flowlogs/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package flowlogs + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/flowlogs/model_tagsobject.go b/resource-manager/network/2024-01-01/flowlogs/model_tagsobject.go new file mode 100644 index 00000000000..c5cd354ef29 --- /dev/null +++ b/resource-manager/network/2024-01-01/flowlogs/model_tagsobject.go @@ -0,0 +1,8 @@ +package flowlogs + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/flowlogs/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/flowlogs/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..5b935e5f27b --- /dev/null +++ b/resource-manager/network/2024-01-01/flowlogs/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package flowlogs + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/flowlogs/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/flowlogs/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..d6d9faede4b --- /dev/null +++ b/resource-manager/network/2024-01-01/flowlogs/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package flowlogs + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/flowlogs/predicates.go b/resource-manager/network/2024-01-01/flowlogs/predicates.go new file mode 100644 index 00000000000..746df2611cc --- /dev/null +++ b/resource-manager/network/2024-01-01/flowlogs/predicates.go @@ -0,0 +1,37 @@ +package flowlogs + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p FlowLogOperationPredicate) Matches(input FlowLog) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/flowlogs/version.go b/resource-manager/network/2024-01-01/flowlogs/version.go new file mode 100644 index 00000000000..59e62e8a995 --- /dev/null +++ b/resource-manager/network/2024-01-01/flowlogs/version.go @@ -0,0 +1,12 @@ +package flowlogs + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/flowlogs/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/ipallocations/README.md b/resource-manager/network/2024-01-01/ipallocations/README.md new file mode 100644 index 00000000000..163090e6a2c --- /dev/null +++ b/resource-manager/network/2024-01-01/ipallocations/README.md @@ -0,0 +1,121 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/ipallocations` Documentation + +The `ipallocations` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/ipallocations" +``` + + +### Client Initialization + +```go +client := ipallocations.NewIPAllocationsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `IPAllocationsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := ipallocations.NewIPAllocationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ipAllocationValue") + +payload := ipallocations.IPAllocation{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `IPAllocationsClient.Delete` + +```go +ctx := context.TODO() +id := ipallocations.NewIPAllocationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ipAllocationValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `IPAllocationsClient.Get` + +```go +ctx := context.TODO() +id := ipallocations.NewIPAllocationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ipAllocationValue") + +read, err := client.Get(ctx, id, ipallocations.DefaultGetOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `IPAllocationsClient.List` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `IPAllocationsClient.ListByResourceGroup` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.ListByResourceGroup(ctx, id)` can be used to do batched pagination +items, err := client.ListByResourceGroupComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `IPAllocationsClient.UpdateTags` + +```go +ctx := context.TODO() +id := ipallocations.NewIPAllocationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ipAllocationValue") + +payload := ipallocations.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/ipallocations/client.go b/resource-manager/network/2024-01-01/ipallocations/client.go new file mode 100644 index 00000000000..0450bb3a685 --- /dev/null +++ b/resource-manager/network/2024-01-01/ipallocations/client.go @@ -0,0 +1,26 @@ +package ipallocations + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPAllocationsClient struct { + Client *resourcemanager.Client +} + +func NewIPAllocationsClientWithBaseURI(sdkApi sdkEnv.Api) (*IPAllocationsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "ipallocations", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating IPAllocationsClient: %+v", err) + } + + return &IPAllocationsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/ipallocations/constants.go b/resource-manager/network/2024-01-01/ipallocations/constants.go new file mode 100644 index 00000000000..da0323d2ad0 --- /dev/null +++ b/resource-manager/network/2024-01-01/ipallocations/constants.go @@ -0,0 +1,92 @@ +package ipallocations + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPAllocationType string + +const ( + IPAllocationTypeHypernet IPAllocationType = "Hypernet" + IPAllocationTypeUndefined IPAllocationType = "Undefined" +) + +func PossibleValuesForIPAllocationType() []string { + return []string{ + string(IPAllocationTypeHypernet), + string(IPAllocationTypeUndefined), + } +} + +func (s *IPAllocationType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationType(input string) (*IPAllocationType, error) { + vals := map[string]IPAllocationType{ + "hypernet": IPAllocationTypeHypernet, + "undefined": IPAllocationTypeUndefined, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationType(input) + return &out, nil +} + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/ipallocations/id_ipallocation.go b/resource-manager/network/2024-01-01/ipallocations/id_ipallocation.go new file mode 100644 index 00000000000..1f45e0c491f --- /dev/null +++ b/resource-manager/network/2024-01-01/ipallocations/id_ipallocation.go @@ -0,0 +1,130 @@ +package ipallocations + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&IPAllocationId{}) +} + +var _ resourceids.ResourceId = &IPAllocationId{} + +// IPAllocationId is a struct representing the Resource ID for a I P Allocation +type IPAllocationId struct { + SubscriptionId string + ResourceGroupName string + IpAllocationName string +} + +// NewIPAllocationID returns a new IPAllocationId struct +func NewIPAllocationID(subscriptionId string, resourceGroupName string, ipAllocationName string) IPAllocationId { + return IPAllocationId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + IpAllocationName: ipAllocationName, + } +} + +// ParseIPAllocationID parses 'input' into a IPAllocationId +func ParseIPAllocationID(input string) (*IPAllocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&IPAllocationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := IPAllocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseIPAllocationIDInsensitively parses 'input' case-insensitively into a IPAllocationId +// note: this method should only be used for API response data and not user input +func ParseIPAllocationIDInsensitively(input string) (*IPAllocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&IPAllocationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := IPAllocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *IPAllocationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.IpAllocationName, ok = input.Parsed["ipAllocationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "ipAllocationName", input) + } + + return nil +} + +// ValidateIPAllocationID checks that 'input' can be parsed as a I P Allocation ID +func ValidateIPAllocationID(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 := ParseIPAllocationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted I P Allocation ID +func (id IPAllocationId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/ipAllocations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.IpAllocationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this I P Allocation ID +func (id IPAllocationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticIpAllocations", "ipAllocations", "ipAllocations"), + resourceids.UserSpecifiedSegment("ipAllocationName", "ipAllocationValue"), + } +} + +// String returns a human-readable description of this I P Allocation ID +func (id IPAllocationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Ip Allocation Name: %q", id.IpAllocationName), + } + return fmt.Sprintf("I P Allocation (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/ipallocations/id_ipallocation_test.go b/resource-manager/network/2024-01-01/ipallocations/id_ipallocation_test.go new file mode 100644 index 00000000000..35284a7ef67 --- /dev/null +++ b/resource-manager/network/2024-01-01/ipallocations/id_ipallocation_test.go @@ -0,0 +1,282 @@ +package ipallocations + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &IPAllocationId{} + +func TestNewIPAllocationID(t *testing.T) { + id := NewIPAllocationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ipAllocationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.IpAllocationName != "ipAllocationValue" { + t.Fatalf("Expected %q but got %q for Segment 'IpAllocationName'", id.IpAllocationName, "ipAllocationValue") + } +} + +func TestFormatIPAllocationID(t *testing.T) { + actual := NewIPAllocationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ipAllocationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ipAllocations/ipAllocationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseIPAllocationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *IPAllocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ipAllocations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ipAllocations/ipAllocationValue", + Expected: &IPAllocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + IpAllocationName: "ipAllocationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ipAllocations/ipAllocationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseIPAllocationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.IpAllocationName != v.Expected.IpAllocationName { + t.Fatalf("Expected %q but got %q for IpAllocationName", v.Expected.IpAllocationName, actual.IpAllocationName) + } + + } +} + +func TestParseIPAllocationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *IPAllocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ipAllocations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/iPaLlOcAtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ipAllocations/ipAllocationValue", + Expected: &IPAllocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + IpAllocationName: "ipAllocationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ipAllocations/ipAllocationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/iPaLlOcAtIoNs/iPaLlOcAtIoNvAlUe", + Expected: &IPAllocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + IpAllocationName: "iPaLlOcAtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/iPaLlOcAtIoNs/iPaLlOcAtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseIPAllocationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.IpAllocationName != v.Expected.IpAllocationName { + t.Fatalf("Expected %q but got %q for IpAllocationName", v.Expected.IpAllocationName, actual.IpAllocationName) + } + + } +} + +func TestSegmentsForIPAllocationId(t *testing.T) { + segments := IPAllocationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("IPAllocationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/ipallocations/method_createorupdate.go b/resource-manager/network/2024-01-01/ipallocations/method_createorupdate.go new file mode 100644 index 00000000000..6b097aa0b1a --- /dev/null +++ b/resource-manager/network/2024-01-01/ipallocations/method_createorupdate.go @@ -0,0 +1,75 @@ +package ipallocations + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *IPAllocation +} + +// CreateOrUpdate ... +func (c IPAllocationsClient) CreateOrUpdate(ctx context.Context, id IPAllocationId, input IPAllocation) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c IPAllocationsClient) CreateOrUpdateThenPoll(ctx context.Context, id IPAllocationId, input IPAllocation) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/ipallocations/method_delete.go b/resource-manager/network/2024-01-01/ipallocations/method_delete.go new file mode 100644 index 00000000000..2e272e0b823 --- /dev/null +++ b/resource-manager/network/2024-01-01/ipallocations/method_delete.go @@ -0,0 +1,71 @@ +package ipallocations + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c IPAllocationsClient) Delete(ctx context.Context, id IPAllocationId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c IPAllocationsClient) DeleteThenPoll(ctx context.Context, id IPAllocationId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/ipallocations/method_get.go b/resource-manager/network/2024-01-01/ipallocations/method_get.go new file mode 100644 index 00000000000..6d8c674b8b8 --- /dev/null +++ b/resource-manager/network/2024-01-01/ipallocations/method_get.go @@ -0,0 +1,83 @@ +package ipallocations + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *IPAllocation +} + +type GetOperationOptions struct { + Expand *string +} + +func DefaultGetOperationOptions() GetOperationOptions { + return GetOperationOptions{} +} + +func (o GetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// Get ... +func (c IPAllocationsClient) Get(ctx context.Context, id IPAllocationId, options GetOperationOptions) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model IPAllocation + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/ipallocations/method_list.go b/resource-manager/network/2024-01-01/ipallocations/method_list.go new file mode 100644 index 00000000000..bacc2ab4add --- /dev/null +++ b/resource-manager/network/2024-01-01/ipallocations/method_list.go @@ -0,0 +1,93 @@ +package ipallocations + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]IPAllocation +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []IPAllocation +} + +// List ... +func (c IPAllocationsClient) List(ctx context.Context, id commonids.SubscriptionId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/ipAllocations", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]IPAllocation `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c IPAllocationsClient) ListComplete(ctx context.Context, id commonids.SubscriptionId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, IPAllocationOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c IPAllocationsClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate IPAllocationOperationPredicate) (result ListCompleteResult, err error) { + items := make([]IPAllocation, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/ipallocations/method_listbyresourcegroup.go b/resource-manager/network/2024-01-01/ipallocations/method_listbyresourcegroup.go new file mode 100644 index 00000000000..4c81449cf9a --- /dev/null +++ b/resource-manager/network/2024-01-01/ipallocations/method_listbyresourcegroup.go @@ -0,0 +1,93 @@ +package ipallocations + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListByResourceGroupOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]IPAllocation +} + +type ListByResourceGroupCompleteResult struct { + LatestHttpResponse *http.Response + Items []IPAllocation +} + +// ListByResourceGroup ... +func (c IPAllocationsClient) ListByResourceGroup(ctx context.Context, id commonids.ResourceGroupId) (result ListByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/ipAllocations", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]IPAllocation `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListByResourceGroupComplete retrieves all the results into a single object +func (c IPAllocationsClient) ListByResourceGroupComplete(ctx context.Context, id commonids.ResourceGroupId) (ListByResourceGroupCompleteResult, error) { + return c.ListByResourceGroupCompleteMatchingPredicate(ctx, id, IPAllocationOperationPredicate{}) +} + +// ListByResourceGroupCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c IPAllocationsClient) ListByResourceGroupCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate IPAllocationOperationPredicate) (result ListByResourceGroupCompleteResult, err error) { + items := make([]IPAllocation, 0) + + resp, err := c.ListByResourceGroup(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListByResourceGroupCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/ipallocations/method_updatetags.go b/resource-manager/network/2024-01-01/ipallocations/method_updatetags.go new file mode 100644 index 00000000000..792fe909fcb --- /dev/null +++ b/resource-manager/network/2024-01-01/ipallocations/method_updatetags.go @@ -0,0 +1,58 @@ +package ipallocations + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *IPAllocation +} + +// UpdateTags ... +func (c IPAllocationsClient) UpdateTags(ctx context.Context, id IPAllocationId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model IPAllocation + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/ipallocations/model_ipallocation.go b/resource-manager/network/2024-01-01/ipallocations/model_ipallocation.go new file mode 100644 index 00000000000..d59b8140ce3 --- /dev/null +++ b/resource-manager/network/2024-01-01/ipallocations/model_ipallocation.go @@ -0,0 +1,14 @@ +package ipallocations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPAllocation struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPAllocationPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/ipallocations/model_ipallocationpropertiesformat.go b/resource-manager/network/2024-01-01/ipallocations/model_ipallocationpropertiesformat.go new file mode 100644 index 00000000000..ee1eec041ee --- /dev/null +++ b/resource-manager/network/2024-01-01/ipallocations/model_ipallocationpropertiesformat.go @@ -0,0 +1,15 @@ +package ipallocations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPAllocationPropertiesFormat struct { + AllocationTags *map[string]string `json:"allocationTags,omitempty"` + IPamAllocationId *string `json:"ipamAllocationId,omitempty"` + Prefix *string `json:"prefix,omitempty"` + PrefixLength *int64 `json:"prefixLength,omitempty"` + PrefixType *IPVersion `json:"prefixType,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` + Type *IPAllocationType `json:"type,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/ipallocations/model_subresource.go b/resource-manager/network/2024-01-01/ipallocations/model_subresource.go new file mode 100644 index 00000000000..3d4e1d6d386 --- /dev/null +++ b/resource-manager/network/2024-01-01/ipallocations/model_subresource.go @@ -0,0 +1,8 @@ +package ipallocations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/ipallocations/model_tagsobject.go b/resource-manager/network/2024-01-01/ipallocations/model_tagsobject.go new file mode 100644 index 00000000000..e07b18f03bb --- /dev/null +++ b/resource-manager/network/2024-01-01/ipallocations/model_tagsobject.go @@ -0,0 +1,8 @@ +package ipallocations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/ipallocations/predicates.go b/resource-manager/network/2024-01-01/ipallocations/predicates.go new file mode 100644 index 00000000000..5f4e136ae66 --- /dev/null +++ b/resource-manager/network/2024-01-01/ipallocations/predicates.go @@ -0,0 +1,37 @@ +package ipallocations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPAllocationOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p IPAllocationOperationPredicate) Matches(input IPAllocation) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/ipallocations/version.go b/resource-manager/network/2024-01-01/ipallocations/version.go new file mode 100644 index 00000000000..d56f804b556 --- /dev/null +++ b/resource-manager/network/2024-01-01/ipallocations/version.go @@ -0,0 +1,12 @@ +package ipallocations + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/ipallocations/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/ipgroups/README.md b/resource-manager/network/2024-01-01/ipgroups/README.md new file mode 100644 index 00000000000..2bfeffe1df2 --- /dev/null +++ b/resource-manager/network/2024-01-01/ipgroups/README.md @@ -0,0 +1,121 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/ipgroups` Documentation + +The `ipgroups` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/ipgroups" +``` + + +### Client Initialization + +```go +client := ipgroups.NewIPGroupsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `IPGroupsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := ipgroups.NewIPGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ipGroupValue") + +payload := ipgroups.IPGroup{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `IPGroupsClient.Delete` + +```go +ctx := context.TODO() +id := ipgroups.NewIPGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ipGroupValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `IPGroupsClient.Get` + +```go +ctx := context.TODO() +id := ipgroups.NewIPGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ipGroupValue") + +read, err := client.Get(ctx, id, ipgroups.DefaultGetOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `IPGroupsClient.List` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `IPGroupsClient.ListByResourceGroup` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.ListByResourceGroup(ctx, id)` can be used to do batched pagination +items, err := client.ListByResourceGroupComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `IPGroupsClient.UpdateGroups` + +```go +ctx := context.TODO() +id := ipgroups.NewIPGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ipGroupValue") + +payload := ipgroups.TagsObject{ + // ... +} + + +read, err := client.UpdateGroups(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/ipgroups/client.go b/resource-manager/network/2024-01-01/ipgroups/client.go new file mode 100644 index 00000000000..3e21fe9f946 --- /dev/null +++ b/resource-manager/network/2024-01-01/ipgroups/client.go @@ -0,0 +1,26 @@ +package ipgroups + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPGroupsClient struct { + Client *resourcemanager.Client +} + +func NewIPGroupsClientWithBaseURI(sdkApi sdkEnv.Api) (*IPGroupsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "ipgroups", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating IPGroupsClient: %+v", err) + } + + return &IPGroupsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/ipgroups/constants.go b/resource-manager/network/2024-01-01/ipgroups/constants.go new file mode 100644 index 00000000000..a50092f263a --- /dev/null +++ b/resource-manager/network/2024-01-01/ipgroups/constants.go @@ -0,0 +1,57 @@ +package ipgroups + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/ipgroups/id_ipgroup.go b/resource-manager/network/2024-01-01/ipgroups/id_ipgroup.go new file mode 100644 index 00000000000..7b564788b08 --- /dev/null +++ b/resource-manager/network/2024-01-01/ipgroups/id_ipgroup.go @@ -0,0 +1,130 @@ +package ipgroups + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&IPGroupId{}) +} + +var _ resourceids.ResourceId = &IPGroupId{} + +// IPGroupId is a struct representing the Resource ID for a I P Group +type IPGroupId struct { + SubscriptionId string + ResourceGroupName string + IpGroupName string +} + +// NewIPGroupID returns a new IPGroupId struct +func NewIPGroupID(subscriptionId string, resourceGroupName string, ipGroupName string) IPGroupId { + return IPGroupId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + IpGroupName: ipGroupName, + } +} + +// ParseIPGroupID parses 'input' into a IPGroupId +func ParseIPGroupID(input string) (*IPGroupId, error) { + parser := resourceids.NewParserFromResourceIdType(&IPGroupId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := IPGroupId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseIPGroupIDInsensitively parses 'input' case-insensitively into a IPGroupId +// note: this method should only be used for API response data and not user input +func ParseIPGroupIDInsensitively(input string) (*IPGroupId, error) { + parser := resourceids.NewParserFromResourceIdType(&IPGroupId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := IPGroupId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *IPGroupId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.IpGroupName, ok = input.Parsed["ipGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "ipGroupName", input) + } + + return nil +} + +// ValidateIPGroupID checks that 'input' can be parsed as a I P Group ID +func ValidateIPGroupID(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 := ParseIPGroupID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted I P Group ID +func (id IPGroupId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/ipGroups/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.IpGroupName) +} + +// Segments returns a slice of Resource ID Segments which comprise this I P Group ID +func (id IPGroupId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticIpGroups", "ipGroups", "ipGroups"), + resourceids.UserSpecifiedSegment("ipGroupName", "ipGroupValue"), + } +} + +// String returns a human-readable description of this I P Group ID +func (id IPGroupId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Ip Group Name: %q", id.IpGroupName), + } + return fmt.Sprintf("I P Group (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/ipgroups/id_ipgroup_test.go b/resource-manager/network/2024-01-01/ipgroups/id_ipgroup_test.go new file mode 100644 index 00000000000..22968e22020 --- /dev/null +++ b/resource-manager/network/2024-01-01/ipgroups/id_ipgroup_test.go @@ -0,0 +1,282 @@ +package ipgroups + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &IPGroupId{} + +func TestNewIPGroupID(t *testing.T) { + id := NewIPGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ipGroupValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.IpGroupName != "ipGroupValue" { + t.Fatalf("Expected %q but got %q for Segment 'IpGroupName'", id.IpGroupName, "ipGroupValue") + } +} + +func TestFormatIPGroupID(t *testing.T) { + actual := NewIPGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "ipGroupValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ipGroups/ipGroupValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseIPGroupID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *IPGroupId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ipGroups", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ipGroups/ipGroupValue", + Expected: &IPGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + IpGroupName: "ipGroupValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ipGroups/ipGroupValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseIPGroupID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.IpGroupName != v.Expected.IpGroupName { + t.Fatalf("Expected %q but got %q for IpGroupName", v.Expected.IpGroupName, actual.IpGroupName) + } + + } +} + +func TestParseIPGroupIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *IPGroupId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ipGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/iPgRoUpS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ipGroups/ipGroupValue", + Expected: &IPGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + IpGroupName: "ipGroupValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/ipGroups/ipGroupValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/iPgRoUpS/iPgRoUpVaLuE", + Expected: &IPGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + IpGroupName: "iPgRoUpVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/iPgRoUpS/iPgRoUpVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseIPGroupIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.IpGroupName != v.Expected.IpGroupName { + t.Fatalf("Expected %q but got %q for IpGroupName", v.Expected.IpGroupName, actual.IpGroupName) + } + + } +} + +func TestSegmentsForIPGroupId(t *testing.T) { + segments := IPGroupId{}.Segments() + if len(segments) == 0 { + t.Fatalf("IPGroupId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/ipgroups/method_createorupdate.go b/resource-manager/network/2024-01-01/ipgroups/method_createorupdate.go new file mode 100644 index 00000000000..fe09b1c7bf6 --- /dev/null +++ b/resource-manager/network/2024-01-01/ipgroups/method_createorupdate.go @@ -0,0 +1,75 @@ +package ipgroups + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *IPGroup +} + +// CreateOrUpdate ... +func (c IPGroupsClient) CreateOrUpdate(ctx context.Context, id IPGroupId, input IPGroup) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c IPGroupsClient) CreateOrUpdateThenPoll(ctx context.Context, id IPGroupId, input IPGroup) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/ipgroups/method_delete.go b/resource-manager/network/2024-01-01/ipgroups/method_delete.go new file mode 100644 index 00000000000..1e1797dd8d3 --- /dev/null +++ b/resource-manager/network/2024-01-01/ipgroups/method_delete.go @@ -0,0 +1,71 @@ +package ipgroups + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c IPGroupsClient) Delete(ctx context.Context, id IPGroupId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c IPGroupsClient) DeleteThenPoll(ctx context.Context, id IPGroupId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/ipgroups/method_get.go b/resource-manager/network/2024-01-01/ipgroups/method_get.go new file mode 100644 index 00000000000..c1a0a108f8e --- /dev/null +++ b/resource-manager/network/2024-01-01/ipgroups/method_get.go @@ -0,0 +1,83 @@ +package ipgroups + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *IPGroup +} + +type GetOperationOptions struct { + Expand *string +} + +func DefaultGetOperationOptions() GetOperationOptions { + return GetOperationOptions{} +} + +func (o GetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// Get ... +func (c IPGroupsClient) Get(ctx context.Context, id IPGroupId, options GetOperationOptions) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model IPGroup + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/ipgroups/method_list.go b/resource-manager/network/2024-01-01/ipgroups/method_list.go new file mode 100644 index 00000000000..08097f9cca2 --- /dev/null +++ b/resource-manager/network/2024-01-01/ipgroups/method_list.go @@ -0,0 +1,93 @@ +package ipgroups + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]IPGroup +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []IPGroup +} + +// List ... +func (c IPGroupsClient) List(ctx context.Context, id commonids.SubscriptionId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/ipGroups", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]IPGroup `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c IPGroupsClient) ListComplete(ctx context.Context, id commonids.SubscriptionId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, IPGroupOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c IPGroupsClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate IPGroupOperationPredicate) (result ListCompleteResult, err error) { + items := make([]IPGroup, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/ipgroups/method_listbyresourcegroup.go b/resource-manager/network/2024-01-01/ipgroups/method_listbyresourcegroup.go new file mode 100644 index 00000000000..7b03ce9bb50 --- /dev/null +++ b/resource-manager/network/2024-01-01/ipgroups/method_listbyresourcegroup.go @@ -0,0 +1,93 @@ +package ipgroups + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListByResourceGroupOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]IPGroup +} + +type ListByResourceGroupCompleteResult struct { + LatestHttpResponse *http.Response + Items []IPGroup +} + +// ListByResourceGroup ... +func (c IPGroupsClient) ListByResourceGroup(ctx context.Context, id commonids.ResourceGroupId) (result ListByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/ipGroups", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]IPGroup `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListByResourceGroupComplete retrieves all the results into a single object +func (c IPGroupsClient) ListByResourceGroupComplete(ctx context.Context, id commonids.ResourceGroupId) (ListByResourceGroupCompleteResult, error) { + return c.ListByResourceGroupCompleteMatchingPredicate(ctx, id, IPGroupOperationPredicate{}) +} + +// ListByResourceGroupCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c IPGroupsClient) ListByResourceGroupCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate IPGroupOperationPredicate) (result ListByResourceGroupCompleteResult, err error) { + items := make([]IPGroup, 0) + + resp, err := c.ListByResourceGroup(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListByResourceGroupCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/ipgroups/method_updategroups.go b/resource-manager/network/2024-01-01/ipgroups/method_updategroups.go new file mode 100644 index 00000000000..67a51b18e05 --- /dev/null +++ b/resource-manager/network/2024-01-01/ipgroups/method_updategroups.go @@ -0,0 +1,58 @@ +package ipgroups + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateGroupsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *IPGroup +} + +// UpdateGroups ... +func (c IPGroupsClient) UpdateGroups(ctx context.Context, id IPGroupId, input TagsObject) (result UpdateGroupsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model IPGroup + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/ipgroups/model_ipgroup.go b/resource-manager/network/2024-01-01/ipgroups/model_ipgroup.go new file mode 100644 index 00000000000..7f586ce2b06 --- /dev/null +++ b/resource-manager/network/2024-01-01/ipgroups/model_ipgroup.go @@ -0,0 +1,14 @@ +package ipgroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/ipgroups/model_ipgrouppropertiesformat.go b/resource-manager/network/2024-01-01/ipgroups/model_ipgrouppropertiesformat.go new file mode 100644 index 00000000000..866075a1038 --- /dev/null +++ b/resource-manager/network/2024-01-01/ipgroups/model_ipgrouppropertiesformat.go @@ -0,0 +1,11 @@ +package ipgroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPGroupPropertiesFormat struct { + FirewallPolicies *[]SubResource `json:"firewallPolicies,omitempty"` + Firewalls *[]SubResource `json:"firewalls,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/ipgroups/model_subresource.go b/resource-manager/network/2024-01-01/ipgroups/model_subresource.go new file mode 100644 index 00000000000..5e6c0552f0c --- /dev/null +++ b/resource-manager/network/2024-01-01/ipgroups/model_subresource.go @@ -0,0 +1,8 @@ +package ipgroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/ipgroups/model_tagsobject.go b/resource-manager/network/2024-01-01/ipgroups/model_tagsobject.go new file mode 100644 index 00000000000..df59e42aff4 --- /dev/null +++ b/resource-manager/network/2024-01-01/ipgroups/model_tagsobject.go @@ -0,0 +1,8 @@ +package ipgroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/ipgroups/predicates.go b/resource-manager/network/2024-01-01/ipgroups/predicates.go new file mode 100644 index 00000000000..a64e98c2290 --- /dev/null +++ b/resource-manager/network/2024-01-01/ipgroups/predicates.go @@ -0,0 +1,37 @@ +package ipgroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPGroupOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p IPGroupOperationPredicate) Matches(input IPGroup) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/ipgroups/version.go b/resource-manager/network/2024-01-01/ipgroups/version.go new file mode 100644 index 00000000000..202e7168e41 --- /dev/null +++ b/resource-manager/network/2024-01-01/ipgroups/version.go @@ -0,0 +1,12 @@ +package ipgroups + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/ipgroups/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/README.md b/resource-manager/network/2024-01-01/loadbalancers/README.md new file mode 100644 index 00000000000..e50041db0cd --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/README.md @@ -0,0 +1,449 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/loadbalancers` Documentation + +The `loadbalancers` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/loadbalancers" +``` + + +### Client Initialization + +```go +client := loadbalancers.NewLoadBalancersClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `LoadBalancersClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := loadbalancers.NewProviderLoadBalancerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue") + +payload := loadbalancers.LoadBalancer{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `LoadBalancersClient.Delete` + +```go +ctx := context.TODO() +id := loadbalancers.NewProviderLoadBalancerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `LoadBalancersClient.Get` + +```go +ctx := context.TODO() +id := loadbalancers.NewProviderLoadBalancerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue") + +read, err := client.Get(ctx, id, loadbalancers.DefaultGetOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `LoadBalancersClient.InboundNatRulesCreateOrUpdate` + +```go +ctx := context.TODO() +id := loadbalancers.NewInboundNatRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue", "inboundNatRuleValue") + +payload := loadbalancers.InboundNatRule{ + // ... +} + + +if err := client.InboundNatRulesCreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `LoadBalancersClient.InboundNatRulesDelete` + +```go +ctx := context.TODO() +id := loadbalancers.NewInboundNatRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue", "inboundNatRuleValue") + +if err := client.InboundNatRulesDeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `LoadBalancersClient.InboundNatRulesGet` + +```go +ctx := context.TODO() +id := loadbalancers.NewInboundNatRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue", "inboundNatRuleValue") + +read, err := client.InboundNatRulesGet(ctx, id, loadbalancers.DefaultInboundNatRulesGetOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `LoadBalancersClient.InboundNatRulesList` + +```go +ctx := context.TODO() +id := loadbalancers.NewProviderLoadBalancerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue") + +// alternatively `client.InboundNatRulesList(ctx, id)` can be used to do batched pagination +items, err := client.InboundNatRulesListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `LoadBalancersClient.List` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `LoadBalancersClient.ListAll` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.ListAll(ctx, id)` can be used to do batched pagination +items, err := client.ListAllComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `LoadBalancersClient.ListInboundNatRulePortMappings` + +```go +ctx := context.TODO() +id := loadbalancers.NewBackendAddressPoolID("12345678-1234-9876-4563-123456789012", "resourceGroupValue", "loadBalancerValue", "backendAddressPoolValue") + +payload := loadbalancers.QueryInboundNatRulePortMappingRequest{ + // ... +} + + +if err := client.ListInboundNatRulePortMappingsThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `LoadBalancersClient.LoadBalancerBackendAddressPoolsCreateOrUpdate` + +```go +ctx := context.TODO() +id := loadbalancers.NewLoadBalancerBackendAddressPoolID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue", "backendAddressPoolValue") + +payload := loadbalancers.BackendAddressPool{ + // ... +} + + +if err := client.LoadBalancerBackendAddressPoolsCreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `LoadBalancersClient.LoadBalancerBackendAddressPoolsDelete` + +```go +ctx := context.TODO() +id := loadbalancers.NewLoadBalancerBackendAddressPoolID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue", "backendAddressPoolValue") + +if err := client.LoadBalancerBackendAddressPoolsDeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `LoadBalancersClient.LoadBalancerBackendAddressPoolsGet` + +```go +ctx := context.TODO() +id := loadbalancers.NewLoadBalancerBackendAddressPoolID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue", "backendAddressPoolValue") + +read, err := client.LoadBalancerBackendAddressPoolsGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `LoadBalancersClient.LoadBalancerBackendAddressPoolsList` + +```go +ctx := context.TODO() +id := loadbalancers.NewProviderLoadBalancerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue") + +// alternatively `client.LoadBalancerBackendAddressPoolsList(ctx, id)` can be used to do batched pagination +items, err := client.LoadBalancerBackendAddressPoolsListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `LoadBalancersClient.LoadBalancerFrontendIPConfigurationsGet` + +```go +ctx := context.TODO() +id := loadbalancers.NewFrontendIPConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue", "frontendIPConfigurationValue") + +read, err := client.LoadBalancerFrontendIPConfigurationsGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `LoadBalancersClient.LoadBalancerFrontendIPConfigurationsList` + +```go +ctx := context.TODO() +id := loadbalancers.NewProviderLoadBalancerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue") + +// alternatively `client.LoadBalancerFrontendIPConfigurationsList(ctx, id)` can be used to do batched pagination +items, err := client.LoadBalancerFrontendIPConfigurationsListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `LoadBalancersClient.LoadBalancerLoadBalancingRulesGet` + +```go +ctx := context.TODO() +id := loadbalancers.NewLoadBalancingRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue", "loadBalancingRuleValue") + +read, err := client.LoadBalancerLoadBalancingRulesGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `LoadBalancersClient.LoadBalancerLoadBalancingRulesList` + +```go +ctx := context.TODO() +id := loadbalancers.NewProviderLoadBalancerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue") + +// alternatively `client.LoadBalancerLoadBalancingRulesList(ctx, id)` can be used to do batched pagination +items, err := client.LoadBalancerLoadBalancingRulesListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `LoadBalancersClient.LoadBalancerNetworkInterfacesList` + +```go +ctx := context.TODO() +id := loadbalancers.NewProviderLoadBalancerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue") + +// alternatively `client.LoadBalancerNetworkInterfacesList(ctx, id)` can be used to do batched pagination +items, err := client.LoadBalancerNetworkInterfacesListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `LoadBalancersClient.LoadBalancerOutboundRulesGet` + +```go +ctx := context.TODO() +id := loadbalancers.NewOutboundRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue", "outboundRuleValue") + +read, err := client.LoadBalancerOutboundRulesGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `LoadBalancersClient.LoadBalancerOutboundRulesList` + +```go +ctx := context.TODO() +id := loadbalancers.NewProviderLoadBalancerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue") + +// alternatively `client.LoadBalancerOutboundRulesList(ctx, id)` can be used to do batched pagination +items, err := client.LoadBalancerOutboundRulesListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `LoadBalancersClient.LoadBalancerProbesGet` + +```go +ctx := context.TODO() +id := loadbalancers.NewProbeID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue", "probeValue") + +read, err := client.LoadBalancerProbesGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `LoadBalancersClient.LoadBalancerProbesList` + +```go +ctx := context.TODO() +id := loadbalancers.NewProviderLoadBalancerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue") + +// alternatively `client.LoadBalancerProbesList(ctx, id)` can be used to do batched pagination +items, err := client.LoadBalancerProbesListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `LoadBalancersClient.MigrateToIPBased` + +```go +ctx := context.TODO() +id := loadbalancers.NewLoadBalancerID("12345678-1234-9876-4563-123456789012", "resourceGroupValue", "loadBalancerValue") + +payload := loadbalancers.MigrateLoadBalancerToIPBasedRequest{ + // ... +} + + +read, err := client.MigrateToIPBased(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `LoadBalancersClient.SwapPublicIPAddresses` + +```go +ctx := context.TODO() +id := loadbalancers.NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue") + +payload := loadbalancers.LoadBalancerVipSwapRequest{ + // ... +} + + +if err := client.SwapPublicIPAddressesThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `LoadBalancersClient.UpdateTags` + +```go +ctx := context.TODO() +id := loadbalancers.NewProviderLoadBalancerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue") + +payload := loadbalancers.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/loadbalancers/client.go b/resource-manager/network/2024-01-01/loadbalancers/client.go new file mode 100644 index 00000000000..3d84973a709 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/client.go @@ -0,0 +1,26 @@ +package loadbalancers + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancersClient struct { + Client *resourcemanager.Client +} + +func NewLoadBalancersClientWithBaseURI(sdkApi sdkEnv.Api) (*LoadBalancersClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "loadbalancers", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating LoadBalancersClient: %+v", err) + } + + return &LoadBalancersClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/constants.go b/resource-manager/network/2024-01-01/loadbalancers/constants.go new file mode 100644 index 00000000000..de5c92d87bb --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/constants.go @@ -0,0 +1,1456 @@ +package loadbalancers + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettingsProtectionMode string + +const ( + DdosSettingsProtectionModeDisabled DdosSettingsProtectionMode = "Disabled" + DdosSettingsProtectionModeEnabled DdosSettingsProtectionMode = "Enabled" + DdosSettingsProtectionModeVirtualNetworkInherited DdosSettingsProtectionMode = "VirtualNetworkInherited" +) + +func PossibleValuesForDdosSettingsProtectionMode() []string { + return []string{ + string(DdosSettingsProtectionModeDisabled), + string(DdosSettingsProtectionModeEnabled), + string(DdosSettingsProtectionModeVirtualNetworkInherited), + } +} + +func (s *DdosSettingsProtectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDdosSettingsProtectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDdosSettingsProtectionMode(input string) (*DdosSettingsProtectionMode, error) { + vals := map[string]DdosSettingsProtectionMode{ + "disabled": DdosSettingsProtectionModeDisabled, + "enabled": DdosSettingsProtectionModeEnabled, + "virtualnetworkinherited": DdosSettingsProtectionModeVirtualNetworkInherited, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DdosSettingsProtectionMode(input) + return &out, nil +} + +type DeleteOptions string + +const ( + DeleteOptionsDelete DeleteOptions = "Delete" + DeleteOptionsDetach DeleteOptions = "Detach" +) + +func PossibleValuesForDeleteOptions() []string { + return []string{ + string(DeleteOptionsDelete), + string(DeleteOptionsDetach), + } +} + +func (s *DeleteOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteOptions(input string) (*DeleteOptions, error) { + vals := map[string]DeleteOptions{ + "delete": DeleteOptionsDelete, + "detach": DeleteOptionsDetach, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteOptions(input) + return &out, nil +} + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelInterfaceType string + +const ( + GatewayLoadBalancerTunnelInterfaceTypeExternal GatewayLoadBalancerTunnelInterfaceType = "External" + GatewayLoadBalancerTunnelInterfaceTypeInternal GatewayLoadBalancerTunnelInterfaceType = "Internal" + GatewayLoadBalancerTunnelInterfaceTypeNone GatewayLoadBalancerTunnelInterfaceType = "None" +) + +func PossibleValuesForGatewayLoadBalancerTunnelInterfaceType() []string { + return []string{ + string(GatewayLoadBalancerTunnelInterfaceTypeExternal), + string(GatewayLoadBalancerTunnelInterfaceTypeInternal), + string(GatewayLoadBalancerTunnelInterfaceTypeNone), + } +} + +func (s *GatewayLoadBalancerTunnelInterfaceType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelInterfaceType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelInterfaceType(input string) (*GatewayLoadBalancerTunnelInterfaceType, error) { + vals := map[string]GatewayLoadBalancerTunnelInterfaceType{ + "external": GatewayLoadBalancerTunnelInterfaceTypeExternal, + "internal": GatewayLoadBalancerTunnelInterfaceTypeInternal, + "none": GatewayLoadBalancerTunnelInterfaceTypeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelInterfaceType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelProtocol string + +const ( + GatewayLoadBalancerTunnelProtocolNative GatewayLoadBalancerTunnelProtocol = "Native" + GatewayLoadBalancerTunnelProtocolNone GatewayLoadBalancerTunnelProtocol = "None" + GatewayLoadBalancerTunnelProtocolVXLAN GatewayLoadBalancerTunnelProtocol = "VXLAN" +) + +func PossibleValuesForGatewayLoadBalancerTunnelProtocol() []string { + return []string{ + string(GatewayLoadBalancerTunnelProtocolNative), + string(GatewayLoadBalancerTunnelProtocolNone), + string(GatewayLoadBalancerTunnelProtocolVXLAN), + } +} + +func (s *GatewayLoadBalancerTunnelProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelProtocol(input string) (*GatewayLoadBalancerTunnelProtocol, error) { + vals := map[string]GatewayLoadBalancerTunnelProtocol{ + "native": GatewayLoadBalancerTunnelProtocolNative, + "none": GatewayLoadBalancerTunnelProtocolNone, + "vxlan": GatewayLoadBalancerTunnelProtocolVXLAN, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelProtocol(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} + +type LoadBalancerBackendAddressAdminState string + +const ( + LoadBalancerBackendAddressAdminStateDown LoadBalancerBackendAddressAdminState = "Down" + LoadBalancerBackendAddressAdminStateNone LoadBalancerBackendAddressAdminState = "None" + LoadBalancerBackendAddressAdminStateUp LoadBalancerBackendAddressAdminState = "Up" +) + +func PossibleValuesForLoadBalancerBackendAddressAdminState() []string { + return []string{ + string(LoadBalancerBackendAddressAdminStateDown), + string(LoadBalancerBackendAddressAdminStateNone), + string(LoadBalancerBackendAddressAdminStateUp), + } +} + +func (s *LoadBalancerBackendAddressAdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerBackendAddressAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerBackendAddressAdminState(input string) (*LoadBalancerBackendAddressAdminState, error) { + vals := map[string]LoadBalancerBackendAddressAdminState{ + "down": LoadBalancerBackendAddressAdminStateDown, + "none": LoadBalancerBackendAddressAdminStateNone, + "up": LoadBalancerBackendAddressAdminStateUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerBackendAddressAdminState(input) + return &out, nil +} + +type LoadBalancerOutboundRuleProtocol string + +const ( + LoadBalancerOutboundRuleProtocolAll LoadBalancerOutboundRuleProtocol = "All" + LoadBalancerOutboundRuleProtocolTcp LoadBalancerOutboundRuleProtocol = "Tcp" + LoadBalancerOutboundRuleProtocolUdp LoadBalancerOutboundRuleProtocol = "Udp" +) + +func PossibleValuesForLoadBalancerOutboundRuleProtocol() []string { + return []string{ + string(LoadBalancerOutboundRuleProtocolAll), + string(LoadBalancerOutboundRuleProtocolTcp), + string(LoadBalancerOutboundRuleProtocolUdp), + } +} + +func (s *LoadBalancerOutboundRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerOutboundRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerOutboundRuleProtocol(input string) (*LoadBalancerOutboundRuleProtocol, error) { + vals := map[string]LoadBalancerOutboundRuleProtocol{ + "all": LoadBalancerOutboundRuleProtocolAll, + "tcp": LoadBalancerOutboundRuleProtocolTcp, + "udp": LoadBalancerOutboundRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerOutboundRuleProtocol(input) + return &out, nil +} + +type LoadBalancerSkuName string + +const ( + LoadBalancerSkuNameBasic LoadBalancerSkuName = "Basic" + LoadBalancerSkuNameGateway LoadBalancerSkuName = "Gateway" + LoadBalancerSkuNameStandard LoadBalancerSkuName = "Standard" +) + +func PossibleValuesForLoadBalancerSkuName() []string { + return []string{ + string(LoadBalancerSkuNameBasic), + string(LoadBalancerSkuNameGateway), + string(LoadBalancerSkuNameStandard), + } +} + +func (s *LoadBalancerSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerSkuName(input string) (*LoadBalancerSkuName, error) { + vals := map[string]LoadBalancerSkuName{ + "basic": LoadBalancerSkuNameBasic, + "gateway": LoadBalancerSkuNameGateway, + "standard": LoadBalancerSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerSkuName(input) + return &out, nil +} + +type LoadBalancerSkuTier string + +const ( + LoadBalancerSkuTierGlobal LoadBalancerSkuTier = "Global" + LoadBalancerSkuTierRegional LoadBalancerSkuTier = "Regional" +) + +func PossibleValuesForLoadBalancerSkuTier() []string { + return []string{ + string(LoadBalancerSkuTierGlobal), + string(LoadBalancerSkuTierRegional), + } +} + +func (s *LoadBalancerSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerSkuTier(input string) (*LoadBalancerSkuTier, error) { + vals := map[string]LoadBalancerSkuTier{ + "global": LoadBalancerSkuTierGlobal, + "regional": LoadBalancerSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerSkuTier(input) + return &out, nil +} + +type LoadDistribution string + +const ( + LoadDistributionDefault LoadDistribution = "Default" + LoadDistributionSourceIP LoadDistribution = "SourceIP" + LoadDistributionSourceIPProtocol LoadDistribution = "SourceIPProtocol" +) + +func PossibleValuesForLoadDistribution() []string { + return []string{ + string(LoadDistributionDefault), + string(LoadDistributionSourceIP), + string(LoadDistributionSourceIPProtocol), + } +} + +func (s *LoadDistribution) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadDistribution(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadDistribution(input string) (*LoadDistribution, error) { + vals := map[string]LoadDistribution{ + "default": LoadDistributionDefault, + "sourceip": LoadDistributionSourceIP, + "sourceipprotocol": LoadDistributionSourceIPProtocol, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadDistribution(input) + return &out, nil +} + +type NatGatewaySkuName string + +const ( + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +func PossibleValuesForNatGatewaySkuName() []string { + return []string{ + string(NatGatewaySkuNameStandard), + } +} + +func (s *NatGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNatGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNatGatewaySkuName(input string) (*NatGatewaySkuName, error) { + vals := map[string]NatGatewaySkuName{ + "standard": NatGatewaySkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NatGatewaySkuName(input) + return &out, nil +} + +type NetworkInterfaceAuxiliaryMode string + +const ( + NetworkInterfaceAuxiliaryModeAcceleratedConnections NetworkInterfaceAuxiliaryMode = "AcceleratedConnections" + NetworkInterfaceAuxiliaryModeFloating NetworkInterfaceAuxiliaryMode = "Floating" + NetworkInterfaceAuxiliaryModeMaxConnections NetworkInterfaceAuxiliaryMode = "MaxConnections" + NetworkInterfaceAuxiliaryModeNone NetworkInterfaceAuxiliaryMode = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliaryMode() []string { + return []string{ + string(NetworkInterfaceAuxiliaryModeAcceleratedConnections), + string(NetworkInterfaceAuxiliaryModeFloating), + string(NetworkInterfaceAuxiliaryModeMaxConnections), + string(NetworkInterfaceAuxiliaryModeNone), + } +} + +func (s *NetworkInterfaceAuxiliaryMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliaryMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliaryMode(input string) (*NetworkInterfaceAuxiliaryMode, error) { + vals := map[string]NetworkInterfaceAuxiliaryMode{ + "acceleratedconnections": NetworkInterfaceAuxiliaryModeAcceleratedConnections, + "floating": NetworkInterfaceAuxiliaryModeFloating, + "maxconnections": NetworkInterfaceAuxiliaryModeMaxConnections, + "none": NetworkInterfaceAuxiliaryModeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliaryMode(input) + return &out, nil +} + +type NetworkInterfaceAuxiliarySku string + +const ( + NetworkInterfaceAuxiliarySkuAEight NetworkInterfaceAuxiliarySku = "A8" + NetworkInterfaceAuxiliarySkuAFour NetworkInterfaceAuxiliarySku = "A4" + NetworkInterfaceAuxiliarySkuAOne NetworkInterfaceAuxiliarySku = "A1" + NetworkInterfaceAuxiliarySkuATwo NetworkInterfaceAuxiliarySku = "A2" + NetworkInterfaceAuxiliarySkuNone NetworkInterfaceAuxiliarySku = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliarySku() []string { + return []string{ + string(NetworkInterfaceAuxiliarySkuAEight), + string(NetworkInterfaceAuxiliarySkuAFour), + string(NetworkInterfaceAuxiliarySkuAOne), + string(NetworkInterfaceAuxiliarySkuATwo), + string(NetworkInterfaceAuxiliarySkuNone), + } +} + +func (s *NetworkInterfaceAuxiliarySku) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliarySku(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliarySku(input string) (*NetworkInterfaceAuxiliarySku, error) { + vals := map[string]NetworkInterfaceAuxiliarySku{ + "a8": NetworkInterfaceAuxiliarySkuAEight, + "a4": NetworkInterfaceAuxiliarySkuAFour, + "a1": NetworkInterfaceAuxiliarySkuAOne, + "a2": NetworkInterfaceAuxiliarySkuATwo, + "none": NetworkInterfaceAuxiliarySkuNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliarySku(input) + return &out, nil +} + +type NetworkInterfaceMigrationPhase string + +const ( + NetworkInterfaceMigrationPhaseAbort NetworkInterfaceMigrationPhase = "Abort" + NetworkInterfaceMigrationPhaseCommit NetworkInterfaceMigrationPhase = "Commit" + NetworkInterfaceMigrationPhaseCommitted NetworkInterfaceMigrationPhase = "Committed" + NetworkInterfaceMigrationPhaseNone NetworkInterfaceMigrationPhase = "None" + NetworkInterfaceMigrationPhasePrepare NetworkInterfaceMigrationPhase = "Prepare" +) + +func PossibleValuesForNetworkInterfaceMigrationPhase() []string { + return []string{ + string(NetworkInterfaceMigrationPhaseAbort), + string(NetworkInterfaceMigrationPhaseCommit), + string(NetworkInterfaceMigrationPhaseCommitted), + string(NetworkInterfaceMigrationPhaseNone), + string(NetworkInterfaceMigrationPhasePrepare), + } +} + +func (s *NetworkInterfaceMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceMigrationPhase(input string) (*NetworkInterfaceMigrationPhase, error) { + vals := map[string]NetworkInterfaceMigrationPhase{ + "abort": NetworkInterfaceMigrationPhaseAbort, + "commit": NetworkInterfaceMigrationPhaseCommit, + "committed": NetworkInterfaceMigrationPhaseCommitted, + "none": NetworkInterfaceMigrationPhaseNone, + "prepare": NetworkInterfaceMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceMigrationPhase(input) + return &out, nil +} + +type NetworkInterfaceNicType string + +const ( + NetworkInterfaceNicTypeElastic NetworkInterfaceNicType = "Elastic" + NetworkInterfaceNicTypeStandard NetworkInterfaceNicType = "Standard" +) + +func PossibleValuesForNetworkInterfaceNicType() []string { + return []string{ + string(NetworkInterfaceNicTypeElastic), + string(NetworkInterfaceNicTypeStandard), + } +} + +func (s *NetworkInterfaceNicType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceNicType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceNicType(input string) (*NetworkInterfaceNicType, error) { + vals := map[string]NetworkInterfaceNicType{ + "elastic": NetworkInterfaceNicTypeElastic, + "standard": NetworkInterfaceNicTypeStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceNicType(input) + return &out, nil +} + +type ProbeNoHealthyBackendsBehavior string + +const ( + ProbeNoHealthyBackendsBehaviorAllProbedDown ProbeNoHealthyBackendsBehavior = "AllProbedDown" + ProbeNoHealthyBackendsBehaviorAllProbedUp ProbeNoHealthyBackendsBehavior = "AllProbedUp" +) + +func PossibleValuesForProbeNoHealthyBackendsBehavior() []string { + return []string{ + string(ProbeNoHealthyBackendsBehaviorAllProbedDown), + string(ProbeNoHealthyBackendsBehaviorAllProbedUp), + } +} + +func (s *ProbeNoHealthyBackendsBehavior) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProbeNoHealthyBackendsBehavior(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProbeNoHealthyBackendsBehavior(input string) (*ProbeNoHealthyBackendsBehavior, error) { + vals := map[string]ProbeNoHealthyBackendsBehavior{ + "allprobeddown": ProbeNoHealthyBackendsBehaviorAllProbedDown, + "allprobedup": ProbeNoHealthyBackendsBehaviorAllProbedUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProbeNoHealthyBackendsBehavior(input) + return &out, nil +} + +type ProbeProtocol string + +const ( + ProbeProtocolHTTP ProbeProtocol = "Http" + ProbeProtocolHTTPS ProbeProtocol = "Https" + ProbeProtocolTcp ProbeProtocol = "Tcp" +) + +func PossibleValuesForProbeProtocol() []string { + return []string{ + string(ProbeProtocolHTTP), + string(ProbeProtocolHTTPS), + string(ProbeProtocolTcp), + } +} + +func (s *ProbeProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProbeProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProbeProtocol(input string) (*ProbeProtocol, error) { + vals := map[string]ProbeProtocol{ + "http": ProbeProtocolHTTP, + "https": ProbeProtocolHTTPS, + "tcp": ProbeProtocolTcp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProbeProtocol(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type PublicIPAddressDnsSettingsDomainNameLabelScope string + +const ( + PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "NoReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "ResourceGroupReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "SubscriptionReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "TenantReuse" +) + +func PossibleValuesForPublicIPAddressDnsSettingsDomainNameLabelScope() []string { + return []string{ + string(PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse), + } +} + +func (s *PublicIPAddressDnsSettingsDomainNameLabelScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressDnsSettingsDomainNameLabelScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressDnsSettingsDomainNameLabelScope(input string) (*PublicIPAddressDnsSettingsDomainNameLabelScope, error) { + vals := map[string]PublicIPAddressDnsSettingsDomainNameLabelScope{ + "noreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse, + "resourcegroupreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse, + "subscriptionreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse, + "tenantreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressDnsSettingsDomainNameLabelScope(input) + return &out, nil +} + +type PublicIPAddressMigrationPhase string + +const ( + PublicIPAddressMigrationPhaseAbort PublicIPAddressMigrationPhase = "Abort" + PublicIPAddressMigrationPhaseCommit PublicIPAddressMigrationPhase = "Commit" + PublicIPAddressMigrationPhaseCommitted PublicIPAddressMigrationPhase = "Committed" + PublicIPAddressMigrationPhaseNone PublicIPAddressMigrationPhase = "None" + PublicIPAddressMigrationPhasePrepare PublicIPAddressMigrationPhase = "Prepare" +) + +func PossibleValuesForPublicIPAddressMigrationPhase() []string { + return []string{ + string(PublicIPAddressMigrationPhaseAbort), + string(PublicIPAddressMigrationPhaseCommit), + string(PublicIPAddressMigrationPhaseCommitted), + string(PublicIPAddressMigrationPhaseNone), + string(PublicIPAddressMigrationPhasePrepare), + } +} + +func (s *PublicIPAddressMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressMigrationPhase(input string) (*PublicIPAddressMigrationPhase, error) { + vals := map[string]PublicIPAddressMigrationPhase{ + "abort": PublicIPAddressMigrationPhaseAbort, + "commit": PublicIPAddressMigrationPhaseCommit, + "committed": PublicIPAddressMigrationPhaseCommitted, + "none": PublicIPAddressMigrationPhaseNone, + "prepare": PublicIPAddressMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressMigrationPhase(input) + return &out, nil +} + +type PublicIPAddressSkuName string + +const ( + PublicIPAddressSkuNameBasic PublicIPAddressSkuName = "Basic" + PublicIPAddressSkuNameStandard PublicIPAddressSkuName = "Standard" +) + +func PossibleValuesForPublicIPAddressSkuName() []string { + return []string{ + string(PublicIPAddressSkuNameBasic), + string(PublicIPAddressSkuNameStandard), + } +} + +func (s *PublicIPAddressSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuName(input string) (*PublicIPAddressSkuName, error) { + vals := map[string]PublicIPAddressSkuName{ + "basic": PublicIPAddressSkuNameBasic, + "standard": PublicIPAddressSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuName(input) + return &out, nil +} + +type PublicIPAddressSkuTier string + +const ( + PublicIPAddressSkuTierGlobal PublicIPAddressSkuTier = "Global" + PublicIPAddressSkuTierRegional PublicIPAddressSkuTier = "Regional" +) + +func PossibleValuesForPublicIPAddressSkuTier() []string { + return []string{ + string(PublicIPAddressSkuTierGlobal), + string(PublicIPAddressSkuTierRegional), + } +} + +func (s *PublicIPAddressSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuTier(input string) (*PublicIPAddressSkuTier, error) { + vals := map[string]PublicIPAddressSkuTier{ + "global": PublicIPAddressSkuTierGlobal, + "regional": PublicIPAddressSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuTier(input) + return &out, nil +} + +type RouteNextHopType string + +const ( + RouteNextHopTypeInternet RouteNextHopType = "Internet" + RouteNextHopTypeNone RouteNextHopType = "None" + RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" + RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" + RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" +) + +func PossibleValuesForRouteNextHopType() []string { + return []string{ + string(RouteNextHopTypeInternet), + string(RouteNextHopTypeNone), + string(RouteNextHopTypeVirtualAppliance), + string(RouteNextHopTypeVirtualNetworkGateway), + string(RouteNextHopTypeVnetLocal), + } +} + +func (s *RouteNextHopType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteNextHopType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteNextHopType(input string) (*RouteNextHopType, error) { + vals := map[string]RouteNextHopType{ + "internet": RouteNextHopTypeInternet, + "none": RouteNextHopTypeNone, + "virtualappliance": RouteNextHopTypeVirtualAppliance, + "virtualnetworkgateway": RouteNextHopTypeVirtualNetworkGateway, + "vnetlocal": RouteNextHopTypeVnetLocal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteNextHopType(input) + return &out, nil +} + +type SecurityRuleAccess string + +const ( + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +func PossibleValuesForSecurityRuleAccess() []string { + return []string{ + string(SecurityRuleAccessAllow), + string(SecurityRuleAccessDeny), + } +} + +func (s *SecurityRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleAccess(input string) (*SecurityRuleAccess, error) { + vals := map[string]SecurityRuleAccess{ + "allow": SecurityRuleAccessAllow, + "deny": SecurityRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleAccess(input) + return &out, nil +} + +type SecurityRuleDirection string + +const ( + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityRuleDirection() []string { + return []string{ + string(SecurityRuleDirectionInbound), + string(SecurityRuleDirectionOutbound), + } +} + +func (s *SecurityRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleDirection(input string) (*SecurityRuleDirection, error) { + vals := map[string]SecurityRuleDirection{ + "inbound": SecurityRuleDirectionInbound, + "outbound": SecurityRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleDirection(input) + return &out, nil +} + +type SecurityRuleProtocol string + +const ( + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + SecurityRuleProtocolAny SecurityRuleProtocol = "*" + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + SecurityRuleProtocolTcp SecurityRuleProtocol = "Tcp" + SecurityRuleProtocolUdp SecurityRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityRuleProtocol() []string { + return []string{ + string(SecurityRuleProtocolAh), + string(SecurityRuleProtocolAny), + string(SecurityRuleProtocolEsp), + string(SecurityRuleProtocolIcmp), + string(SecurityRuleProtocolTcp), + string(SecurityRuleProtocolUdp), + } +} + +func (s *SecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleProtocol(input string) (*SecurityRuleProtocol, error) { + vals := map[string]SecurityRuleProtocol{ + "ah": SecurityRuleProtocolAh, + "*": SecurityRuleProtocolAny, + "esp": SecurityRuleProtocolEsp, + "icmp": SecurityRuleProtocolIcmp, + "tcp": SecurityRuleProtocolTcp, + "udp": SecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleProtocol(input) + return &out, nil +} + +type SharingScope string + +const ( + SharingScopeDelegatedServices SharingScope = "DelegatedServices" + SharingScopeTenant SharingScope = "Tenant" +) + +func PossibleValuesForSharingScope() []string { + return []string{ + string(SharingScopeDelegatedServices), + string(SharingScopeTenant), + } +} + +func (s *SharingScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSharingScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSharingScope(input string) (*SharingScope, error) { + vals := map[string]SharingScope{ + "delegatedservices": SharingScopeDelegatedServices, + "tenant": SharingScopeTenant, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SharingScope(input) + return &out, nil +} + +type SyncMode string + +const ( + SyncModeAutomatic SyncMode = "Automatic" + SyncModeManual SyncMode = "Manual" +) + +func PossibleValuesForSyncMode() []string { + return []string{ + string(SyncModeAutomatic), + string(SyncModeManual), + } +} + +func (s *SyncMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSyncMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSyncMode(input string) (*SyncMode, error) { + vals := map[string]SyncMode{ + "automatic": SyncModeAutomatic, + "manual": SyncModeManual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SyncMode(input) + return &out, nil +} + +type TransportProtocol string + +const ( + TransportProtocolAll TransportProtocol = "All" + TransportProtocolTcp TransportProtocol = "Tcp" + TransportProtocolUdp TransportProtocol = "Udp" +) + +func PossibleValuesForTransportProtocol() []string { + return []string{ + string(TransportProtocolAll), + string(TransportProtocolTcp), + string(TransportProtocolUdp), + } +} + +func (s *TransportProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseTransportProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseTransportProtocol(input string) (*TransportProtocol, error) { + vals := map[string]TransportProtocol{ + "all": TransportProtocolAll, + "tcp": TransportProtocolTcp, + "udp": TransportProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := TransportProtocol(input) + return &out, nil +} + +type VirtualNetworkPrivateEndpointNetworkPolicies string + +const ( + VirtualNetworkPrivateEndpointNetworkPoliciesDisabled VirtualNetworkPrivateEndpointNetworkPolicies = "Disabled" + VirtualNetworkPrivateEndpointNetworkPoliciesEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "Enabled" + VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "NetworkSecurityGroupEnabled" + VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "RouteTableEnabled" +) + +func PossibleValuesForVirtualNetworkPrivateEndpointNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateEndpointNetworkPoliciesDisabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled), + } +} + +func (s *VirtualNetworkPrivateEndpointNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateEndpointNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateEndpointNetworkPolicies(input string) (*VirtualNetworkPrivateEndpointNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateEndpointNetworkPolicies{ + "disabled": VirtualNetworkPrivateEndpointNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateEndpointNetworkPoliciesEnabled, + "networksecuritygroupenabled": VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled, + "routetableenabled": VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateEndpointNetworkPolicies(input) + return &out, nil +} + +type VirtualNetworkPrivateLinkServiceNetworkPolicies string + +const ( + VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Disabled" + VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Enabled" +) + +func PossibleValuesForVirtualNetworkPrivateLinkServiceNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled), + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled), + } +} + +func (s *VirtualNetworkPrivateLinkServiceNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateLinkServiceNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateLinkServiceNetworkPolicies(input string) (*VirtualNetworkPrivateLinkServiceNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateLinkServiceNetworkPolicies{ + "disabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateLinkServiceNetworkPolicies(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/id_backendaddresspool.go b/resource-manager/network/2024-01-01/loadbalancers/id_backendaddresspool.go new file mode 100644 index 00000000000..57be52cf337 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/id_backendaddresspool.go @@ -0,0 +1,139 @@ +package loadbalancers + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&BackendAddressPoolId{}) +} + +var _ resourceids.ResourceId = &BackendAddressPoolId{} + +// BackendAddressPoolId is a struct representing the Resource ID for a Backend Address Pool +type BackendAddressPoolId struct { + SubscriptionId string + ResourceGroupName string + LoadBalancerName string + BackendAddressPoolName string +} + +// NewBackendAddressPoolID returns a new BackendAddressPoolId struct +func NewBackendAddressPoolID(subscriptionId string, resourceGroupName string, loadBalancerName string, backendAddressPoolName string) BackendAddressPoolId { + return BackendAddressPoolId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + LoadBalancerName: loadBalancerName, + BackendAddressPoolName: backendAddressPoolName, + } +} + +// ParseBackendAddressPoolID parses 'input' into a BackendAddressPoolId +func ParseBackendAddressPoolID(input string) (*BackendAddressPoolId, error) { + parser := resourceids.NewParserFromResourceIdType(&BackendAddressPoolId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := BackendAddressPoolId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseBackendAddressPoolIDInsensitively parses 'input' case-insensitively into a BackendAddressPoolId +// note: this method should only be used for API response data and not user input +func ParseBackendAddressPoolIDInsensitively(input string) (*BackendAddressPoolId, error) { + parser := resourceids.NewParserFromResourceIdType(&BackendAddressPoolId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := BackendAddressPoolId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *BackendAddressPoolId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.LoadBalancerName, ok = input.Parsed["loadBalancerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "loadBalancerName", input) + } + + if id.BackendAddressPoolName, ok = input.Parsed["backendAddressPoolName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "backendAddressPoolName", input) + } + + return nil +} + +// ValidateBackendAddressPoolID checks that 'input' can be parsed as a Backend Address Pool ID +func ValidateBackendAddressPoolID(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 := ParseBackendAddressPoolID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Backend Address Pool ID +func (id BackendAddressPoolId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/loadBalancers/%s/backendAddressPools/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.LoadBalancerName, id.BackendAddressPoolName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Backend Address Pool ID +func (id BackendAddressPoolId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.UserSpecifiedSegment("resourceGroupName", "resourceGroupValue"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLoadBalancers", "loadBalancers", "loadBalancers"), + resourceids.UserSpecifiedSegment("loadBalancerName", "loadBalancerValue"), + resourceids.StaticSegment("staticBackendAddressPools", "backendAddressPools", "backendAddressPools"), + resourceids.UserSpecifiedSegment("backendAddressPoolName", "backendAddressPoolValue"), + } +} + +// String returns a human-readable description of this Backend Address Pool ID +func (id BackendAddressPoolId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Load Balancer Name: %q", id.LoadBalancerName), + fmt.Sprintf("Backend Address Pool Name: %q", id.BackendAddressPoolName), + } + return fmt.Sprintf("Backend Address Pool (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/id_backendaddresspool_test.go b/resource-manager/network/2024-01-01/loadbalancers/id_backendaddresspool_test.go new file mode 100644 index 00000000000..f21fb27becf --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/id_backendaddresspool_test.go @@ -0,0 +1,327 @@ +package loadbalancers + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &BackendAddressPoolId{} + +func TestNewBackendAddressPoolID(t *testing.T) { + id := NewBackendAddressPoolID("12345678-1234-9876-4563-123456789012", "resourceGroupValue", "loadBalancerValue", "backendAddressPoolValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "resourceGroupValue" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "resourceGroupValue") + } + + if id.LoadBalancerName != "loadBalancerValue" { + t.Fatalf("Expected %q but got %q for Segment 'LoadBalancerName'", id.LoadBalancerName, "loadBalancerValue") + } + + if id.BackendAddressPoolName != "backendAddressPoolValue" { + t.Fatalf("Expected %q but got %q for Segment 'BackendAddressPoolName'", id.BackendAddressPoolName, "backendAddressPoolValue") + } +} + +func TestFormatBackendAddressPoolID(t *testing.T) { + actual := NewBackendAddressPoolID("12345678-1234-9876-4563-123456789012", "resourceGroupValue", "loadBalancerValue", "backendAddressPoolValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Network/loadBalancers/loadBalancerValue/backendAddressPools/backendAddressPoolValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseBackendAddressPoolID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *BackendAddressPoolId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Network/loadBalancers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Network/loadBalancers/loadBalancerValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Network/loadBalancers/loadBalancerValue/backendAddressPools", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Network/loadBalancers/loadBalancerValue/backendAddressPools/backendAddressPoolValue", + Expected: &BackendAddressPoolId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "resourceGroupValue", + LoadBalancerName: "loadBalancerValue", + BackendAddressPoolName: "backendAddressPoolValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Network/loadBalancers/loadBalancerValue/backendAddressPools/backendAddressPoolValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseBackendAddressPoolID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LoadBalancerName != v.Expected.LoadBalancerName { + t.Fatalf("Expected %q but got %q for LoadBalancerName", v.Expected.LoadBalancerName, actual.LoadBalancerName) + } + + if actual.BackendAddressPoolName != v.Expected.BackendAddressPoolName { + t.Fatalf("Expected %q but got %q for BackendAddressPoolName", v.Expected.BackendAddressPoolName, actual.BackendAddressPoolName) + } + + } +} + +func TestParseBackendAddressPoolIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *BackendAddressPoolId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/rEsOuRcEgRoUpVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/rEsOuRcEgRoUpVaLuE/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/rEsOuRcEgRoUpVaLuE/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Network/loadBalancers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/rEsOuRcEgRoUpVaLuE/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Network/loadBalancers/loadBalancerValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/rEsOuRcEgRoUpVaLuE/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Network/loadBalancers/loadBalancerValue/backendAddressPools", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/rEsOuRcEgRoUpVaLuE/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe/bAcKeNdAdDrEsSpOoLs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Network/loadBalancers/loadBalancerValue/backendAddressPools/backendAddressPoolValue", + Expected: &BackendAddressPoolId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "resourceGroupValue", + LoadBalancerName: "loadBalancerValue", + BackendAddressPoolName: "backendAddressPoolValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Network/loadBalancers/loadBalancerValue/backendAddressPools/backendAddressPoolValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/rEsOuRcEgRoUpVaLuE/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe/bAcKeNdAdDrEsSpOoLs/bAcKeNdAdDrEsSpOoLvAlUe", + Expected: &BackendAddressPoolId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "rEsOuRcEgRoUpVaLuE", + LoadBalancerName: "lOaDbAlAnCeRvAlUe", + BackendAddressPoolName: "bAcKeNdAdDrEsSpOoLvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/rEsOuRcEgRoUpVaLuE/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe/bAcKeNdAdDrEsSpOoLs/bAcKeNdAdDrEsSpOoLvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseBackendAddressPoolIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LoadBalancerName != v.Expected.LoadBalancerName { + t.Fatalf("Expected %q but got %q for LoadBalancerName", v.Expected.LoadBalancerName, actual.LoadBalancerName) + } + + if actual.BackendAddressPoolName != v.Expected.BackendAddressPoolName { + t.Fatalf("Expected %q but got %q for BackendAddressPoolName", v.Expected.BackendAddressPoolName, actual.BackendAddressPoolName) + } + + } +} + +func TestSegmentsForBackendAddressPoolId(t *testing.T) { + segments := BackendAddressPoolId{}.Segments() + if len(segments) == 0 { + t.Fatalf("BackendAddressPoolId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/id_frontendipconfiguration.go b/resource-manager/network/2024-01-01/loadbalancers/id_frontendipconfiguration.go new file mode 100644 index 00000000000..dd3cba98217 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/id_frontendipconfiguration.go @@ -0,0 +1,139 @@ +package loadbalancers + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&FrontendIPConfigurationId{}) +} + +var _ resourceids.ResourceId = &FrontendIPConfigurationId{} + +// FrontendIPConfigurationId is a struct representing the Resource ID for a Frontend I P Configuration +type FrontendIPConfigurationId struct { + SubscriptionId string + ResourceGroupName string + LoadBalancerName string + FrontendIPConfigurationName string +} + +// NewFrontendIPConfigurationID returns a new FrontendIPConfigurationId struct +func NewFrontendIPConfigurationID(subscriptionId string, resourceGroupName string, loadBalancerName string, frontendIPConfigurationName string) FrontendIPConfigurationId { + return FrontendIPConfigurationId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + LoadBalancerName: loadBalancerName, + FrontendIPConfigurationName: frontendIPConfigurationName, + } +} + +// ParseFrontendIPConfigurationID parses 'input' into a FrontendIPConfigurationId +func ParseFrontendIPConfigurationID(input string) (*FrontendIPConfigurationId, error) { + parser := resourceids.NewParserFromResourceIdType(&FrontendIPConfigurationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := FrontendIPConfigurationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseFrontendIPConfigurationIDInsensitively parses 'input' case-insensitively into a FrontendIPConfigurationId +// note: this method should only be used for API response data and not user input +func ParseFrontendIPConfigurationIDInsensitively(input string) (*FrontendIPConfigurationId, error) { + parser := resourceids.NewParserFromResourceIdType(&FrontendIPConfigurationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := FrontendIPConfigurationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *FrontendIPConfigurationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.LoadBalancerName, ok = input.Parsed["loadBalancerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "loadBalancerName", input) + } + + if id.FrontendIPConfigurationName, ok = input.Parsed["frontendIPConfigurationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "frontendIPConfigurationName", input) + } + + return nil +} + +// ValidateFrontendIPConfigurationID checks that 'input' can be parsed as a Frontend I P Configuration ID +func ValidateFrontendIPConfigurationID(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 := ParseFrontendIPConfigurationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Frontend I P Configuration ID +func (id FrontendIPConfigurationId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/loadBalancers/%s/frontendIPConfigurations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.LoadBalancerName, id.FrontendIPConfigurationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Frontend I P Configuration ID +func (id FrontendIPConfigurationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLoadBalancers", "loadBalancers", "loadBalancers"), + resourceids.UserSpecifiedSegment("loadBalancerName", "loadBalancerValue"), + resourceids.StaticSegment("staticFrontendIPConfigurations", "frontendIPConfigurations", "frontendIPConfigurations"), + resourceids.UserSpecifiedSegment("frontendIPConfigurationName", "frontendIPConfigurationValue"), + } +} + +// String returns a human-readable description of this Frontend I P Configuration ID +func (id FrontendIPConfigurationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Load Balancer Name: %q", id.LoadBalancerName), + fmt.Sprintf("Frontend I P Configuration Name: %q", id.FrontendIPConfigurationName), + } + return fmt.Sprintf("Frontend I P Configuration (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/id_frontendipconfiguration_test.go b/resource-manager/network/2024-01-01/loadbalancers/id_frontendipconfiguration_test.go new file mode 100644 index 00000000000..06fbc5508d7 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/id_frontendipconfiguration_test.go @@ -0,0 +1,327 @@ +package loadbalancers + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &FrontendIPConfigurationId{} + +func TestNewFrontendIPConfigurationID(t *testing.T) { + id := NewFrontendIPConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue", "frontendIPConfigurationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.LoadBalancerName != "loadBalancerValue" { + t.Fatalf("Expected %q but got %q for Segment 'LoadBalancerName'", id.LoadBalancerName, "loadBalancerValue") + } + + if id.FrontendIPConfigurationName != "frontendIPConfigurationValue" { + t.Fatalf("Expected %q but got %q for Segment 'FrontendIPConfigurationName'", id.FrontendIPConfigurationName, "frontendIPConfigurationValue") + } +} + +func TestFormatFrontendIPConfigurationID(t *testing.T) { + actual := NewFrontendIPConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue", "frontendIPConfigurationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/frontendIPConfigurations/frontendIPConfigurationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseFrontendIPConfigurationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *FrontendIPConfigurationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/frontendIPConfigurations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/frontendIPConfigurations/frontendIPConfigurationValue", + Expected: &FrontendIPConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LoadBalancerName: "loadBalancerValue", + FrontendIPConfigurationName: "frontendIPConfigurationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/frontendIPConfigurations/frontendIPConfigurationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseFrontendIPConfigurationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LoadBalancerName != v.Expected.LoadBalancerName { + t.Fatalf("Expected %q but got %q for LoadBalancerName", v.Expected.LoadBalancerName, actual.LoadBalancerName) + } + + if actual.FrontendIPConfigurationName != v.Expected.FrontendIPConfigurationName { + t.Fatalf("Expected %q but got %q for FrontendIPConfigurationName", v.Expected.FrontendIPConfigurationName, actual.FrontendIPConfigurationName) + } + + } +} + +func TestParseFrontendIPConfigurationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *FrontendIPConfigurationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/frontendIPConfigurations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe/fRoNtEnDiPcOnFiGuRaTiOnS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/frontendIPConfigurations/frontendIPConfigurationValue", + Expected: &FrontendIPConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LoadBalancerName: "loadBalancerValue", + FrontendIPConfigurationName: "frontendIPConfigurationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/frontendIPConfigurations/frontendIPConfigurationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe/fRoNtEnDiPcOnFiGuRaTiOnS/fRoNtEnDiPcOnFiGuRaTiOnVaLuE", + Expected: &FrontendIPConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + LoadBalancerName: "lOaDbAlAnCeRvAlUe", + FrontendIPConfigurationName: "fRoNtEnDiPcOnFiGuRaTiOnVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe/fRoNtEnDiPcOnFiGuRaTiOnS/fRoNtEnDiPcOnFiGuRaTiOnVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseFrontendIPConfigurationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LoadBalancerName != v.Expected.LoadBalancerName { + t.Fatalf("Expected %q but got %q for LoadBalancerName", v.Expected.LoadBalancerName, actual.LoadBalancerName) + } + + if actual.FrontendIPConfigurationName != v.Expected.FrontendIPConfigurationName { + t.Fatalf("Expected %q but got %q for FrontendIPConfigurationName", v.Expected.FrontendIPConfigurationName, actual.FrontendIPConfigurationName) + } + + } +} + +func TestSegmentsForFrontendIPConfigurationId(t *testing.T) { + segments := FrontendIPConfigurationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("FrontendIPConfigurationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/id_inboundnatrule.go b/resource-manager/network/2024-01-01/loadbalancers/id_inboundnatrule.go new file mode 100644 index 00000000000..a460bece352 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/id_inboundnatrule.go @@ -0,0 +1,139 @@ +package loadbalancers + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&InboundNatRuleId{}) +} + +var _ resourceids.ResourceId = &InboundNatRuleId{} + +// InboundNatRuleId is a struct representing the Resource ID for a Inbound Nat Rule +type InboundNatRuleId struct { + SubscriptionId string + ResourceGroupName string + LoadBalancerName string + InboundNatRuleName string +} + +// NewInboundNatRuleID returns a new InboundNatRuleId struct +func NewInboundNatRuleID(subscriptionId string, resourceGroupName string, loadBalancerName string, inboundNatRuleName string) InboundNatRuleId { + return InboundNatRuleId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + LoadBalancerName: loadBalancerName, + InboundNatRuleName: inboundNatRuleName, + } +} + +// ParseInboundNatRuleID parses 'input' into a InboundNatRuleId +func ParseInboundNatRuleID(input string) (*InboundNatRuleId, error) { + parser := resourceids.NewParserFromResourceIdType(&InboundNatRuleId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := InboundNatRuleId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseInboundNatRuleIDInsensitively parses 'input' case-insensitively into a InboundNatRuleId +// note: this method should only be used for API response data and not user input +func ParseInboundNatRuleIDInsensitively(input string) (*InboundNatRuleId, error) { + parser := resourceids.NewParserFromResourceIdType(&InboundNatRuleId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := InboundNatRuleId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *InboundNatRuleId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.LoadBalancerName, ok = input.Parsed["loadBalancerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "loadBalancerName", input) + } + + if id.InboundNatRuleName, ok = input.Parsed["inboundNatRuleName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "inboundNatRuleName", input) + } + + return nil +} + +// ValidateInboundNatRuleID checks that 'input' can be parsed as a Inbound Nat Rule ID +func ValidateInboundNatRuleID(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 := ParseInboundNatRuleID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Inbound Nat Rule ID +func (id InboundNatRuleId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/loadBalancers/%s/inboundNatRules/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.LoadBalancerName, id.InboundNatRuleName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Inbound Nat Rule ID +func (id InboundNatRuleId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLoadBalancers", "loadBalancers", "loadBalancers"), + resourceids.UserSpecifiedSegment("loadBalancerName", "loadBalancerValue"), + resourceids.StaticSegment("staticInboundNatRules", "inboundNatRules", "inboundNatRules"), + resourceids.UserSpecifiedSegment("inboundNatRuleName", "inboundNatRuleValue"), + } +} + +// String returns a human-readable description of this Inbound Nat Rule ID +func (id InboundNatRuleId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Load Balancer Name: %q", id.LoadBalancerName), + fmt.Sprintf("Inbound Nat Rule Name: %q", id.InboundNatRuleName), + } + return fmt.Sprintf("Inbound Nat Rule (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/id_inboundnatrule_test.go b/resource-manager/network/2024-01-01/loadbalancers/id_inboundnatrule_test.go new file mode 100644 index 00000000000..fc4882733d2 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/id_inboundnatrule_test.go @@ -0,0 +1,327 @@ +package loadbalancers + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &InboundNatRuleId{} + +func TestNewInboundNatRuleID(t *testing.T) { + id := NewInboundNatRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue", "inboundNatRuleValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.LoadBalancerName != "loadBalancerValue" { + t.Fatalf("Expected %q but got %q for Segment 'LoadBalancerName'", id.LoadBalancerName, "loadBalancerValue") + } + + if id.InboundNatRuleName != "inboundNatRuleValue" { + t.Fatalf("Expected %q but got %q for Segment 'InboundNatRuleName'", id.InboundNatRuleName, "inboundNatRuleValue") + } +} + +func TestFormatInboundNatRuleID(t *testing.T) { + actual := NewInboundNatRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue", "inboundNatRuleValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/inboundNatRules/inboundNatRuleValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseInboundNatRuleID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *InboundNatRuleId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/inboundNatRules", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/inboundNatRules/inboundNatRuleValue", + Expected: &InboundNatRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LoadBalancerName: "loadBalancerValue", + InboundNatRuleName: "inboundNatRuleValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/inboundNatRules/inboundNatRuleValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseInboundNatRuleID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LoadBalancerName != v.Expected.LoadBalancerName { + t.Fatalf("Expected %q but got %q for LoadBalancerName", v.Expected.LoadBalancerName, actual.LoadBalancerName) + } + + if actual.InboundNatRuleName != v.Expected.InboundNatRuleName { + t.Fatalf("Expected %q but got %q for InboundNatRuleName", v.Expected.InboundNatRuleName, actual.InboundNatRuleName) + } + + } +} + +func TestParseInboundNatRuleIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *InboundNatRuleId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/inboundNatRules", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe/iNbOuNdNaTrUlEs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/inboundNatRules/inboundNatRuleValue", + Expected: &InboundNatRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LoadBalancerName: "loadBalancerValue", + InboundNatRuleName: "inboundNatRuleValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/inboundNatRules/inboundNatRuleValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe/iNbOuNdNaTrUlEs/iNbOuNdNaTrUlEvAlUe", + Expected: &InboundNatRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + LoadBalancerName: "lOaDbAlAnCeRvAlUe", + InboundNatRuleName: "iNbOuNdNaTrUlEvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe/iNbOuNdNaTrUlEs/iNbOuNdNaTrUlEvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseInboundNatRuleIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LoadBalancerName != v.Expected.LoadBalancerName { + t.Fatalf("Expected %q but got %q for LoadBalancerName", v.Expected.LoadBalancerName, actual.LoadBalancerName) + } + + if actual.InboundNatRuleName != v.Expected.InboundNatRuleName { + t.Fatalf("Expected %q but got %q for InboundNatRuleName", v.Expected.InboundNatRuleName, actual.InboundNatRuleName) + } + + } +} + +func TestSegmentsForInboundNatRuleId(t *testing.T) { + segments := InboundNatRuleId{}.Segments() + if len(segments) == 0 { + t.Fatalf("InboundNatRuleId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/id_loadbalancer.go b/resource-manager/network/2024-01-01/loadbalancers/id_loadbalancer.go new file mode 100644 index 00000000000..35278257e30 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/id_loadbalancer.go @@ -0,0 +1,130 @@ +package loadbalancers + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&LoadBalancerId{}) +} + +var _ resourceids.ResourceId = &LoadBalancerId{} + +// LoadBalancerId is a struct representing the Resource ID for a Load Balancer +type LoadBalancerId struct { + SubscriptionId string + ResourceGroupName string + LoadBalancerName string +} + +// NewLoadBalancerID returns a new LoadBalancerId struct +func NewLoadBalancerID(subscriptionId string, resourceGroupName string, loadBalancerName string) LoadBalancerId { + return LoadBalancerId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + LoadBalancerName: loadBalancerName, + } +} + +// ParseLoadBalancerID parses 'input' into a LoadBalancerId +func ParseLoadBalancerID(input string) (*LoadBalancerId, error) { + parser := resourceids.NewParserFromResourceIdType(&LoadBalancerId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LoadBalancerId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseLoadBalancerIDInsensitively parses 'input' case-insensitively into a LoadBalancerId +// note: this method should only be used for API response data and not user input +func ParseLoadBalancerIDInsensitively(input string) (*LoadBalancerId, error) { + parser := resourceids.NewParserFromResourceIdType(&LoadBalancerId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LoadBalancerId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *LoadBalancerId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.LoadBalancerName, ok = input.Parsed["loadBalancerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "loadBalancerName", input) + } + + return nil +} + +// ValidateLoadBalancerID checks that 'input' can be parsed as a Load Balancer ID +func ValidateLoadBalancerID(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 := ParseLoadBalancerID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Load Balancer ID +func (id LoadBalancerId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/loadBalancers/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.LoadBalancerName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Load Balancer ID +func (id LoadBalancerId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.UserSpecifiedSegment("resourceGroupName", "resourceGroupValue"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLoadBalancers", "loadBalancers", "loadBalancers"), + resourceids.UserSpecifiedSegment("loadBalancerName", "loadBalancerValue"), + } +} + +// String returns a human-readable description of this Load Balancer ID +func (id LoadBalancerId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Load Balancer Name: %q", id.LoadBalancerName), + } + return fmt.Sprintf("Load Balancer (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/id_loadbalancer_test.go b/resource-manager/network/2024-01-01/loadbalancers/id_loadbalancer_test.go new file mode 100644 index 00000000000..88f22b83175 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/id_loadbalancer_test.go @@ -0,0 +1,282 @@ +package loadbalancers + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &LoadBalancerId{} + +func TestNewLoadBalancerID(t *testing.T) { + id := NewLoadBalancerID("12345678-1234-9876-4563-123456789012", "resourceGroupValue", "loadBalancerValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "resourceGroupValue" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "resourceGroupValue") + } + + if id.LoadBalancerName != "loadBalancerValue" { + t.Fatalf("Expected %q but got %q for Segment 'LoadBalancerName'", id.LoadBalancerName, "loadBalancerValue") + } +} + +func TestFormatLoadBalancerID(t *testing.T) { + actual := NewLoadBalancerID("12345678-1234-9876-4563-123456789012", "resourceGroupValue", "loadBalancerValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Network/loadBalancers/loadBalancerValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseLoadBalancerID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LoadBalancerId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Network/loadBalancers", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Network/loadBalancers/loadBalancerValue", + Expected: &LoadBalancerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "resourceGroupValue", + LoadBalancerName: "loadBalancerValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Network/loadBalancers/loadBalancerValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLoadBalancerID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LoadBalancerName != v.Expected.LoadBalancerName { + t.Fatalf("Expected %q but got %q for LoadBalancerName", v.Expected.LoadBalancerName, actual.LoadBalancerName) + } + + } +} + +func TestParseLoadBalancerIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LoadBalancerId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/rEsOuRcEgRoUpVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/rEsOuRcEgRoUpVaLuE/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/rEsOuRcEgRoUpVaLuE/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Network/loadBalancers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/rEsOuRcEgRoUpVaLuE/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Network/loadBalancers/loadBalancerValue", + Expected: &LoadBalancerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "resourceGroupValue", + LoadBalancerName: "loadBalancerValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Network/loadBalancers/loadBalancerValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/rEsOuRcEgRoUpVaLuE/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe", + Expected: &LoadBalancerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "rEsOuRcEgRoUpVaLuE", + LoadBalancerName: "lOaDbAlAnCeRvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/rEsOuRcEgRoUpVaLuE/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLoadBalancerIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LoadBalancerName != v.Expected.LoadBalancerName { + t.Fatalf("Expected %q but got %q for LoadBalancerName", v.Expected.LoadBalancerName, actual.LoadBalancerName) + } + + } +} + +func TestSegmentsForLoadBalancerId(t *testing.T) { + segments := LoadBalancerId{}.Segments() + if len(segments) == 0 { + t.Fatalf("LoadBalancerId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/id_loadbalancerbackendaddresspool.go b/resource-manager/network/2024-01-01/loadbalancers/id_loadbalancerbackendaddresspool.go new file mode 100644 index 00000000000..d8fafa2347f --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/id_loadbalancerbackendaddresspool.go @@ -0,0 +1,139 @@ +package loadbalancers + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&LoadBalancerBackendAddressPoolId{}) +} + +var _ resourceids.ResourceId = &LoadBalancerBackendAddressPoolId{} + +// LoadBalancerBackendAddressPoolId is a struct representing the Resource ID for a Load Balancer Backend Address Pool +type LoadBalancerBackendAddressPoolId struct { + SubscriptionId string + ResourceGroupName string + LoadBalancerName string + BackendAddressPoolName string +} + +// NewLoadBalancerBackendAddressPoolID returns a new LoadBalancerBackendAddressPoolId struct +func NewLoadBalancerBackendAddressPoolID(subscriptionId string, resourceGroupName string, loadBalancerName string, backendAddressPoolName string) LoadBalancerBackendAddressPoolId { + return LoadBalancerBackendAddressPoolId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + LoadBalancerName: loadBalancerName, + BackendAddressPoolName: backendAddressPoolName, + } +} + +// ParseLoadBalancerBackendAddressPoolID parses 'input' into a LoadBalancerBackendAddressPoolId +func ParseLoadBalancerBackendAddressPoolID(input string) (*LoadBalancerBackendAddressPoolId, error) { + parser := resourceids.NewParserFromResourceIdType(&LoadBalancerBackendAddressPoolId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LoadBalancerBackendAddressPoolId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseLoadBalancerBackendAddressPoolIDInsensitively parses 'input' case-insensitively into a LoadBalancerBackendAddressPoolId +// note: this method should only be used for API response data and not user input +func ParseLoadBalancerBackendAddressPoolIDInsensitively(input string) (*LoadBalancerBackendAddressPoolId, error) { + parser := resourceids.NewParserFromResourceIdType(&LoadBalancerBackendAddressPoolId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LoadBalancerBackendAddressPoolId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *LoadBalancerBackendAddressPoolId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.LoadBalancerName, ok = input.Parsed["loadBalancerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "loadBalancerName", input) + } + + if id.BackendAddressPoolName, ok = input.Parsed["backendAddressPoolName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "backendAddressPoolName", input) + } + + return nil +} + +// ValidateLoadBalancerBackendAddressPoolID checks that 'input' can be parsed as a Load Balancer Backend Address Pool ID +func ValidateLoadBalancerBackendAddressPoolID(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 := ParseLoadBalancerBackendAddressPoolID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Load Balancer Backend Address Pool ID +func (id LoadBalancerBackendAddressPoolId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/loadBalancers/%s/backendAddressPools/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.LoadBalancerName, id.BackendAddressPoolName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Load Balancer Backend Address Pool ID +func (id LoadBalancerBackendAddressPoolId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLoadBalancers", "loadBalancers", "loadBalancers"), + resourceids.UserSpecifiedSegment("loadBalancerName", "loadBalancerValue"), + resourceids.StaticSegment("staticBackendAddressPools", "backendAddressPools", "backendAddressPools"), + resourceids.UserSpecifiedSegment("backendAddressPoolName", "backendAddressPoolValue"), + } +} + +// String returns a human-readable description of this Load Balancer Backend Address Pool ID +func (id LoadBalancerBackendAddressPoolId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Load Balancer Name: %q", id.LoadBalancerName), + fmt.Sprintf("Backend Address Pool Name: %q", id.BackendAddressPoolName), + } + return fmt.Sprintf("Load Balancer Backend Address Pool (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/id_loadbalancerbackendaddresspool_test.go b/resource-manager/network/2024-01-01/loadbalancers/id_loadbalancerbackendaddresspool_test.go new file mode 100644 index 00000000000..d30f52580c2 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/id_loadbalancerbackendaddresspool_test.go @@ -0,0 +1,327 @@ +package loadbalancers + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &LoadBalancerBackendAddressPoolId{} + +func TestNewLoadBalancerBackendAddressPoolID(t *testing.T) { + id := NewLoadBalancerBackendAddressPoolID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue", "backendAddressPoolValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.LoadBalancerName != "loadBalancerValue" { + t.Fatalf("Expected %q but got %q for Segment 'LoadBalancerName'", id.LoadBalancerName, "loadBalancerValue") + } + + if id.BackendAddressPoolName != "backendAddressPoolValue" { + t.Fatalf("Expected %q but got %q for Segment 'BackendAddressPoolName'", id.BackendAddressPoolName, "backendAddressPoolValue") + } +} + +func TestFormatLoadBalancerBackendAddressPoolID(t *testing.T) { + actual := NewLoadBalancerBackendAddressPoolID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue", "backendAddressPoolValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/backendAddressPools/backendAddressPoolValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseLoadBalancerBackendAddressPoolID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LoadBalancerBackendAddressPoolId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/backendAddressPools", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/backendAddressPools/backendAddressPoolValue", + Expected: &LoadBalancerBackendAddressPoolId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LoadBalancerName: "loadBalancerValue", + BackendAddressPoolName: "backendAddressPoolValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/backendAddressPools/backendAddressPoolValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLoadBalancerBackendAddressPoolID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LoadBalancerName != v.Expected.LoadBalancerName { + t.Fatalf("Expected %q but got %q for LoadBalancerName", v.Expected.LoadBalancerName, actual.LoadBalancerName) + } + + if actual.BackendAddressPoolName != v.Expected.BackendAddressPoolName { + t.Fatalf("Expected %q but got %q for BackendAddressPoolName", v.Expected.BackendAddressPoolName, actual.BackendAddressPoolName) + } + + } +} + +func TestParseLoadBalancerBackendAddressPoolIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LoadBalancerBackendAddressPoolId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/backendAddressPools", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe/bAcKeNdAdDrEsSpOoLs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/backendAddressPools/backendAddressPoolValue", + Expected: &LoadBalancerBackendAddressPoolId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LoadBalancerName: "loadBalancerValue", + BackendAddressPoolName: "backendAddressPoolValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/backendAddressPools/backendAddressPoolValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe/bAcKeNdAdDrEsSpOoLs/bAcKeNdAdDrEsSpOoLvAlUe", + Expected: &LoadBalancerBackendAddressPoolId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + LoadBalancerName: "lOaDbAlAnCeRvAlUe", + BackendAddressPoolName: "bAcKeNdAdDrEsSpOoLvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe/bAcKeNdAdDrEsSpOoLs/bAcKeNdAdDrEsSpOoLvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLoadBalancerBackendAddressPoolIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LoadBalancerName != v.Expected.LoadBalancerName { + t.Fatalf("Expected %q but got %q for LoadBalancerName", v.Expected.LoadBalancerName, actual.LoadBalancerName) + } + + if actual.BackendAddressPoolName != v.Expected.BackendAddressPoolName { + t.Fatalf("Expected %q but got %q for BackendAddressPoolName", v.Expected.BackendAddressPoolName, actual.BackendAddressPoolName) + } + + } +} + +func TestSegmentsForLoadBalancerBackendAddressPoolId(t *testing.T) { + segments := LoadBalancerBackendAddressPoolId{}.Segments() + if len(segments) == 0 { + t.Fatalf("LoadBalancerBackendAddressPoolId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/id_loadbalancingrule.go b/resource-manager/network/2024-01-01/loadbalancers/id_loadbalancingrule.go new file mode 100644 index 00000000000..31e911e38af --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/id_loadbalancingrule.go @@ -0,0 +1,139 @@ +package loadbalancers + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&LoadBalancingRuleId{}) +} + +var _ resourceids.ResourceId = &LoadBalancingRuleId{} + +// LoadBalancingRuleId is a struct representing the Resource ID for a Load Balancing Rule +type LoadBalancingRuleId struct { + SubscriptionId string + ResourceGroupName string + LoadBalancerName string + LoadBalancingRuleName string +} + +// NewLoadBalancingRuleID returns a new LoadBalancingRuleId struct +func NewLoadBalancingRuleID(subscriptionId string, resourceGroupName string, loadBalancerName string, loadBalancingRuleName string) LoadBalancingRuleId { + return LoadBalancingRuleId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + LoadBalancerName: loadBalancerName, + LoadBalancingRuleName: loadBalancingRuleName, + } +} + +// ParseLoadBalancingRuleID parses 'input' into a LoadBalancingRuleId +func ParseLoadBalancingRuleID(input string) (*LoadBalancingRuleId, error) { + parser := resourceids.NewParserFromResourceIdType(&LoadBalancingRuleId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LoadBalancingRuleId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseLoadBalancingRuleIDInsensitively parses 'input' case-insensitively into a LoadBalancingRuleId +// note: this method should only be used for API response data and not user input +func ParseLoadBalancingRuleIDInsensitively(input string) (*LoadBalancingRuleId, error) { + parser := resourceids.NewParserFromResourceIdType(&LoadBalancingRuleId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LoadBalancingRuleId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *LoadBalancingRuleId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.LoadBalancerName, ok = input.Parsed["loadBalancerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "loadBalancerName", input) + } + + if id.LoadBalancingRuleName, ok = input.Parsed["loadBalancingRuleName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "loadBalancingRuleName", input) + } + + return nil +} + +// ValidateLoadBalancingRuleID checks that 'input' can be parsed as a Load Balancing Rule ID +func ValidateLoadBalancingRuleID(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 := ParseLoadBalancingRuleID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Load Balancing Rule ID +func (id LoadBalancingRuleId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/loadBalancers/%s/loadBalancingRules/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.LoadBalancerName, id.LoadBalancingRuleName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Load Balancing Rule ID +func (id LoadBalancingRuleId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLoadBalancers", "loadBalancers", "loadBalancers"), + resourceids.UserSpecifiedSegment("loadBalancerName", "loadBalancerValue"), + resourceids.StaticSegment("staticLoadBalancingRules", "loadBalancingRules", "loadBalancingRules"), + resourceids.UserSpecifiedSegment("loadBalancingRuleName", "loadBalancingRuleValue"), + } +} + +// String returns a human-readable description of this Load Balancing Rule ID +func (id LoadBalancingRuleId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Load Balancer Name: %q", id.LoadBalancerName), + fmt.Sprintf("Load Balancing Rule Name: %q", id.LoadBalancingRuleName), + } + return fmt.Sprintf("Load Balancing Rule (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/id_loadbalancingrule_test.go b/resource-manager/network/2024-01-01/loadbalancers/id_loadbalancingrule_test.go new file mode 100644 index 00000000000..0cedccca2be --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/id_loadbalancingrule_test.go @@ -0,0 +1,327 @@ +package loadbalancers + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &LoadBalancingRuleId{} + +func TestNewLoadBalancingRuleID(t *testing.T) { + id := NewLoadBalancingRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue", "loadBalancingRuleValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.LoadBalancerName != "loadBalancerValue" { + t.Fatalf("Expected %q but got %q for Segment 'LoadBalancerName'", id.LoadBalancerName, "loadBalancerValue") + } + + if id.LoadBalancingRuleName != "loadBalancingRuleValue" { + t.Fatalf("Expected %q but got %q for Segment 'LoadBalancingRuleName'", id.LoadBalancingRuleName, "loadBalancingRuleValue") + } +} + +func TestFormatLoadBalancingRuleID(t *testing.T) { + actual := NewLoadBalancingRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue", "loadBalancingRuleValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/loadBalancingRules/loadBalancingRuleValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseLoadBalancingRuleID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LoadBalancingRuleId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/loadBalancingRules", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/loadBalancingRules/loadBalancingRuleValue", + Expected: &LoadBalancingRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LoadBalancerName: "loadBalancerValue", + LoadBalancingRuleName: "loadBalancingRuleValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/loadBalancingRules/loadBalancingRuleValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLoadBalancingRuleID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LoadBalancerName != v.Expected.LoadBalancerName { + t.Fatalf("Expected %q but got %q for LoadBalancerName", v.Expected.LoadBalancerName, actual.LoadBalancerName) + } + + if actual.LoadBalancingRuleName != v.Expected.LoadBalancingRuleName { + t.Fatalf("Expected %q but got %q for LoadBalancingRuleName", v.Expected.LoadBalancingRuleName, actual.LoadBalancingRuleName) + } + + } +} + +func TestParseLoadBalancingRuleIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LoadBalancingRuleId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/loadBalancingRules", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe/lOaDbAlAnCiNgRuLeS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/loadBalancingRules/loadBalancingRuleValue", + Expected: &LoadBalancingRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LoadBalancerName: "loadBalancerValue", + LoadBalancingRuleName: "loadBalancingRuleValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/loadBalancingRules/loadBalancingRuleValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe/lOaDbAlAnCiNgRuLeS/lOaDbAlAnCiNgRuLeVaLuE", + Expected: &LoadBalancingRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + LoadBalancerName: "lOaDbAlAnCeRvAlUe", + LoadBalancingRuleName: "lOaDbAlAnCiNgRuLeVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe/lOaDbAlAnCiNgRuLeS/lOaDbAlAnCiNgRuLeVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLoadBalancingRuleIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LoadBalancerName != v.Expected.LoadBalancerName { + t.Fatalf("Expected %q but got %q for LoadBalancerName", v.Expected.LoadBalancerName, actual.LoadBalancerName) + } + + if actual.LoadBalancingRuleName != v.Expected.LoadBalancingRuleName { + t.Fatalf("Expected %q but got %q for LoadBalancingRuleName", v.Expected.LoadBalancingRuleName, actual.LoadBalancingRuleName) + } + + } +} + +func TestSegmentsForLoadBalancingRuleId(t *testing.T) { + segments := LoadBalancingRuleId{}.Segments() + if len(segments) == 0 { + t.Fatalf("LoadBalancingRuleId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/id_location.go b/resource-manager/network/2024-01-01/loadbalancers/id_location.go new file mode 100644 index 00000000000..4a38c5ea3e7 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/id_location.go @@ -0,0 +1,121 @@ +package loadbalancers + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&LocationId{}) +} + +var _ resourceids.ResourceId = &LocationId{} + +// LocationId is a struct representing the Resource ID for a Location +type LocationId struct { + SubscriptionId string + LocationName string +} + +// NewLocationID returns a new LocationId struct +func NewLocationID(subscriptionId string, locationName string) LocationId { + return LocationId{ + SubscriptionId: subscriptionId, + LocationName: locationName, + } +} + +// ParseLocationID parses 'input' into a LocationId +func ParseLocationID(input string) (*LocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&LocationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseLocationIDInsensitively parses 'input' case-insensitively into a LocationId +// note: this method should only be used for API response data and not user input +func ParseLocationIDInsensitively(input string) (*LocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&LocationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *LocationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.LocationName, ok = input.Parsed["locationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "locationName", input) + } + + return nil +} + +// ValidateLocationID checks that 'input' can be parsed as a Location ID +func ValidateLocationID(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 := ParseLocationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Location ID +func (id LocationId) ID() string { + fmtString := "/subscriptions/%s/providers/Microsoft.Network/locations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.LocationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Location ID +func (id LocationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLocations", "locations", "locations"), + resourceids.UserSpecifiedSegment("locationName", "locationValue"), + } +} + +// String returns a human-readable description of this Location ID +func (id LocationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Location Name: %q", id.LocationName), + } + return fmt.Sprintf("Location (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/id_location_test.go b/resource-manager/network/2024-01-01/loadbalancers/id_location_test.go new file mode 100644 index 00000000000..ea456af0f8a --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/id_location_test.go @@ -0,0 +1,237 @@ +package loadbalancers + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &LocationId{} + +func TestNewLocationID(t *testing.T) { + id := NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.LocationName != "locationValue" { + t.Fatalf("Expected %q but got %q for Segment 'LocationName'", id.LocationName, "locationValue") + } +} + +func TestFormatLocationID(t *testing.T) { + actual := NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseLocationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLocationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestParseLocationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "lOcAtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLocationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestSegmentsForLocationId(t *testing.T) { + segments := LocationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("LocationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/id_outboundrule.go b/resource-manager/network/2024-01-01/loadbalancers/id_outboundrule.go new file mode 100644 index 00000000000..89837637300 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/id_outboundrule.go @@ -0,0 +1,139 @@ +package loadbalancers + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&OutboundRuleId{}) +} + +var _ resourceids.ResourceId = &OutboundRuleId{} + +// OutboundRuleId is a struct representing the Resource ID for a Outbound Rule +type OutboundRuleId struct { + SubscriptionId string + ResourceGroupName string + LoadBalancerName string + OutboundRuleName string +} + +// NewOutboundRuleID returns a new OutboundRuleId struct +func NewOutboundRuleID(subscriptionId string, resourceGroupName string, loadBalancerName string, outboundRuleName string) OutboundRuleId { + return OutboundRuleId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + LoadBalancerName: loadBalancerName, + OutboundRuleName: outboundRuleName, + } +} + +// ParseOutboundRuleID parses 'input' into a OutboundRuleId +func ParseOutboundRuleID(input string) (*OutboundRuleId, error) { + parser := resourceids.NewParserFromResourceIdType(&OutboundRuleId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := OutboundRuleId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseOutboundRuleIDInsensitively parses 'input' case-insensitively into a OutboundRuleId +// note: this method should only be used for API response data and not user input +func ParseOutboundRuleIDInsensitively(input string) (*OutboundRuleId, error) { + parser := resourceids.NewParserFromResourceIdType(&OutboundRuleId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := OutboundRuleId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *OutboundRuleId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.LoadBalancerName, ok = input.Parsed["loadBalancerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "loadBalancerName", input) + } + + if id.OutboundRuleName, ok = input.Parsed["outboundRuleName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "outboundRuleName", input) + } + + return nil +} + +// ValidateOutboundRuleID checks that 'input' can be parsed as a Outbound Rule ID +func ValidateOutboundRuleID(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 := ParseOutboundRuleID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Outbound Rule ID +func (id OutboundRuleId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/loadBalancers/%s/outboundRules/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.LoadBalancerName, id.OutboundRuleName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Outbound Rule ID +func (id OutboundRuleId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLoadBalancers", "loadBalancers", "loadBalancers"), + resourceids.UserSpecifiedSegment("loadBalancerName", "loadBalancerValue"), + resourceids.StaticSegment("staticOutboundRules", "outboundRules", "outboundRules"), + resourceids.UserSpecifiedSegment("outboundRuleName", "outboundRuleValue"), + } +} + +// String returns a human-readable description of this Outbound Rule ID +func (id OutboundRuleId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Load Balancer Name: %q", id.LoadBalancerName), + fmt.Sprintf("Outbound Rule Name: %q", id.OutboundRuleName), + } + return fmt.Sprintf("Outbound Rule (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/id_outboundrule_test.go b/resource-manager/network/2024-01-01/loadbalancers/id_outboundrule_test.go new file mode 100644 index 00000000000..9f2d3f6d83a --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/id_outboundrule_test.go @@ -0,0 +1,327 @@ +package loadbalancers + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &OutboundRuleId{} + +func TestNewOutboundRuleID(t *testing.T) { + id := NewOutboundRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue", "outboundRuleValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.LoadBalancerName != "loadBalancerValue" { + t.Fatalf("Expected %q but got %q for Segment 'LoadBalancerName'", id.LoadBalancerName, "loadBalancerValue") + } + + if id.OutboundRuleName != "outboundRuleValue" { + t.Fatalf("Expected %q but got %q for Segment 'OutboundRuleName'", id.OutboundRuleName, "outboundRuleValue") + } +} + +func TestFormatOutboundRuleID(t *testing.T) { + actual := NewOutboundRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue", "outboundRuleValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/outboundRules/outboundRuleValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseOutboundRuleID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *OutboundRuleId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/outboundRules", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/outboundRules/outboundRuleValue", + Expected: &OutboundRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LoadBalancerName: "loadBalancerValue", + OutboundRuleName: "outboundRuleValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/outboundRules/outboundRuleValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseOutboundRuleID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LoadBalancerName != v.Expected.LoadBalancerName { + t.Fatalf("Expected %q but got %q for LoadBalancerName", v.Expected.LoadBalancerName, actual.LoadBalancerName) + } + + if actual.OutboundRuleName != v.Expected.OutboundRuleName { + t.Fatalf("Expected %q but got %q for OutboundRuleName", v.Expected.OutboundRuleName, actual.OutboundRuleName) + } + + } +} + +func TestParseOutboundRuleIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *OutboundRuleId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/outboundRules", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe/oUtBoUnDrUlEs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/outboundRules/outboundRuleValue", + Expected: &OutboundRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LoadBalancerName: "loadBalancerValue", + OutboundRuleName: "outboundRuleValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/outboundRules/outboundRuleValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe/oUtBoUnDrUlEs/oUtBoUnDrUlEvAlUe", + Expected: &OutboundRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + LoadBalancerName: "lOaDbAlAnCeRvAlUe", + OutboundRuleName: "oUtBoUnDrUlEvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe/oUtBoUnDrUlEs/oUtBoUnDrUlEvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseOutboundRuleIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LoadBalancerName != v.Expected.LoadBalancerName { + t.Fatalf("Expected %q but got %q for LoadBalancerName", v.Expected.LoadBalancerName, actual.LoadBalancerName) + } + + if actual.OutboundRuleName != v.Expected.OutboundRuleName { + t.Fatalf("Expected %q but got %q for OutboundRuleName", v.Expected.OutboundRuleName, actual.OutboundRuleName) + } + + } +} + +func TestSegmentsForOutboundRuleId(t *testing.T) { + segments := OutboundRuleId{}.Segments() + if len(segments) == 0 { + t.Fatalf("OutboundRuleId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/id_probe.go b/resource-manager/network/2024-01-01/loadbalancers/id_probe.go new file mode 100644 index 00000000000..46ab09a65c9 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/id_probe.go @@ -0,0 +1,139 @@ +package loadbalancers + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ProbeId{}) +} + +var _ resourceids.ResourceId = &ProbeId{} + +// ProbeId is a struct representing the Resource ID for a Probe +type ProbeId struct { + SubscriptionId string + ResourceGroupName string + LoadBalancerName string + ProbeName string +} + +// NewProbeID returns a new ProbeId struct +func NewProbeID(subscriptionId string, resourceGroupName string, loadBalancerName string, probeName string) ProbeId { + return ProbeId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + LoadBalancerName: loadBalancerName, + ProbeName: probeName, + } +} + +// ParseProbeID parses 'input' into a ProbeId +func ParseProbeID(input string) (*ProbeId, error) { + parser := resourceids.NewParserFromResourceIdType(&ProbeId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ProbeId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseProbeIDInsensitively parses 'input' case-insensitively into a ProbeId +// note: this method should only be used for API response data and not user input +func ParseProbeIDInsensitively(input string) (*ProbeId, error) { + parser := resourceids.NewParserFromResourceIdType(&ProbeId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ProbeId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ProbeId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.LoadBalancerName, ok = input.Parsed["loadBalancerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "loadBalancerName", input) + } + + if id.ProbeName, ok = input.Parsed["probeName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "probeName", input) + } + + return nil +} + +// ValidateProbeID checks that 'input' can be parsed as a Probe ID +func ValidateProbeID(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 := ParseProbeID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Probe ID +func (id ProbeId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/loadBalancers/%s/probes/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.LoadBalancerName, id.ProbeName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Probe ID +func (id ProbeId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLoadBalancers", "loadBalancers", "loadBalancers"), + resourceids.UserSpecifiedSegment("loadBalancerName", "loadBalancerValue"), + resourceids.StaticSegment("staticProbes", "probes", "probes"), + resourceids.UserSpecifiedSegment("probeName", "probeValue"), + } +} + +// String returns a human-readable description of this Probe ID +func (id ProbeId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Load Balancer Name: %q", id.LoadBalancerName), + fmt.Sprintf("Probe Name: %q", id.ProbeName), + } + return fmt.Sprintf("Probe (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/id_probe_test.go b/resource-manager/network/2024-01-01/loadbalancers/id_probe_test.go new file mode 100644 index 00000000000..7e711899c23 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/id_probe_test.go @@ -0,0 +1,327 @@ +package loadbalancers + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ProbeId{} + +func TestNewProbeID(t *testing.T) { + id := NewProbeID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue", "probeValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.LoadBalancerName != "loadBalancerValue" { + t.Fatalf("Expected %q but got %q for Segment 'LoadBalancerName'", id.LoadBalancerName, "loadBalancerValue") + } + + if id.ProbeName != "probeValue" { + t.Fatalf("Expected %q but got %q for Segment 'ProbeName'", id.ProbeName, "probeValue") + } +} + +func TestFormatProbeID(t *testing.T) { + actual := NewProbeID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue", "probeValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/probes/probeValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseProbeID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ProbeId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/probes", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/probes/probeValue", + Expected: &ProbeId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LoadBalancerName: "loadBalancerValue", + ProbeName: "probeValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/probes/probeValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseProbeID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LoadBalancerName != v.Expected.LoadBalancerName { + t.Fatalf("Expected %q but got %q for LoadBalancerName", v.Expected.LoadBalancerName, actual.LoadBalancerName) + } + + if actual.ProbeName != v.Expected.ProbeName { + t.Fatalf("Expected %q but got %q for ProbeName", v.Expected.ProbeName, actual.ProbeName) + } + + } +} + +func TestParseProbeIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ProbeId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/probes", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe/pRoBeS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/probes/probeValue", + Expected: &ProbeId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LoadBalancerName: "loadBalancerValue", + ProbeName: "probeValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/probes/probeValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe/pRoBeS/pRoBeVaLuE", + Expected: &ProbeId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + LoadBalancerName: "lOaDbAlAnCeRvAlUe", + ProbeName: "pRoBeVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe/pRoBeS/pRoBeVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseProbeIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LoadBalancerName != v.Expected.LoadBalancerName { + t.Fatalf("Expected %q but got %q for LoadBalancerName", v.Expected.LoadBalancerName, actual.LoadBalancerName) + } + + if actual.ProbeName != v.Expected.ProbeName { + t.Fatalf("Expected %q but got %q for ProbeName", v.Expected.ProbeName, actual.ProbeName) + } + + } +} + +func TestSegmentsForProbeId(t *testing.T) { + segments := ProbeId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ProbeId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/id_providerloadbalancer.go b/resource-manager/network/2024-01-01/loadbalancers/id_providerloadbalancer.go new file mode 100644 index 00000000000..88ab98c83ad --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/id_providerloadbalancer.go @@ -0,0 +1,130 @@ +package loadbalancers + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ProviderLoadBalancerId{}) +} + +var _ resourceids.ResourceId = &ProviderLoadBalancerId{} + +// ProviderLoadBalancerId is a struct representing the Resource ID for a Provider Load Balancer +type ProviderLoadBalancerId struct { + SubscriptionId string + ResourceGroupName string + LoadBalancerName string +} + +// NewProviderLoadBalancerID returns a new ProviderLoadBalancerId struct +func NewProviderLoadBalancerID(subscriptionId string, resourceGroupName string, loadBalancerName string) ProviderLoadBalancerId { + return ProviderLoadBalancerId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + LoadBalancerName: loadBalancerName, + } +} + +// ParseProviderLoadBalancerID parses 'input' into a ProviderLoadBalancerId +func ParseProviderLoadBalancerID(input string) (*ProviderLoadBalancerId, error) { + parser := resourceids.NewParserFromResourceIdType(&ProviderLoadBalancerId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ProviderLoadBalancerId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseProviderLoadBalancerIDInsensitively parses 'input' case-insensitively into a ProviderLoadBalancerId +// note: this method should only be used for API response data and not user input +func ParseProviderLoadBalancerIDInsensitively(input string) (*ProviderLoadBalancerId, error) { + parser := resourceids.NewParserFromResourceIdType(&ProviderLoadBalancerId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ProviderLoadBalancerId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ProviderLoadBalancerId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.LoadBalancerName, ok = input.Parsed["loadBalancerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "loadBalancerName", input) + } + + return nil +} + +// ValidateProviderLoadBalancerID checks that 'input' can be parsed as a Provider Load Balancer ID +func ValidateProviderLoadBalancerID(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 := ParseProviderLoadBalancerID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Provider Load Balancer ID +func (id ProviderLoadBalancerId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/loadBalancers/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.LoadBalancerName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Provider Load Balancer ID +func (id ProviderLoadBalancerId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLoadBalancers", "loadBalancers", "loadBalancers"), + resourceids.UserSpecifiedSegment("loadBalancerName", "loadBalancerValue"), + } +} + +// String returns a human-readable description of this Provider Load Balancer ID +func (id ProviderLoadBalancerId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Load Balancer Name: %q", id.LoadBalancerName), + } + return fmt.Sprintf("Provider Load Balancer (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/id_providerloadbalancer_test.go b/resource-manager/network/2024-01-01/loadbalancers/id_providerloadbalancer_test.go new file mode 100644 index 00000000000..e721a740f82 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/id_providerloadbalancer_test.go @@ -0,0 +1,282 @@ +package loadbalancers + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ProviderLoadBalancerId{} + +func TestNewProviderLoadBalancerID(t *testing.T) { + id := NewProviderLoadBalancerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.LoadBalancerName != "loadBalancerValue" { + t.Fatalf("Expected %q but got %q for Segment 'LoadBalancerName'", id.LoadBalancerName, "loadBalancerValue") + } +} + +func TestFormatProviderLoadBalancerID(t *testing.T) { + actual := NewProviderLoadBalancerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "loadBalancerValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseProviderLoadBalancerID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ProviderLoadBalancerId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue", + Expected: &ProviderLoadBalancerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LoadBalancerName: "loadBalancerValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseProviderLoadBalancerID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LoadBalancerName != v.Expected.LoadBalancerName { + t.Fatalf("Expected %q but got %q for LoadBalancerName", v.Expected.LoadBalancerName, actual.LoadBalancerName) + } + + } +} + +func TestParseProviderLoadBalancerIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ProviderLoadBalancerId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue", + Expected: &ProviderLoadBalancerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LoadBalancerName: "loadBalancerValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/loadBalancers/loadBalancerValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe", + Expected: &ProviderLoadBalancerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + LoadBalancerName: "lOaDbAlAnCeRvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOaDbAlAnCeRs/lOaDbAlAnCeRvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseProviderLoadBalancerIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LoadBalancerName != v.Expected.LoadBalancerName { + t.Fatalf("Expected %q but got %q for LoadBalancerName", v.Expected.LoadBalancerName, actual.LoadBalancerName) + } + + } +} + +func TestSegmentsForProviderLoadBalancerId(t *testing.T) { + segments := ProviderLoadBalancerId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ProviderLoadBalancerId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_createorupdate.go b/resource-manager/network/2024-01-01/loadbalancers/method_createorupdate.go new file mode 100644 index 00000000000..891038c3395 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_createorupdate.go @@ -0,0 +1,75 @@ +package loadbalancers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *LoadBalancer +} + +// CreateOrUpdate ... +func (c LoadBalancersClient) CreateOrUpdate(ctx context.Context, id ProviderLoadBalancerId, input LoadBalancer) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c LoadBalancersClient) CreateOrUpdateThenPoll(ctx context.Context, id ProviderLoadBalancerId, input LoadBalancer) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_delete.go b/resource-manager/network/2024-01-01/loadbalancers/method_delete.go new file mode 100644 index 00000000000..bf7acc08d90 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_delete.go @@ -0,0 +1,71 @@ +package loadbalancers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c LoadBalancersClient) Delete(ctx context.Context, id ProviderLoadBalancerId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c LoadBalancersClient) DeleteThenPoll(ctx context.Context, id ProviderLoadBalancerId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_get.go b/resource-manager/network/2024-01-01/loadbalancers/method_get.go new file mode 100644 index 00000000000..a183aa5c7ae --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_get.go @@ -0,0 +1,83 @@ +package loadbalancers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *LoadBalancer +} + +type GetOperationOptions struct { + Expand *string +} + +func DefaultGetOperationOptions() GetOperationOptions { + return GetOperationOptions{} +} + +func (o GetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// Get ... +func (c LoadBalancersClient) Get(ctx context.Context, id ProviderLoadBalancerId, options GetOperationOptions) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model LoadBalancer + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_inboundnatrulescreateorupdate.go b/resource-manager/network/2024-01-01/loadbalancers/method_inboundnatrulescreateorupdate.go new file mode 100644 index 00000000000..e052f632164 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_inboundnatrulescreateorupdate.go @@ -0,0 +1,75 @@ +package loadbalancers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulesCreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *InboundNatRule +} + +// InboundNatRulesCreateOrUpdate ... +func (c LoadBalancersClient) InboundNatRulesCreateOrUpdate(ctx context.Context, id InboundNatRuleId, input InboundNatRule) (result InboundNatRulesCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// InboundNatRulesCreateOrUpdateThenPoll performs InboundNatRulesCreateOrUpdate then polls until it's completed +func (c LoadBalancersClient) InboundNatRulesCreateOrUpdateThenPoll(ctx context.Context, id InboundNatRuleId, input InboundNatRule) error { + result, err := c.InboundNatRulesCreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing InboundNatRulesCreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after InboundNatRulesCreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_inboundnatrulesdelete.go b/resource-manager/network/2024-01-01/loadbalancers/method_inboundnatrulesdelete.go new file mode 100644 index 00000000000..2d19b62f757 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_inboundnatrulesdelete.go @@ -0,0 +1,71 @@ +package loadbalancers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulesDeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// InboundNatRulesDelete ... +func (c LoadBalancersClient) InboundNatRulesDelete(ctx context.Context, id InboundNatRuleId) (result InboundNatRulesDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// InboundNatRulesDeleteThenPoll performs InboundNatRulesDelete then polls until it's completed +func (c LoadBalancersClient) InboundNatRulesDeleteThenPoll(ctx context.Context, id InboundNatRuleId) error { + result, err := c.InboundNatRulesDelete(ctx, id) + if err != nil { + return fmt.Errorf("performing InboundNatRulesDelete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after InboundNatRulesDelete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_inboundnatrulesget.go b/resource-manager/network/2024-01-01/loadbalancers/method_inboundnatrulesget.go new file mode 100644 index 00000000000..06666b1d382 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_inboundnatrulesget.go @@ -0,0 +1,83 @@ +package loadbalancers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulesGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *InboundNatRule +} + +type InboundNatRulesGetOperationOptions struct { + Expand *string +} + +func DefaultInboundNatRulesGetOperationOptions() InboundNatRulesGetOperationOptions { + return InboundNatRulesGetOperationOptions{} +} + +func (o InboundNatRulesGetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o InboundNatRulesGetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o InboundNatRulesGetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// InboundNatRulesGet ... +func (c LoadBalancersClient) InboundNatRulesGet(ctx context.Context, id InboundNatRuleId, options InboundNatRulesGetOperationOptions) (result InboundNatRulesGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model InboundNatRule + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_inboundnatruleslist.go b/resource-manager/network/2024-01-01/loadbalancers/method_inboundnatruleslist.go new file mode 100644 index 00000000000..501c965bbf1 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_inboundnatruleslist.go @@ -0,0 +1,92 @@ +package loadbalancers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulesListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]InboundNatRule +} + +type InboundNatRulesListCompleteResult struct { + LatestHttpResponse *http.Response + Items []InboundNatRule +} + +// InboundNatRulesList ... +func (c LoadBalancersClient) InboundNatRulesList(ctx context.Context, id ProviderLoadBalancerId) (result InboundNatRulesListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/inboundNatRules", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]InboundNatRule `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// InboundNatRulesListComplete retrieves all the results into a single object +func (c LoadBalancersClient) InboundNatRulesListComplete(ctx context.Context, id ProviderLoadBalancerId) (InboundNatRulesListCompleteResult, error) { + return c.InboundNatRulesListCompleteMatchingPredicate(ctx, id, InboundNatRuleOperationPredicate{}) +} + +// InboundNatRulesListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c LoadBalancersClient) InboundNatRulesListCompleteMatchingPredicate(ctx context.Context, id ProviderLoadBalancerId, predicate InboundNatRuleOperationPredicate) (result InboundNatRulesListCompleteResult, err error) { + items := make([]InboundNatRule, 0) + + resp, err := c.InboundNatRulesList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = InboundNatRulesListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_list.go b/resource-manager/network/2024-01-01/loadbalancers/method_list.go new file mode 100644 index 00000000000..05419112689 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_list.go @@ -0,0 +1,93 @@ +package loadbalancers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]LoadBalancer +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []LoadBalancer +} + +// List ... +func (c LoadBalancersClient) List(ctx context.Context, id commonids.ResourceGroupId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/loadBalancers", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]LoadBalancer `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c LoadBalancersClient) ListComplete(ctx context.Context, id commonids.ResourceGroupId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, LoadBalancerOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c LoadBalancersClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate LoadBalancerOperationPredicate) (result ListCompleteResult, err error) { + items := make([]LoadBalancer, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_listall.go b/resource-manager/network/2024-01-01/loadbalancers/method_listall.go new file mode 100644 index 00000000000..25de9239c7f --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_listall.go @@ -0,0 +1,93 @@ +package loadbalancers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAllOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]LoadBalancer +} + +type ListAllCompleteResult struct { + LatestHttpResponse *http.Response + Items []LoadBalancer +} + +// ListAll ... +func (c LoadBalancersClient) ListAll(ctx context.Context, id commonids.SubscriptionId) (result ListAllOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/loadBalancers", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]LoadBalancer `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListAllComplete retrieves all the results into a single object +func (c LoadBalancersClient) ListAllComplete(ctx context.Context, id commonids.SubscriptionId) (ListAllCompleteResult, error) { + return c.ListAllCompleteMatchingPredicate(ctx, id, LoadBalancerOperationPredicate{}) +} + +// ListAllCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c LoadBalancersClient) ListAllCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate LoadBalancerOperationPredicate) (result ListAllCompleteResult, err error) { + items := make([]LoadBalancer, 0) + + resp, err := c.ListAll(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListAllCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_listinboundnatruleportmappings.go b/resource-manager/network/2024-01-01/loadbalancers/method_listinboundnatruleportmappings.go new file mode 100644 index 00000000000..967f42debed --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_listinboundnatruleportmappings.go @@ -0,0 +1,75 @@ +package loadbalancers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListInboundNatRulePortMappingsOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *BackendAddressInboundNatRulePortMappings +} + +// ListInboundNatRulePortMappings ... +func (c LoadBalancersClient) ListInboundNatRulePortMappings(ctx context.Context, id BackendAddressPoolId, input QueryInboundNatRulePortMappingRequest) (result ListInboundNatRulePortMappingsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/queryInboundNatRulePortMapping", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// ListInboundNatRulePortMappingsThenPoll performs ListInboundNatRulePortMappings then polls until it's completed +func (c LoadBalancersClient) ListInboundNatRulePortMappingsThenPoll(ctx context.Context, id BackendAddressPoolId, input QueryInboundNatRulePortMappingRequest) error { + result, err := c.ListInboundNatRulePortMappings(ctx, id, input) + if err != nil { + return fmt.Errorf("performing ListInboundNatRulePortMappings: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after ListInboundNatRulePortMappings: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerbackendaddresspoolscreateorupdate.go b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerbackendaddresspoolscreateorupdate.go new file mode 100644 index 00000000000..3f34a765cbf --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerbackendaddresspoolscreateorupdate.go @@ -0,0 +1,75 @@ +package loadbalancers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPoolsCreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *BackendAddressPool +} + +// LoadBalancerBackendAddressPoolsCreateOrUpdate ... +func (c LoadBalancersClient) LoadBalancerBackendAddressPoolsCreateOrUpdate(ctx context.Context, id LoadBalancerBackendAddressPoolId, input BackendAddressPool) (result LoadBalancerBackendAddressPoolsCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// LoadBalancerBackendAddressPoolsCreateOrUpdateThenPoll performs LoadBalancerBackendAddressPoolsCreateOrUpdate then polls until it's completed +func (c LoadBalancersClient) LoadBalancerBackendAddressPoolsCreateOrUpdateThenPoll(ctx context.Context, id LoadBalancerBackendAddressPoolId, input BackendAddressPool) error { + result, err := c.LoadBalancerBackendAddressPoolsCreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing LoadBalancerBackendAddressPoolsCreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after LoadBalancerBackendAddressPoolsCreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerbackendaddresspoolsdelete.go b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerbackendaddresspoolsdelete.go new file mode 100644 index 00000000000..748b8b97657 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerbackendaddresspoolsdelete.go @@ -0,0 +1,71 @@ +package loadbalancers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPoolsDeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// LoadBalancerBackendAddressPoolsDelete ... +func (c LoadBalancersClient) LoadBalancerBackendAddressPoolsDelete(ctx context.Context, id LoadBalancerBackendAddressPoolId) (result LoadBalancerBackendAddressPoolsDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// LoadBalancerBackendAddressPoolsDeleteThenPoll performs LoadBalancerBackendAddressPoolsDelete then polls until it's completed +func (c LoadBalancersClient) LoadBalancerBackendAddressPoolsDeleteThenPoll(ctx context.Context, id LoadBalancerBackendAddressPoolId) error { + result, err := c.LoadBalancerBackendAddressPoolsDelete(ctx, id) + if err != nil { + return fmt.Errorf("performing LoadBalancerBackendAddressPoolsDelete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after LoadBalancerBackendAddressPoolsDelete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerbackendaddresspoolsget.go b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerbackendaddresspoolsget.go new file mode 100644 index 00000000000..96451e22451 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerbackendaddresspoolsget.go @@ -0,0 +1,54 @@ +package loadbalancers + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPoolsGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *BackendAddressPool +} + +// LoadBalancerBackendAddressPoolsGet ... +func (c LoadBalancersClient) LoadBalancerBackendAddressPoolsGet(ctx context.Context, id LoadBalancerBackendAddressPoolId) (result LoadBalancerBackendAddressPoolsGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model BackendAddressPool + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerbackendaddresspoolslist.go b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerbackendaddresspoolslist.go new file mode 100644 index 00000000000..1f9a88ad95f --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerbackendaddresspoolslist.go @@ -0,0 +1,92 @@ +package loadbalancers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPoolsListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]BackendAddressPool +} + +type LoadBalancerBackendAddressPoolsListCompleteResult struct { + LatestHttpResponse *http.Response + Items []BackendAddressPool +} + +// LoadBalancerBackendAddressPoolsList ... +func (c LoadBalancersClient) LoadBalancerBackendAddressPoolsList(ctx context.Context, id ProviderLoadBalancerId) (result LoadBalancerBackendAddressPoolsListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/backendAddressPools", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]BackendAddressPool `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// LoadBalancerBackendAddressPoolsListComplete retrieves all the results into a single object +func (c LoadBalancersClient) LoadBalancerBackendAddressPoolsListComplete(ctx context.Context, id ProviderLoadBalancerId) (LoadBalancerBackendAddressPoolsListCompleteResult, error) { + return c.LoadBalancerBackendAddressPoolsListCompleteMatchingPredicate(ctx, id, BackendAddressPoolOperationPredicate{}) +} + +// LoadBalancerBackendAddressPoolsListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c LoadBalancersClient) LoadBalancerBackendAddressPoolsListCompleteMatchingPredicate(ctx context.Context, id ProviderLoadBalancerId, predicate BackendAddressPoolOperationPredicate) (result LoadBalancerBackendAddressPoolsListCompleteResult, err error) { + items := make([]BackendAddressPool, 0) + + resp, err := c.LoadBalancerBackendAddressPoolsList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = LoadBalancerBackendAddressPoolsListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerfrontendipconfigurationsget.go b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerfrontendipconfigurationsget.go new file mode 100644 index 00000000000..eeb2cc8b0ed --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerfrontendipconfigurationsget.go @@ -0,0 +1,54 @@ +package loadbalancers + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerFrontendIPConfigurationsGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *FrontendIPConfiguration +} + +// LoadBalancerFrontendIPConfigurationsGet ... +func (c LoadBalancersClient) LoadBalancerFrontendIPConfigurationsGet(ctx context.Context, id FrontendIPConfigurationId) (result LoadBalancerFrontendIPConfigurationsGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model FrontendIPConfiguration + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerfrontendipconfigurationslist.go b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerfrontendipconfigurationslist.go new file mode 100644 index 00000000000..976d076cacb --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerfrontendipconfigurationslist.go @@ -0,0 +1,92 @@ +package loadbalancers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerFrontendIPConfigurationsListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]FrontendIPConfiguration +} + +type LoadBalancerFrontendIPConfigurationsListCompleteResult struct { + LatestHttpResponse *http.Response + Items []FrontendIPConfiguration +} + +// LoadBalancerFrontendIPConfigurationsList ... +func (c LoadBalancersClient) LoadBalancerFrontendIPConfigurationsList(ctx context.Context, id ProviderLoadBalancerId) (result LoadBalancerFrontendIPConfigurationsListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/frontendIPConfigurations", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]FrontendIPConfiguration `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// LoadBalancerFrontendIPConfigurationsListComplete retrieves all the results into a single object +func (c LoadBalancersClient) LoadBalancerFrontendIPConfigurationsListComplete(ctx context.Context, id ProviderLoadBalancerId) (LoadBalancerFrontendIPConfigurationsListCompleteResult, error) { + return c.LoadBalancerFrontendIPConfigurationsListCompleteMatchingPredicate(ctx, id, FrontendIPConfigurationOperationPredicate{}) +} + +// LoadBalancerFrontendIPConfigurationsListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c LoadBalancersClient) LoadBalancerFrontendIPConfigurationsListCompleteMatchingPredicate(ctx context.Context, id ProviderLoadBalancerId, predicate FrontendIPConfigurationOperationPredicate) (result LoadBalancerFrontendIPConfigurationsListCompleteResult, err error) { + items := make([]FrontendIPConfiguration, 0) + + resp, err := c.LoadBalancerFrontendIPConfigurationsList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = LoadBalancerFrontendIPConfigurationsListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerloadbalancingrulesget.go b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerloadbalancingrulesget.go new file mode 100644 index 00000000000..265ec20a693 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerloadbalancingrulesget.go @@ -0,0 +1,54 @@ +package loadbalancers + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerLoadBalancingRulesGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *LoadBalancingRule +} + +// LoadBalancerLoadBalancingRulesGet ... +func (c LoadBalancersClient) LoadBalancerLoadBalancingRulesGet(ctx context.Context, id LoadBalancingRuleId) (result LoadBalancerLoadBalancingRulesGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model LoadBalancingRule + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerloadbalancingruleslist.go b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerloadbalancingruleslist.go new file mode 100644 index 00000000000..be23a6c72db --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerloadbalancingruleslist.go @@ -0,0 +1,92 @@ +package loadbalancers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerLoadBalancingRulesListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]LoadBalancingRule +} + +type LoadBalancerLoadBalancingRulesListCompleteResult struct { + LatestHttpResponse *http.Response + Items []LoadBalancingRule +} + +// LoadBalancerLoadBalancingRulesList ... +func (c LoadBalancersClient) LoadBalancerLoadBalancingRulesList(ctx context.Context, id ProviderLoadBalancerId) (result LoadBalancerLoadBalancingRulesListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/loadBalancingRules", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]LoadBalancingRule `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// LoadBalancerLoadBalancingRulesListComplete retrieves all the results into a single object +func (c LoadBalancersClient) LoadBalancerLoadBalancingRulesListComplete(ctx context.Context, id ProviderLoadBalancerId) (LoadBalancerLoadBalancingRulesListCompleteResult, error) { + return c.LoadBalancerLoadBalancingRulesListCompleteMatchingPredicate(ctx, id, LoadBalancingRuleOperationPredicate{}) +} + +// LoadBalancerLoadBalancingRulesListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c LoadBalancersClient) LoadBalancerLoadBalancingRulesListCompleteMatchingPredicate(ctx context.Context, id ProviderLoadBalancerId, predicate LoadBalancingRuleOperationPredicate) (result LoadBalancerLoadBalancingRulesListCompleteResult, err error) { + items := make([]LoadBalancingRule, 0) + + resp, err := c.LoadBalancerLoadBalancingRulesList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = LoadBalancerLoadBalancingRulesListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancernetworkinterfaceslist.go b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancernetworkinterfaceslist.go new file mode 100644 index 00000000000..5786d229c03 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancernetworkinterfaceslist.go @@ -0,0 +1,92 @@ +package loadbalancers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerNetworkInterfacesListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NetworkInterface +} + +type LoadBalancerNetworkInterfacesListCompleteResult struct { + LatestHttpResponse *http.Response + Items []NetworkInterface +} + +// LoadBalancerNetworkInterfacesList ... +func (c LoadBalancersClient) LoadBalancerNetworkInterfacesList(ctx context.Context, id ProviderLoadBalancerId) (result LoadBalancerNetworkInterfacesListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/networkInterfaces", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NetworkInterface `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// LoadBalancerNetworkInterfacesListComplete retrieves all the results into a single object +func (c LoadBalancersClient) LoadBalancerNetworkInterfacesListComplete(ctx context.Context, id ProviderLoadBalancerId) (LoadBalancerNetworkInterfacesListCompleteResult, error) { + return c.LoadBalancerNetworkInterfacesListCompleteMatchingPredicate(ctx, id, NetworkInterfaceOperationPredicate{}) +} + +// LoadBalancerNetworkInterfacesListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c LoadBalancersClient) LoadBalancerNetworkInterfacesListCompleteMatchingPredicate(ctx context.Context, id ProviderLoadBalancerId, predicate NetworkInterfaceOperationPredicate) (result LoadBalancerNetworkInterfacesListCompleteResult, err error) { + items := make([]NetworkInterface, 0) + + resp, err := c.LoadBalancerNetworkInterfacesList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = LoadBalancerNetworkInterfacesListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_loadbalanceroutboundrulesget.go b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalanceroutboundrulesget.go new file mode 100644 index 00000000000..5e221d46329 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalanceroutboundrulesget.go @@ -0,0 +1,54 @@ +package loadbalancers + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerOutboundRulesGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *OutboundRule +} + +// LoadBalancerOutboundRulesGet ... +func (c LoadBalancersClient) LoadBalancerOutboundRulesGet(ctx context.Context, id OutboundRuleId) (result LoadBalancerOutboundRulesGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model OutboundRule + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_loadbalanceroutboundruleslist.go b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalanceroutboundruleslist.go new file mode 100644 index 00000000000..11f87c18d13 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalanceroutboundruleslist.go @@ -0,0 +1,92 @@ +package loadbalancers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerOutboundRulesListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]OutboundRule +} + +type LoadBalancerOutboundRulesListCompleteResult struct { + LatestHttpResponse *http.Response + Items []OutboundRule +} + +// LoadBalancerOutboundRulesList ... +func (c LoadBalancersClient) LoadBalancerOutboundRulesList(ctx context.Context, id ProviderLoadBalancerId) (result LoadBalancerOutboundRulesListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/outboundRules", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]OutboundRule `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// LoadBalancerOutboundRulesListComplete retrieves all the results into a single object +func (c LoadBalancersClient) LoadBalancerOutboundRulesListComplete(ctx context.Context, id ProviderLoadBalancerId) (LoadBalancerOutboundRulesListCompleteResult, error) { + return c.LoadBalancerOutboundRulesListCompleteMatchingPredicate(ctx, id, OutboundRuleOperationPredicate{}) +} + +// LoadBalancerOutboundRulesListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c LoadBalancersClient) LoadBalancerOutboundRulesListCompleteMatchingPredicate(ctx context.Context, id ProviderLoadBalancerId, predicate OutboundRuleOperationPredicate) (result LoadBalancerOutboundRulesListCompleteResult, err error) { + items := make([]OutboundRule, 0) + + resp, err := c.LoadBalancerOutboundRulesList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = LoadBalancerOutboundRulesListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerprobesget.go b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerprobesget.go new file mode 100644 index 00000000000..2901255109e --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerprobesget.go @@ -0,0 +1,54 @@ +package loadbalancers + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerProbesGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *Probe +} + +// LoadBalancerProbesGet ... +func (c LoadBalancersClient) LoadBalancerProbesGet(ctx context.Context, id ProbeId) (result LoadBalancerProbesGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model Probe + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerprobeslist.go b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerprobeslist.go new file mode 100644 index 00000000000..5146ba5bf79 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_loadbalancerprobeslist.go @@ -0,0 +1,92 @@ +package loadbalancers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerProbesListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]Probe +} + +type LoadBalancerProbesListCompleteResult struct { + LatestHttpResponse *http.Response + Items []Probe +} + +// LoadBalancerProbesList ... +func (c LoadBalancersClient) LoadBalancerProbesList(ctx context.Context, id ProviderLoadBalancerId) (result LoadBalancerProbesListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/probes", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]Probe `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// LoadBalancerProbesListComplete retrieves all the results into a single object +func (c LoadBalancersClient) LoadBalancerProbesListComplete(ctx context.Context, id ProviderLoadBalancerId) (LoadBalancerProbesListCompleteResult, error) { + return c.LoadBalancerProbesListCompleteMatchingPredicate(ctx, id, ProbeOperationPredicate{}) +} + +// LoadBalancerProbesListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c LoadBalancersClient) LoadBalancerProbesListCompleteMatchingPredicate(ctx context.Context, id ProviderLoadBalancerId, predicate ProbeOperationPredicate) (result LoadBalancerProbesListCompleteResult, err error) { + items := make([]Probe, 0) + + resp, err := c.LoadBalancerProbesList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = LoadBalancerProbesListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_migratetoipbased.go b/resource-manager/network/2024-01-01/loadbalancers/method_migratetoipbased.go new file mode 100644 index 00000000000..249adebb4a8 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_migratetoipbased.go @@ -0,0 +1,59 @@ +package loadbalancers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type MigrateToIPBasedOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *MigratedPools +} + +// MigrateToIPBased ... +func (c LoadBalancersClient) MigrateToIPBased(ctx context.Context, id LoadBalancerId, input MigrateLoadBalancerToIPBasedRequest) (result MigrateToIPBasedOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/migrateToIpBased", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model MigratedPools + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_swappublicipaddresses.go b/resource-manager/network/2024-01-01/loadbalancers/method_swappublicipaddresses.go new file mode 100644 index 00000000000..ea34d09163d --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_swappublicipaddresses.go @@ -0,0 +1,74 @@ +package loadbalancers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SwapPublicIPAddressesOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// SwapPublicIPAddresses ... +func (c LoadBalancersClient) SwapPublicIPAddresses(ctx context.Context, id LocationId, input LoadBalancerVipSwapRequest) (result SwapPublicIPAddressesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/setLoadBalancerFrontendPublicIpAddresses", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// SwapPublicIPAddressesThenPoll performs SwapPublicIPAddresses then polls until it's completed +func (c LoadBalancersClient) SwapPublicIPAddressesThenPoll(ctx context.Context, id LocationId, input LoadBalancerVipSwapRequest) error { + result, err := c.SwapPublicIPAddresses(ctx, id, input) + if err != nil { + return fmt.Errorf("performing SwapPublicIPAddresses: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after SwapPublicIPAddresses: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/method_updatetags.go b/resource-manager/network/2024-01-01/loadbalancers/method_updatetags.go new file mode 100644 index 00000000000..dd8a4561326 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/method_updatetags.go @@ -0,0 +1,58 @@ +package loadbalancers + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *LoadBalancer +} + +// UpdateTags ... +func (c LoadBalancersClient) UpdateTags(ctx context.Context, id ProviderLoadBalancerId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model LoadBalancer + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_applicationgatewaybackendaddress.go b/resource-manager/network/2024-01-01/loadbalancers/model_applicationgatewaybackendaddress.go new file mode 100644 index 00000000000..ba8ecb73101 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_applicationgatewaybackendaddress.go @@ -0,0 +1,9 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddress struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_applicationgatewaybackendaddresspool.go b/resource-manager/network/2024-01-01/loadbalancers/model_applicationgatewaybackendaddresspool.go new file mode 100644 index 00000000000..ae525920084 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_applicationgatewaybackendaddresspool.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_applicationgatewaybackendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_applicationgatewaybackendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..339eab474ad --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_applicationgatewaybackendaddresspoolpropertiesformat.go @@ -0,0 +1,10 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPoolPropertiesFormat struct { + BackendAddresses *[]ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"` + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_applicationgatewayipconfiguration.go b/resource-manager/network/2024-01-01/loadbalancers/model_applicationgatewayipconfiguration.go new file mode 100644 index 00000000000..85af1e99371 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_applicationgatewayipconfiguration.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_applicationgatewayipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_applicationgatewayipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..ba22dcca046 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_applicationgatewayipconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/loadbalancers/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..a39478d2c00 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..6ab25279d91 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_backendaddressinboundnatruleportmappings.go b/resource-manager/network/2024-01-01/loadbalancers/model_backendaddressinboundnatruleportmappings.go new file mode 100644 index 00000000000..4e124f8b471 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_backendaddressinboundnatruleportmappings.go @@ -0,0 +1,8 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressInboundNatRulePortMappings struct { + InboundNatRulePortMappings *[]InboundNatRulePortMapping `json:"inboundNatRulePortMappings,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_backendaddresspool.go b/resource-manager/network/2024-01-01/loadbalancers/model_backendaddresspool.go new file mode 100644 index 00000000000..f21aa313263 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_backendaddresspool.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_backendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_backendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..6ce42b19e79 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_backendaddresspoolpropertiesformat.go @@ -0,0 +1,19 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPoolPropertiesFormat struct { + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + DrainPeriodInSeconds *int64 `json:"drainPeriodInSeconds,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancerBackendAddresses *[]LoadBalancerBackendAddress `json:"loadBalancerBackendAddresses,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + Location *string `json:"location,omitempty"` + OutboundRule *SubResource `json:"outboundRule,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SyncMode *SyncMode `json:"syncMode,omitempty"` + TunnelInterfaces *[]GatewayLoadBalancerTunnelInterface `json:"tunnelInterfaces,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_customdnsconfigpropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_customdnsconfigpropertiesformat.go new file mode 100644 index 00000000000..bdb38484c9a --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_customdnsconfigpropertiesformat.go @@ -0,0 +1,9 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomDnsConfigPropertiesFormat struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_ddossettings.go b/resource-manager/network/2024-01-01/loadbalancers/model_ddossettings.go new file mode 100644 index 00000000000..49f08256215 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_ddossettings.go @@ -0,0 +1,9 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettings struct { + DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"` + ProtectionMode *DdosSettingsProtectionMode `json:"protectionMode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_delegation.go b/resource-manager/network/2024-01-01/loadbalancers/model_delegation.go new file mode 100644 index 00000000000..ca1a156ae30 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_delegation.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Delegation struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceDelegationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_flowlog.go b/resource-manager/network/2024-01-01/loadbalancers/model_flowlog.go new file mode 100644 index 00000000000..dff0db44f47 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_flowlog.go @@ -0,0 +1,19 @@ +package loadbalancers + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLog struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FlowLogPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/loadbalancers/model_flowlogformatparameters.go new file mode 100644 index 00000000000..fa0c6c067e8 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_flowlogpropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_flowlogpropertiesformat.go new file mode 100644 index 00000000000..4c800ad5f68 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_flowlogpropertiesformat.go @@ -0,0 +1,15 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogPropertiesFormat struct { + Enabled *bool `json:"enabled,omitempty"` + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` + TargetResourceGuid *string `json:"targetResourceGuid,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_frontendipconfiguration.go b/resource-manager/network/2024-01-01/loadbalancers/model_frontendipconfiguration.go new file mode 100644 index 00000000000..aee3ea162e5 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_frontendipconfiguration.go @@ -0,0 +1,17 @@ +package loadbalancers + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_frontendipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_frontendipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..3ec56d01ffe --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_frontendipconfigurationpropertiesformat.go @@ -0,0 +1,19 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfigurationPropertiesFormat struct { + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + InboundNatPools *[]SubResource `json:"inboundNatPools,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_gatewayloadbalancertunnelinterface.go b/resource-manager/network/2024-01-01/loadbalancers/model_gatewayloadbalancertunnelinterface.go new file mode 100644 index 00000000000..0b58f57fe92 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_gatewayloadbalancertunnelinterface.go @@ -0,0 +1,11 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayLoadBalancerTunnelInterface struct { + Identifier *int64 `json:"identifier,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *GatewayLoadBalancerTunnelProtocol `json:"protocol,omitempty"` + Type *GatewayLoadBalancerTunnelInterfaceType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_inboundnatpool.go b/resource-manager/network/2024-01-01/loadbalancers/model_inboundnatpool.go new file mode 100644 index 00000000000..d89dc6f5777 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_inboundnatpool.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundNatPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_inboundnatpoolpropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_inboundnatpoolpropertiesformat.go new file mode 100644 index 00000000000..df78a1ed77a --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_inboundnatpoolpropertiesformat.go @@ -0,0 +1,16 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatPoolPropertiesFormat struct { + BackendPort int64 `json:"backendPort"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPortRangeEnd int64 `json:"frontendPortRangeEnd"` + FrontendPortRangeStart int64 `json:"frontendPortRangeStart"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol TransportProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_inboundnatrule.go b/resource-manager/network/2024-01-01/loadbalancers/model_inboundnatrule.go new file mode 100644 index 00000000000..adb4dbeea97 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_inboundnatrule.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundNatRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_inboundnatruleportmapping.go b/resource-manager/network/2024-01-01/loadbalancers/model_inboundnatruleportmapping.go new file mode 100644 index 00000000000..f2e3789517f --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_inboundnatruleportmapping.go @@ -0,0 +1,11 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulePortMapping struct { + BackendPort *int64 `json:"backendPort,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + InboundNatRuleName *string `json:"inboundNatRuleName,omitempty"` + Protocol *TransportProtocol `json:"protocol,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_inboundnatrulepropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_inboundnatrulepropertiesformat.go new file mode 100644 index 00000000000..3e2eb61ad03 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_inboundnatrulepropertiesformat.go @@ -0,0 +1,19 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendIPConfiguration *NetworkInterfaceIPConfiguration `json:"backendIPConfiguration,omitempty"` + BackendPort *int64 `json:"backendPort,omitempty"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + FrontendPortRangeEnd *int64 `json:"frontendPortRangeEnd,omitempty"` + FrontendPortRangeStart *int64 `json:"frontendPortRangeStart,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol *TransportProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_ipconfiguration.go b/resource-manager/network/2024-01-01/loadbalancers/model_ipconfiguration.go new file mode 100644 index 00000000000..8d6200049ae --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_ipconfiguration.go @@ -0,0 +1,11 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_ipconfigurationprofile.go b/resource-manager/network/2024-01-01/loadbalancers/model_ipconfigurationprofile.go new file mode 100644 index 00000000000..96c0f6e1f83 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_ipconfigurationprofile.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationProfilePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_ipconfigurationprofilepropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_ipconfigurationprofilepropertiesformat.go new file mode 100644 index 00000000000..42790e1043c --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_ipconfigurationprofilepropertiesformat.go @@ -0,0 +1,9 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfilePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_ipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_ipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..4d288c5dd29 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_ipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_iptag.go b/resource-manager/network/2024-01-01/loadbalancers/model_iptag.go new file mode 100644 index 00000000000..bf32e63b59f --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_iptag.go @@ -0,0 +1,9 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPTag struct { + IPTagType *string `json:"ipTagType,omitempty"` + Tag *string `json:"tag,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancer.go b/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancer.go new file mode 100644 index 00000000000..76572914bb6 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancer.go @@ -0,0 +1,20 @@ +package loadbalancers + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancer struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *LoadBalancerPropertiesFormat `json:"properties,omitempty"` + Sku *LoadBalancerSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancerbackendaddress.go b/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancerbackendaddress.go new file mode 100644 index 00000000000..c85572e3101 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancerbackendaddress.go @@ -0,0 +1,9 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddress struct { + Name *string `json:"name,omitempty"` + Properties *LoadBalancerBackendAddressPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancerbackendaddresspropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancerbackendaddresspropertiesformat.go new file mode 100644 index 00000000000..92e1899840b --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancerbackendaddresspropertiesformat.go @@ -0,0 +1,14 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPropertiesFormat struct { + AdminState *LoadBalancerBackendAddressAdminState `json:"adminState,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + InboundNatRulesPortMapping *[]NatRulePortMapping `json:"inboundNatRulesPortMapping,omitempty"` + LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIPConfiguration,omitempty"` + NetworkInterfaceIPConfiguration *SubResource `json:"networkInterfaceIPConfiguration,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancerpropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancerpropertiesformat.go new file mode 100644 index 00000000000..7ffa00517b8 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancerpropertiesformat.go @@ -0,0 +1,16 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerPropertiesFormat struct { + BackendAddressPools *[]BackendAddressPool `json:"backendAddressPools,omitempty"` + FrontendIPConfigurations *[]FrontendIPConfiguration `json:"frontendIPConfigurations,omitempty"` + InboundNatPools *[]InboundNatPool `json:"inboundNatPools,omitempty"` + InboundNatRules *[]InboundNatRule `json:"inboundNatRules,omitempty"` + LoadBalancingRules *[]LoadBalancingRule `json:"loadBalancingRules,omitempty"` + OutboundRules *[]OutboundRule `json:"outboundRules,omitempty"` + Probes *[]Probe `json:"probes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancersku.go b/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancersku.go new file mode 100644 index 00000000000..1575eae78c5 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancersku.go @@ -0,0 +1,9 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerSku struct { + Name *LoadBalancerSkuName `json:"name,omitempty"` + Tier *LoadBalancerSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancervipswaprequest.go b/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancervipswaprequest.go new file mode 100644 index 00000000000..8bea43b7a0d --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancervipswaprequest.go @@ -0,0 +1,8 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerVipSwapRequest struct { + FrontendIPConfigurations *[]LoadBalancerVipSwapRequestFrontendIPConfiguration `json:"frontendIPConfigurations,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancervipswaprequestfrontendipconfiguration.go b/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancervipswaprequestfrontendipconfiguration.go new file mode 100644 index 00000000000..fd4e68458a9 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancervipswaprequestfrontendipconfiguration.go @@ -0,0 +1,9 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerVipSwapRequestFrontendIPConfiguration struct { + Id *string `json:"id,omitempty"` + Properties *LoadBalancerVipSwapRequestFrontendIPConfigurationProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancervipswaprequestfrontendipconfigurationproperties.go b/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancervipswaprequestfrontendipconfigurationproperties.go new file mode 100644 index 00000000000..56e8c5d7e4e --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancervipswaprequestfrontendipconfigurationproperties.go @@ -0,0 +1,8 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerVipSwapRequestFrontendIPConfigurationProperties struct { + PublicIPAddress *SubResource `json:"publicIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancingrule.go b/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancingrule.go new file mode 100644 index 00000000000..ff651417937 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancingrule.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancingRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *LoadBalancingRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancingrulepropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancingrulepropertiesformat.go new file mode 100644 index 00000000000..4b1908352dd --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_loadbalancingrulepropertiesformat.go @@ -0,0 +1,20 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancingRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendAddressPools *[]SubResource `json:"backendAddressPools,omitempty"` + BackendPort *int64 `json:"backendPort,omitempty"` + DisableOutboundSnat *bool `json:"disableOutboundSnat,omitempty"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort int64 `json:"frontendPort"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + LoadDistribution *LoadDistribution `json:"loadDistribution,omitempty"` + Probe *SubResource `json:"probe,omitempty"` + Protocol TransportProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_migratedpools.go b/resource-manager/network/2024-01-01/loadbalancers/model_migratedpools.go new file mode 100644 index 00000000000..043a11e0729 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_migratedpools.go @@ -0,0 +1,8 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type MigratedPools struct { + MigratedPools *[]string `json:"migratedPools,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_migrateloadbalancertoipbasedrequest.go b/resource-manager/network/2024-01-01/loadbalancers/model_migrateloadbalancertoipbasedrequest.go new file mode 100644 index 00000000000..7b22e45af7d --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_migrateloadbalancertoipbasedrequest.go @@ -0,0 +1,8 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type MigrateLoadBalancerToIPBasedRequest struct { + Pools *[]string `json:"pools,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_natgateway.go b/resource-manager/network/2024-01-01/loadbalancers/model_natgateway.go new file mode 100644 index 00000000000..0eb10d867d8 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_natgateway.go @@ -0,0 +1,20 @@ +package loadbalancers + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"` + Sku *NatGatewaySku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_natgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_natgatewaypropertiesformat.go new file mode 100644 index 00000000000..4903d67cdc0 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_natgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayPropertiesFormat struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]SubResource `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_natgatewaysku.go b/resource-manager/network/2024-01-01/loadbalancers/model_natgatewaysku.go new file mode 100644 index 00000000000..d503f4fbbfb --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_natgatewaysku.go @@ -0,0 +1,8 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySku struct { + Name *NatGatewaySkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_natruleportmapping.go b/resource-manager/network/2024-01-01/loadbalancers/model_natruleportmapping.go new file mode 100644 index 00000000000..d0afcac5584 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_natruleportmapping.go @@ -0,0 +1,10 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulePortMapping struct { + BackendPort *int64 `json:"backendPort,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + InboundNatRuleName *string `json:"inboundNatRuleName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_networkinterface.go b/resource-manager/network/2024-01-01/loadbalancers/model_networkinterface.go new file mode 100644 index 00000000000..3a7fc490368 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_networkinterface.go @@ -0,0 +1,19 @@ +package loadbalancers + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterface struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfacePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_networkinterfacednssettings.go b/resource-manager/network/2024-01-01/loadbalancers/model_networkinterfacednssettings.go new file mode 100644 index 00000000000..91dbc787d0a --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_networkinterfacednssettings.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceDnsSettings struct { + AppliedDnsServers *[]string `json:"appliedDnsServers,omitempty"` + DnsServers *[]string `json:"dnsServers,omitempty"` + InternalDnsNameLabel *string `json:"internalDnsNameLabel,omitempty"` + InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty"` + InternalFqdn *string `json:"internalFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_networkinterfaceipconfiguration.go b/resource-manager/network/2024-01-01/loadbalancers/model_networkinterfaceipconfiguration.go new file mode 100644 index 00000000000..60978bfaf56 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_networkinterfaceipconfiguration.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go b/resource-manager/network/2024-01-01/loadbalancers/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go new file mode 100644 index 00000000000..6dcb491a3d7 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go @@ -0,0 +1,10 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties struct { + Fqdns *[]string `json:"fqdns,omitempty"` + GroupId *string `json:"groupId,omitempty"` + RequiredMemberName *string `json:"requiredMemberName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_networkinterfaceipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_networkinterfaceipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..a7d7345eb3e --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_networkinterfaceipconfigurationpropertiesformat.go @@ -0,0 +1,22 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPropertiesFormat struct { + ApplicationGatewayBackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"applicationGatewayBackendAddressPools,omitempty"` + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + LoadBalancerBackendAddressPools *[]BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"` + LoadBalancerInboundNatRules *[]InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressPrefixLength *int64 `json:"privateIPAddressPrefixLength,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + PrivateLinkConnectionProperties *NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties `json:"privateLinkConnectionProperties,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` + VirtualNetworkTaps *[]VirtualNetworkTap `json:"virtualNetworkTaps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_networkinterfacepropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_networkinterfacepropertiesformat.go new file mode 100644 index 00000000000..2923295fe73 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_networkinterfacepropertiesformat.go @@ -0,0 +1,29 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfacePropertiesFormat struct { + AuxiliaryMode *NetworkInterfaceAuxiliaryMode `json:"auxiliaryMode,omitempty"` + AuxiliarySku *NetworkInterfaceAuxiliarySku `json:"auxiliarySku,omitempty"` + DisableTcpStateTracking *bool `json:"disableTcpStateTracking,omitempty"` + DnsSettings *NetworkInterfaceDnsSettings `json:"dnsSettings,omitempty"` + DscpConfiguration *SubResource `json:"dscpConfiguration,omitempty"` + EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"` + EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"` + HostedWorkloads *[]string `json:"hostedWorkloads,omitempty"` + IPConfigurations *[]NetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + MacAddress *string `json:"macAddress,omitempty"` + MigrationPhase *NetworkInterfaceMigrationPhase `json:"migrationPhase,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + NicType *NetworkInterfaceNicType `json:"nicType,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkService *PrivateLinkService `json:"privateLinkService,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + TapConfigurations *[]NetworkInterfaceTapConfiguration `json:"tapConfigurations,omitempty"` + VirtualMachine *SubResource `json:"virtualMachine,omitempty"` + VnetEncryptionSupported *bool `json:"vnetEncryptionSupported,omitempty"` + WorkloadType *string `json:"workloadType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_networkinterfacetapconfiguration.go b/resource-manager/network/2024-01-01/loadbalancers/model_networkinterfacetapconfiguration.go new file mode 100644 index 00000000000..86c1f45766f --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_networkinterfacetapconfiguration.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceTapConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_networkinterfacetapconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_networkinterfacetapconfigurationpropertiesformat.go new file mode 100644 index 00000000000..60f5f46a243 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_networkinterfacetapconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualNetworkTap *VirtualNetworkTap `json:"virtualNetworkTap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_networksecuritygroup.go b/resource-manager/network/2024-01-01/loadbalancers/model_networksecuritygroup.go new file mode 100644 index 00000000000..e4baa9839d3 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_networksecuritygroup.go @@ -0,0 +1,14 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_networksecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_networksecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..a3c43420ed8 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_networksecuritygrouppropertiesformat.go @@ -0,0 +1,15 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupPropertiesFormat struct { + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + FlowLogs *[]FlowLog `json:"flowLogs,omitempty"` + FlushConnection *bool `json:"flushConnection,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_outboundrule.go b/resource-manager/network/2024-01-01/loadbalancers/model_outboundrule.go new file mode 100644 index 00000000000..1dfd6977a6a --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_outboundrule.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type OutboundRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *OutboundRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_outboundrulepropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_outboundrulepropertiesformat.go new file mode 100644 index 00000000000..3c7b13886c0 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_outboundrulepropertiesformat.go @@ -0,0 +1,14 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type OutboundRulePropertiesFormat struct { + AllocatedOutboundPorts *int64 `json:"allocatedOutboundPorts,omitempty"` + BackendAddressPool SubResource `json:"backendAddressPool"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfigurations []SubResource `json:"frontendIPConfigurations"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol LoadBalancerOutboundRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_privateendpoint.go b/resource-manager/network/2024-01-01/loadbalancers/model_privateendpoint.go new file mode 100644 index 00000000000..1b7d03d287c --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_privateendpoint.go @@ -0,0 +1,19 @@ +package loadbalancers + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpoint struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_privateendpointconnection.go b/resource-manager/network/2024-01-01/loadbalancers/model_privateendpointconnection.go new file mode 100644 index 00000000000..4324f758e00 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_privateendpointconnection.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_privateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/loadbalancers/model_privateendpointconnectionproperties.go new file mode 100644 index 00000000000..0db98da1f3a --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_privateendpointconnectionproperties.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateEndpointLocation *string `json:"privateEndpointLocation,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_privateendpointipconfiguration.go b/resource-manager/network/2024-01-01/loadbalancers/model_privateendpointipconfiguration.go new file mode 100644 index 00000000000..5bae49165b4 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_privateendpointipconfiguration.go @@ -0,0 +1,11 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_privateendpointipconfigurationproperties.go b/resource-manager/network/2024-01-01/loadbalancers/model_privateendpointipconfigurationproperties.go new file mode 100644 index 00000000000..7b4d544edd6 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_privateendpointipconfigurationproperties.go @@ -0,0 +1,10 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfigurationProperties struct { + GroupId *string `json:"groupId,omitempty"` + MemberName *string `json:"memberName,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_privateendpointproperties.go b/resource-manager/network/2024-01-01/loadbalancers/model_privateendpointproperties.go new file mode 100644 index 00000000000..b949c31f69e --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_privateendpointproperties.go @@ -0,0 +1,16 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointProperties struct { + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + CustomDnsConfigs *[]CustomDnsConfigPropertiesFormat `json:"customDnsConfigs,omitempty"` + CustomNetworkInterfaceName *string `json:"customNetworkInterfaceName,omitempty"` + IPConfigurations *[]PrivateEndpointIPConfiguration `json:"ipConfigurations,omitempty"` + ManualPrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"manualPrivateLinkServiceConnections,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"privateLinkServiceConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_privatelinkservice.go b/resource-manager/network/2024-01-01/loadbalancers/model_privatelinkservice.go new file mode 100644 index 00000000000..90ac8b3e5ca --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_privatelinkservice.go @@ -0,0 +1,19 @@ +package loadbalancers + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkService struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_privatelinkserviceconnection.go b/resource-manager/network/2024-01-01/loadbalancers/model_privatelinkserviceconnection.go new file mode 100644 index 00000000000..7657685128f --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_privatelinkserviceconnection.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_privatelinkserviceconnectionproperties.go b/resource-manager/network/2024-01-01/loadbalancers/model_privatelinkserviceconnectionproperties.go new file mode 100644 index 00000000000..047e30a886a --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_privatelinkserviceconnectionproperties.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionProperties struct { + GroupIds *[]string `json:"groupIds,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + PrivateLinkServiceId *string `json:"privateLinkServiceId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestMessage *string `json:"requestMessage,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_privatelinkserviceconnectionstate.go b/resource-manager/network/2024-01-01/loadbalancers/model_privatelinkserviceconnectionstate.go new file mode 100644 index 00000000000..a4eb6e38f9b --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_privatelinkserviceconnectionstate.go @@ -0,0 +1,10 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionState struct { + ActionsRequired *string `json:"actionsRequired,omitempty"` + Description *string `json:"description,omitempty"` + Status *string `json:"status,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_privatelinkserviceipconfiguration.go b/resource-manager/network/2024-01-01/loadbalancers/model_privatelinkserviceipconfiguration.go new file mode 100644 index 00000000000..fef899c9ed5 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_privatelinkserviceipconfiguration.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_privatelinkserviceipconfigurationproperties.go b/resource-manager/network/2024-01-01/loadbalancers/model_privatelinkserviceipconfigurationproperties.go new file mode 100644 index 00000000000..0209c2ffc37 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_privatelinkserviceipconfigurationproperties.go @@ -0,0 +1,13 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_privatelinkserviceproperties.go b/resource-manager/network/2024-01-01/loadbalancers/model_privatelinkserviceproperties.go new file mode 100644 index 00000000000..f3e3d05de18 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_privatelinkserviceproperties.go @@ -0,0 +1,17 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceProperties struct { + Alias *string `json:"alias,omitempty"` + AutoApproval *ResourceSet `json:"autoApproval,omitempty"` + EnableProxyProtocol *bool `json:"enableProxyProtocol,omitempty"` + Fqdns *[]string `json:"fqdns,omitempty"` + IPConfigurations *[]PrivateLinkServiceIPConfiguration `json:"ipConfigurations,omitempty"` + LoadBalancerFrontendIPConfigurations *[]FrontendIPConfiguration `json:"loadBalancerFrontendIpConfigurations,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Visibility *ResourceSet `json:"visibility,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_probe.go b/resource-manager/network/2024-01-01/loadbalancers/model_probe.go new file mode 100644 index 00000000000..07c805bf4b6 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_probe.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Probe struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ProbePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_probepropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_probepropertiesformat.go new file mode 100644 index 00000000000..caddfd9838b --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_probepropertiesformat.go @@ -0,0 +1,16 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProbePropertiesFormat struct { + IntervalInSeconds *int64 `json:"intervalInSeconds,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + NoHealthyBackendsBehavior *ProbeNoHealthyBackendsBehavior `json:"NoHealthyBackendsBehavior,omitempty"` + NumberOfProbes *int64 `json:"numberOfProbes,omitempty"` + Port int64 `json:"port"` + ProbeThreshold *int64 `json:"probeThreshold,omitempty"` + Protocol ProbeProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestPath *string `json:"requestPath,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_publicipaddress.go b/resource-manager/network/2024-01-01/loadbalancers/model_publicipaddress.go new file mode 100644 index 00000000000..bdc0de0a218 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_publicipaddress.go @@ -0,0 +1,22 @@ +package loadbalancers + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddress struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PublicIPAddressPropertiesFormat `json:"properties,omitempty"` + Sku *PublicIPAddressSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_publicipaddressdnssettings.go b/resource-manager/network/2024-01-01/loadbalancers/model_publicipaddressdnssettings.go new file mode 100644 index 00000000000..270d14db8a5 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_publicipaddressdnssettings.go @@ -0,0 +1,11 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressDnsSettings struct { + DomainNameLabel *string `json:"domainNameLabel,omitempty"` + DomainNameLabelScope *PublicIPAddressDnsSettingsDomainNameLabelScope `json:"domainNameLabelScope,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + ReverseFqdn *string `json:"reverseFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_publicipaddresspropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_publicipaddresspropertiesformat.go new file mode 100644 index 00000000000..5a73a6d016d --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_publicipaddresspropertiesformat.go @@ -0,0 +1,23 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressPropertiesFormat struct { + DdosSettings *DdosSettings `json:"ddosSettings,omitempty"` + DeleteOption *DeleteOptions `json:"deleteOption,omitempty"` + DnsSettings *PublicIPAddressDnsSettings `json:"dnsSettings,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty"` + IPTags *[]IPTag `json:"ipTags,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + LinkedPublicIPAddress *PublicIPAddress `json:"linkedPublicIPAddress,omitempty"` + MigrationPhase *PublicIPAddressMigrationPhase `json:"migrationPhase,omitempty"` + NatGateway *NatGateway `json:"natGateway,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"` + PublicIPAllocationMethod *IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServicePublicIPAddress *PublicIPAddress `json:"servicePublicIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_publicipaddresssku.go b/resource-manager/network/2024-01-01/loadbalancers/model_publicipaddresssku.go new file mode 100644 index 00000000000..b15c3f179cf --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_publicipaddresssku.go @@ -0,0 +1,9 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressSku struct { + Name *PublicIPAddressSkuName `json:"name,omitempty"` + Tier *PublicIPAddressSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_queryinboundnatruleportmappingrequest.go b/resource-manager/network/2024-01-01/loadbalancers/model_queryinboundnatruleportmappingrequest.go new file mode 100644 index 00000000000..537750e7e89 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_queryinboundnatruleportmappingrequest.go @@ -0,0 +1,9 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type QueryInboundNatRulePortMappingRequest struct { + IPAddress *string `json:"ipAddress,omitempty"` + IPConfiguration *SubResource `json:"ipConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_resourcenavigationlink.go b/resource-manager/network/2024-01-01/loadbalancers/model_resourcenavigationlink.go new file mode 100644 index 00000000000..264f22dde08 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_resourcenavigationlink.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ResourceNavigationLinkFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_resourcenavigationlinkformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_resourcenavigationlinkformat.go new file mode 100644 index 00000000000..4b34d1eca84 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_resourcenavigationlinkformat.go @@ -0,0 +1,10 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLinkFormat struct { + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_resourceset.go b/resource-manager/network/2024-01-01/loadbalancers/model_resourceset.go new file mode 100644 index 00000000000..6d37b1b6861 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_resourceset.go @@ -0,0 +1,8 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceSet struct { + Subscriptions *[]string `json:"subscriptions,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/loadbalancers/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..36d6b05e540 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_route.go b/resource-manager/network/2024-01-01/loadbalancers/model_route.go new file mode 100644 index 00000000000..60ee56ca15b --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_route.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Route struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RoutePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_routepropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_routepropertiesformat.go new file mode 100644 index 00000000000..dad41f27203 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_routepropertiesformat.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutePropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + HasBgpOverride *bool `json:"hasBgpOverride,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + NextHopType RouteNextHopType `json:"nextHopType"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_routetable.go b/resource-manager/network/2024-01-01/loadbalancers/model_routetable.go new file mode 100644 index 00000000000..e6d4f4faa3d --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_routetable.go @@ -0,0 +1,14 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTable struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteTablePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_routetablepropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_routetablepropertiesformat.go new file mode 100644 index 00000000000..1169823e36a --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_routetablepropertiesformat.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTablePropertiesFormat struct { + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Routes *[]Route `json:"routes,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_securityrule.go b/resource-manager/network/2024-01-01/loadbalancers/model_securityrule.go new file mode 100644 index 00000000000..1bd37068862 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_securityrule.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_securityrulepropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_securityrulepropertiesformat.go new file mode 100644 index 00000000000..000a9d8a16f --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_securityrulepropertiesformat.go @@ -0,0 +1,23 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulePropertiesFormat struct { + Access SecurityRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction SecurityRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_serviceassociationlink.go b/resource-manager/network/2024-01-01/loadbalancers/model_serviceassociationlink.go new file mode 100644 index 00000000000..880f8a061c0 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_serviceassociationlink.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceAssociationLinkPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_serviceassociationlinkpropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_serviceassociationlinkpropertiesformat.go new file mode 100644 index 00000000000..5984df7dfe6 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_serviceassociationlinkpropertiesformat.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLinkPropertiesFormat struct { + AllowDelete *bool `json:"allowDelete,omitempty"` + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + Locations *[]string `json:"locations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_servicedelegationpropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_servicedelegationpropertiesformat.go new file mode 100644 index 00000000000..18a1fb457e6 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_servicedelegationpropertiesformat.go @@ -0,0 +1,10 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceDelegationPropertiesFormat struct { + Actions *[]string `json:"actions,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_serviceendpointpolicy.go b/resource-manager/network/2024-01-01/loadbalancers/model_serviceendpointpolicy.go new file mode 100644 index 00000000000..00941b4063a --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_serviceendpointpolicy.go @@ -0,0 +1,15 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Kind *string `json:"kind,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_serviceendpointpolicydefinition.go b/resource-manager/network/2024-01-01/loadbalancers/model_serviceendpointpolicydefinition.go new file mode 100644 index 00000000000..b1f2f8e3300 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_serviceendpointpolicydefinition.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinition struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_serviceendpointpolicydefinitionpropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_serviceendpointpolicydefinitionpropertiesformat.go new file mode 100644 index 00000000000..0f54d85448c --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_serviceendpointpolicydefinitionpropertiesformat.go @@ -0,0 +1,11 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionPropertiesFormat struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` + ServiceResources *[]string `json:"serviceResources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_serviceendpointpolicypropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_serviceendpointpolicypropertiesformat.go new file mode 100644 index 00000000000..74afcc602fc --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_serviceendpointpolicypropertiesformat.go @@ -0,0 +1,13 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyPropertiesFormat struct { + ContextualServiceEndpointPolicies *[]string `json:"contextualServiceEndpointPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServiceAlias *string `json:"serviceAlias,omitempty"` + ServiceEndpointPolicyDefinitions *[]ServiceEndpointPolicyDefinition `json:"serviceEndpointPolicyDefinitions,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_serviceendpointpropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_serviceendpointpropertiesformat.go new file mode 100644 index 00000000000..f6f73f34673 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_serviceendpointpropertiesformat.go @@ -0,0 +1,11 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPropertiesFormat struct { + Locations *[]string `json:"locations,omitempty"` + NetworkIdentifier *SubResource `json:"networkIdentifier,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_subnet.go b/resource-manager/network/2024-01-01/loadbalancers/model_subnet.go new file mode 100644 index 00000000000..802fd17a35b --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_subnet.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Subnet struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SubnetPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_subnetpropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_subnetpropertiesformat.go new file mode 100644 index 00000000000..c3a88e8b60e --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_subnetpropertiesformat.go @@ -0,0 +1,28 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + ApplicationGatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"applicationGatewayIPConfigurations,omitempty"` + DefaultOutboundAccess *bool `json:"defaultOutboundAccess,omitempty"` + Delegations *[]Delegation `json:"delegations,omitempty"` + IPAllocations *[]SubResource `json:"ipAllocations,omitempty"` + IPConfigurationProfiles *[]IPConfigurationProfile `json:"ipConfigurationProfiles,omitempty"` + IPConfigurations *[]IPConfiguration `json:"ipConfigurations,omitempty"` + NatGateway *SubResource `json:"natGateway,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + PrivateEndpointNetworkPolicies *VirtualNetworkPrivateEndpointNetworkPolicies `json:"privateEndpointNetworkPolicies,omitempty"` + PrivateEndpoints *[]PrivateEndpoint `json:"privateEndpoints,omitempty"` + PrivateLinkServiceNetworkPolicies *VirtualNetworkPrivateLinkServiceNetworkPolicies `json:"privateLinkServiceNetworkPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Purpose *string `json:"purpose,omitempty"` + ResourceNavigationLinks *[]ResourceNavigationLink `json:"resourceNavigationLinks,omitempty"` + RouteTable *RouteTable `json:"routeTable,omitempty"` + ServiceAssociationLinks *[]ServiceAssociationLink `json:"serviceAssociationLinks,omitempty"` + ServiceEndpointPolicies *[]ServiceEndpointPolicy `json:"serviceEndpointPolicies,omitempty"` + ServiceEndpoints *[]ServiceEndpointPropertiesFormat `json:"serviceEndpoints,omitempty"` + SharingScope *SharingScope `json:"sharingScope,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_subresource.go b/resource-manager/network/2024-01-01/loadbalancers/model_subresource.go new file mode 100644 index 00000000000..e288e1dcb19 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_subresource.go @@ -0,0 +1,8 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_tagsobject.go b/resource-manager/network/2024-01-01/loadbalancers/model_tagsobject.go new file mode 100644 index 00000000000..6b83deef865 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_tagsobject.go @@ -0,0 +1,8 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/loadbalancers/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..ecbf7509a1e --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/loadbalancers/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..2503ab90312 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_virtualnetworktap.go b/resource-manager/network/2024-01-01/loadbalancers/model_virtualnetworktap.go new file mode 100644 index 00000000000..ca9e2389b65 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_virtualnetworktap.go @@ -0,0 +1,14 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkTapPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/model_virtualnetworktappropertiesformat.go b/resource-manager/network/2024-01-01/loadbalancers/model_virtualnetworktappropertiesformat.go new file mode 100644 index 00000000000..5cac0b1e63a --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/model_virtualnetworktappropertiesformat.go @@ -0,0 +1,13 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapPropertiesFormat struct { + DestinationLoadBalancerFrontEndIPConfiguration *FrontendIPConfiguration `json:"destinationLoadBalancerFrontEndIPConfiguration,omitempty"` + DestinationNetworkInterfaceIPConfiguration *NetworkInterfaceIPConfiguration `json:"destinationNetworkInterfaceIPConfiguration,omitempty"` + DestinationPort *int64 `json:"destinationPort,omitempty"` + NetworkInterfaceTapConfigurations *[]NetworkInterfaceTapConfiguration `json:"networkInterfaceTapConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/predicates.go b/resource-manager/network/2024-01-01/loadbalancers/predicates.go new file mode 100644 index 00000000000..82f247704c6 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/predicates.go @@ -0,0 +1,238 @@ +package loadbalancers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPoolOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p BackendAddressPoolOperationPredicate) Matches(input BackendAddressPool) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type FrontendIPConfigurationOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p FrontendIPConfigurationOperationPredicate) Matches(input FrontendIPConfiguration) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type InboundNatRuleOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p InboundNatRuleOperationPredicate) Matches(input InboundNatRule) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type LoadBalancerOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p LoadBalancerOperationPredicate) Matches(input LoadBalancer) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type LoadBalancingRuleOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p LoadBalancingRuleOperationPredicate) Matches(input LoadBalancingRule) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type NetworkInterfaceOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p NetworkInterfaceOperationPredicate) Matches(input NetworkInterface) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type OutboundRuleOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p OutboundRuleOperationPredicate) Matches(input OutboundRule) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type ProbeOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p ProbeOperationPredicate) Matches(input Probe) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/loadbalancers/version.go b/resource-manager/network/2024-01-01/loadbalancers/version.go new file mode 100644 index 00000000000..af69ffb6f53 --- /dev/null +++ b/resource-manager/network/2024-01-01/loadbalancers/version.go @@ -0,0 +1,12 @@ +package loadbalancers + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/loadbalancers/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/localnetworkgateways/README.md b/resource-manager/network/2024-01-01/localnetworkgateways/README.md new file mode 100644 index 00000000000..bceeefe3487 --- /dev/null +++ b/resource-manager/network/2024-01-01/localnetworkgateways/README.md @@ -0,0 +1,104 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/localnetworkgateways` Documentation + +The `localnetworkgateways` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/localnetworkgateways" +``` + + +### Client Initialization + +```go +client := localnetworkgateways.NewLocalNetworkGatewaysClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `LocalNetworkGatewaysClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := localnetworkgateways.NewLocalNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "localNetworkGatewayValue") + +payload := localnetworkgateways.LocalNetworkGateway{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `LocalNetworkGatewaysClient.Delete` + +```go +ctx := context.TODO() +id := localnetworkgateways.NewLocalNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "localNetworkGatewayValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `LocalNetworkGatewaysClient.Get` + +```go +ctx := context.TODO() +id := localnetworkgateways.NewLocalNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "localNetworkGatewayValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `LocalNetworkGatewaysClient.List` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `LocalNetworkGatewaysClient.UpdateTags` + +```go +ctx := context.TODO() +id := localnetworkgateways.NewLocalNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "localNetworkGatewayValue") + +payload := localnetworkgateways.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/localnetworkgateways/client.go b/resource-manager/network/2024-01-01/localnetworkgateways/client.go new file mode 100644 index 00000000000..90a3468c9f3 --- /dev/null +++ b/resource-manager/network/2024-01-01/localnetworkgateways/client.go @@ -0,0 +1,26 @@ +package localnetworkgateways + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LocalNetworkGatewaysClient struct { + Client *resourcemanager.Client +} + +func NewLocalNetworkGatewaysClientWithBaseURI(sdkApi sdkEnv.Api) (*LocalNetworkGatewaysClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "localnetworkgateways", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating LocalNetworkGatewaysClient: %+v", err) + } + + return &LocalNetworkGatewaysClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/localnetworkgateways/constants.go b/resource-manager/network/2024-01-01/localnetworkgateways/constants.go new file mode 100644 index 00000000000..f82efef3b1f --- /dev/null +++ b/resource-manager/network/2024-01-01/localnetworkgateways/constants.go @@ -0,0 +1,57 @@ +package localnetworkgateways + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/localnetworkgateways/id_localnetworkgateway.go b/resource-manager/network/2024-01-01/localnetworkgateways/id_localnetworkgateway.go new file mode 100644 index 00000000000..b3c0d3a0339 --- /dev/null +++ b/resource-manager/network/2024-01-01/localnetworkgateways/id_localnetworkgateway.go @@ -0,0 +1,130 @@ +package localnetworkgateways + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&LocalNetworkGatewayId{}) +} + +var _ resourceids.ResourceId = &LocalNetworkGatewayId{} + +// LocalNetworkGatewayId is a struct representing the Resource ID for a Local Network Gateway +type LocalNetworkGatewayId struct { + SubscriptionId string + ResourceGroupName string + LocalNetworkGatewayName string +} + +// NewLocalNetworkGatewayID returns a new LocalNetworkGatewayId struct +func NewLocalNetworkGatewayID(subscriptionId string, resourceGroupName string, localNetworkGatewayName string) LocalNetworkGatewayId { + return LocalNetworkGatewayId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + LocalNetworkGatewayName: localNetworkGatewayName, + } +} + +// ParseLocalNetworkGatewayID parses 'input' into a LocalNetworkGatewayId +func ParseLocalNetworkGatewayID(input string) (*LocalNetworkGatewayId, error) { + parser := resourceids.NewParserFromResourceIdType(&LocalNetworkGatewayId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LocalNetworkGatewayId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseLocalNetworkGatewayIDInsensitively parses 'input' case-insensitively into a LocalNetworkGatewayId +// note: this method should only be used for API response data and not user input +func ParseLocalNetworkGatewayIDInsensitively(input string) (*LocalNetworkGatewayId, error) { + parser := resourceids.NewParserFromResourceIdType(&LocalNetworkGatewayId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LocalNetworkGatewayId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *LocalNetworkGatewayId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.LocalNetworkGatewayName, ok = input.Parsed["localNetworkGatewayName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "localNetworkGatewayName", input) + } + + return nil +} + +// ValidateLocalNetworkGatewayID checks that 'input' can be parsed as a Local Network Gateway ID +func ValidateLocalNetworkGatewayID(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 := ParseLocalNetworkGatewayID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Local Network Gateway ID +func (id LocalNetworkGatewayId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/localNetworkGateways/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.LocalNetworkGatewayName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Local Network Gateway ID +func (id LocalNetworkGatewayId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLocalNetworkGateways", "localNetworkGateways", "localNetworkGateways"), + resourceids.UserSpecifiedSegment("localNetworkGatewayName", "localNetworkGatewayValue"), + } +} + +// String returns a human-readable description of this Local Network Gateway ID +func (id LocalNetworkGatewayId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Local Network Gateway Name: %q", id.LocalNetworkGatewayName), + } + return fmt.Sprintf("Local Network Gateway (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/localnetworkgateways/id_localnetworkgateway_test.go b/resource-manager/network/2024-01-01/localnetworkgateways/id_localnetworkgateway_test.go new file mode 100644 index 00000000000..f1ee1ad0e64 --- /dev/null +++ b/resource-manager/network/2024-01-01/localnetworkgateways/id_localnetworkgateway_test.go @@ -0,0 +1,282 @@ +package localnetworkgateways + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &LocalNetworkGatewayId{} + +func TestNewLocalNetworkGatewayID(t *testing.T) { + id := NewLocalNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "localNetworkGatewayValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.LocalNetworkGatewayName != "localNetworkGatewayValue" { + t.Fatalf("Expected %q but got %q for Segment 'LocalNetworkGatewayName'", id.LocalNetworkGatewayName, "localNetworkGatewayValue") + } +} + +func TestFormatLocalNetworkGatewayID(t *testing.T) { + actual := NewLocalNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "localNetworkGatewayValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/localNetworkGateways/localNetworkGatewayValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseLocalNetworkGatewayID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LocalNetworkGatewayId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/localNetworkGateways", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/localNetworkGateways/localNetworkGatewayValue", + Expected: &LocalNetworkGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LocalNetworkGatewayName: "localNetworkGatewayValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/localNetworkGateways/localNetworkGatewayValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLocalNetworkGatewayID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LocalNetworkGatewayName != v.Expected.LocalNetworkGatewayName { + t.Fatalf("Expected %q but got %q for LocalNetworkGatewayName", v.Expected.LocalNetworkGatewayName, actual.LocalNetworkGatewayName) + } + + } +} + +func TestParseLocalNetworkGatewayIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LocalNetworkGatewayId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/localNetworkGateways", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAlNeTwOrKgAtEwAyS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/localNetworkGateways/localNetworkGatewayValue", + Expected: &LocalNetworkGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LocalNetworkGatewayName: "localNetworkGatewayValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/localNetworkGateways/localNetworkGatewayValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAlNeTwOrKgAtEwAyS/lOcAlNeTwOrKgAtEwAyVaLuE", + Expected: &LocalNetworkGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + LocalNetworkGatewayName: "lOcAlNeTwOrKgAtEwAyVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAlNeTwOrKgAtEwAyS/lOcAlNeTwOrKgAtEwAyVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLocalNetworkGatewayIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LocalNetworkGatewayName != v.Expected.LocalNetworkGatewayName { + t.Fatalf("Expected %q but got %q for LocalNetworkGatewayName", v.Expected.LocalNetworkGatewayName, actual.LocalNetworkGatewayName) + } + + } +} + +func TestSegmentsForLocalNetworkGatewayId(t *testing.T) { + segments := LocalNetworkGatewayId{}.Segments() + if len(segments) == 0 { + t.Fatalf("LocalNetworkGatewayId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/localnetworkgateways/method_createorupdate.go b/resource-manager/network/2024-01-01/localnetworkgateways/method_createorupdate.go new file mode 100644 index 00000000000..1b41558abaa --- /dev/null +++ b/resource-manager/network/2024-01-01/localnetworkgateways/method_createorupdate.go @@ -0,0 +1,75 @@ +package localnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *LocalNetworkGateway +} + +// CreateOrUpdate ... +func (c LocalNetworkGatewaysClient) CreateOrUpdate(ctx context.Context, id LocalNetworkGatewayId, input LocalNetworkGateway) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c LocalNetworkGatewaysClient) CreateOrUpdateThenPoll(ctx context.Context, id LocalNetworkGatewayId, input LocalNetworkGateway) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/localnetworkgateways/method_delete.go b/resource-manager/network/2024-01-01/localnetworkgateways/method_delete.go new file mode 100644 index 00000000000..2b155d2b9e7 --- /dev/null +++ b/resource-manager/network/2024-01-01/localnetworkgateways/method_delete.go @@ -0,0 +1,71 @@ +package localnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c LocalNetworkGatewaysClient) Delete(ctx context.Context, id LocalNetworkGatewayId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c LocalNetworkGatewaysClient) DeleteThenPoll(ctx context.Context, id LocalNetworkGatewayId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/localnetworkgateways/method_get.go b/resource-manager/network/2024-01-01/localnetworkgateways/method_get.go new file mode 100644 index 00000000000..08da8072f93 --- /dev/null +++ b/resource-manager/network/2024-01-01/localnetworkgateways/method_get.go @@ -0,0 +1,54 @@ +package localnetworkgateways + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *LocalNetworkGateway +} + +// Get ... +func (c LocalNetworkGatewaysClient) Get(ctx context.Context, id LocalNetworkGatewayId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model LocalNetworkGateway + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/localnetworkgateways/method_list.go b/resource-manager/network/2024-01-01/localnetworkgateways/method_list.go new file mode 100644 index 00000000000..8a298cd52bc --- /dev/null +++ b/resource-manager/network/2024-01-01/localnetworkgateways/method_list.go @@ -0,0 +1,93 @@ +package localnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]LocalNetworkGateway +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []LocalNetworkGateway +} + +// List ... +func (c LocalNetworkGatewaysClient) List(ctx context.Context, id commonids.ResourceGroupId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/localNetworkGateways", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]LocalNetworkGateway `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c LocalNetworkGatewaysClient) ListComplete(ctx context.Context, id commonids.ResourceGroupId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, LocalNetworkGatewayOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c LocalNetworkGatewaysClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate LocalNetworkGatewayOperationPredicate) (result ListCompleteResult, err error) { + items := make([]LocalNetworkGateway, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/localnetworkgateways/method_updatetags.go b/resource-manager/network/2024-01-01/localnetworkgateways/method_updatetags.go new file mode 100644 index 00000000000..c20950665de --- /dev/null +++ b/resource-manager/network/2024-01-01/localnetworkgateways/method_updatetags.go @@ -0,0 +1,58 @@ +package localnetworkgateways + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *LocalNetworkGateway +} + +// UpdateTags ... +func (c LocalNetworkGatewaysClient) UpdateTags(ctx context.Context, id LocalNetworkGatewayId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model LocalNetworkGateway + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/localnetworkgateways/model_addressspace.go b/resource-manager/network/2024-01-01/localnetworkgateways/model_addressspace.go new file mode 100644 index 00000000000..232140416bf --- /dev/null +++ b/resource-manager/network/2024-01-01/localnetworkgateways/model_addressspace.go @@ -0,0 +1,8 @@ +package localnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AddressSpace struct { + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/localnetworkgateways/model_bgpsettings.go b/resource-manager/network/2024-01-01/localnetworkgateways/model_bgpsettings.go new file mode 100644 index 00000000000..9d3dfccb4b1 --- /dev/null +++ b/resource-manager/network/2024-01-01/localnetworkgateways/model_bgpsettings.go @@ -0,0 +1,11 @@ +package localnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BgpSettings struct { + Asn *int64 `json:"asn,omitempty"` + BgpPeeringAddress *string `json:"bgpPeeringAddress,omitempty"` + BgpPeeringAddresses *[]IPConfigurationBgpPeeringAddress `json:"bgpPeeringAddresses,omitempty"` + PeerWeight *int64 `json:"peerWeight,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/localnetworkgateways/model_ipconfigurationbgppeeringaddress.go b/resource-manager/network/2024-01-01/localnetworkgateways/model_ipconfigurationbgppeeringaddress.go new file mode 100644 index 00000000000..4778a80b432 --- /dev/null +++ b/resource-manager/network/2024-01-01/localnetworkgateways/model_ipconfigurationbgppeeringaddress.go @@ -0,0 +1,11 @@ +package localnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationBgpPeeringAddress struct { + CustomBgpIPAddresses *[]string `json:"customBgpIpAddresses,omitempty"` + DefaultBgpIPAddresses *[]string `json:"defaultBgpIpAddresses,omitempty"` + IPconfigurationId *string `json:"ipconfigurationId,omitempty"` + TunnelIPAddresses *[]string `json:"tunnelIpAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/localnetworkgateways/model_localnetworkgateway.go b/resource-manager/network/2024-01-01/localnetworkgateways/model_localnetworkgateway.go new file mode 100644 index 00000000000..684fe705afc --- /dev/null +++ b/resource-manager/network/2024-01-01/localnetworkgateways/model_localnetworkgateway.go @@ -0,0 +1,14 @@ +package localnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LocalNetworkGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties LocalNetworkGatewayPropertiesFormat `json:"properties"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/localnetworkgateways/model_localnetworkgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/localnetworkgateways/model_localnetworkgatewaypropertiesformat.go new file mode 100644 index 00000000000..fb7a91a8c71 --- /dev/null +++ b/resource-manager/network/2024-01-01/localnetworkgateways/model_localnetworkgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package localnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LocalNetworkGatewayPropertiesFormat struct { + BgpSettings *BgpSettings `json:"bgpSettings,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + GatewayIPAddress *string `json:"gatewayIpAddress,omitempty"` + LocalNetworkAddressSpace *AddressSpace `json:"localNetworkAddressSpace,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/localnetworkgateways/model_tagsobject.go b/resource-manager/network/2024-01-01/localnetworkgateways/model_tagsobject.go new file mode 100644 index 00000000000..214a0886d9b --- /dev/null +++ b/resource-manager/network/2024-01-01/localnetworkgateways/model_tagsobject.go @@ -0,0 +1,8 @@ +package localnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/localnetworkgateways/predicates.go b/resource-manager/network/2024-01-01/localnetworkgateways/predicates.go new file mode 100644 index 00000000000..d4e529f8a9c --- /dev/null +++ b/resource-manager/network/2024-01-01/localnetworkgateways/predicates.go @@ -0,0 +1,37 @@ +package localnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LocalNetworkGatewayOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p LocalNetworkGatewayOperationPredicate) Matches(input LocalNetworkGateway) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/localnetworkgateways/version.go b/resource-manager/network/2024-01-01/localnetworkgateways/version.go new file mode 100644 index 00000000000..aee786514c3 --- /dev/null +++ b/resource-manager/network/2024-01-01/localnetworkgateways/version.go @@ -0,0 +1,12 @@ +package localnetworkgateways + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/localnetworkgateways/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/natgateways/README.md b/resource-manager/network/2024-01-01/natgateways/README.md new file mode 100644 index 00000000000..fbd093dfe8b --- /dev/null +++ b/resource-manager/network/2024-01-01/natgateways/README.md @@ -0,0 +1,121 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/natgateways` Documentation + +The `natgateways` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/natgateways" +``` + + +### Client Initialization + +```go +client := natgateways.NewNatGatewaysClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `NatGatewaysClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := natgateways.NewNatGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "natGatewayValue") + +payload := natgateways.NatGateway{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `NatGatewaysClient.Delete` + +```go +ctx := context.TODO() +id := natgateways.NewNatGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "natGatewayValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `NatGatewaysClient.Get` + +```go +ctx := context.TODO() +id := natgateways.NewNatGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "natGatewayValue") + +read, err := client.Get(ctx, id, natgateways.DefaultGetOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NatGatewaysClient.List` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `NatGatewaysClient.ListAll` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.ListAll(ctx, id)` can be used to do batched pagination +items, err := client.ListAllComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `NatGatewaysClient.UpdateTags` + +```go +ctx := context.TODO() +id := natgateways.NewNatGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "natGatewayValue") + +payload := natgateways.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/natgateways/client.go b/resource-manager/network/2024-01-01/natgateways/client.go new file mode 100644 index 00000000000..10d7c1f9e5f --- /dev/null +++ b/resource-manager/network/2024-01-01/natgateways/client.go @@ -0,0 +1,26 @@ +package natgateways + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaysClient struct { + Client *resourcemanager.Client +} + +func NewNatGatewaysClientWithBaseURI(sdkApi sdkEnv.Api) (*NatGatewaysClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "natgateways", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating NatGatewaysClient: %+v", err) + } + + return &NatGatewaysClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/natgateways/constants.go b/resource-manager/network/2024-01-01/natgateways/constants.go new file mode 100644 index 00000000000..db752936aa3 --- /dev/null +++ b/resource-manager/network/2024-01-01/natgateways/constants.go @@ -0,0 +1,95 @@ +package natgateways + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySkuName string + +const ( + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +func PossibleValuesForNatGatewaySkuName() []string { + return []string{ + string(NatGatewaySkuNameStandard), + } +} + +func (s *NatGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNatGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNatGatewaySkuName(input string) (*NatGatewaySkuName, error) { + vals := map[string]NatGatewaySkuName{ + "standard": NatGatewaySkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NatGatewaySkuName(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/natgateways/id_natgateway.go b/resource-manager/network/2024-01-01/natgateways/id_natgateway.go new file mode 100644 index 00000000000..95f33162e5e --- /dev/null +++ b/resource-manager/network/2024-01-01/natgateways/id_natgateway.go @@ -0,0 +1,130 @@ +package natgateways + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NatGatewayId{}) +} + +var _ resourceids.ResourceId = &NatGatewayId{} + +// NatGatewayId is a struct representing the Resource ID for a Nat Gateway +type NatGatewayId struct { + SubscriptionId string + ResourceGroupName string + NatGatewayName string +} + +// NewNatGatewayID returns a new NatGatewayId struct +func NewNatGatewayID(subscriptionId string, resourceGroupName string, natGatewayName string) NatGatewayId { + return NatGatewayId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NatGatewayName: natGatewayName, + } +} + +// ParseNatGatewayID parses 'input' into a NatGatewayId +func ParseNatGatewayID(input string) (*NatGatewayId, error) { + parser := resourceids.NewParserFromResourceIdType(&NatGatewayId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NatGatewayId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNatGatewayIDInsensitively parses 'input' case-insensitively into a NatGatewayId +// note: this method should only be used for API response data and not user input +func ParseNatGatewayIDInsensitively(input string) (*NatGatewayId, error) { + parser := resourceids.NewParserFromResourceIdType(&NatGatewayId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NatGatewayId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NatGatewayId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NatGatewayName, ok = input.Parsed["natGatewayName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "natGatewayName", input) + } + + return nil +} + +// ValidateNatGatewayID checks that 'input' can be parsed as a Nat Gateway ID +func ValidateNatGatewayID(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 := ParseNatGatewayID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Nat Gateway ID +func (id NatGatewayId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/natGateways/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NatGatewayName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Nat Gateway ID +func (id NatGatewayId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNatGateways", "natGateways", "natGateways"), + resourceids.UserSpecifiedSegment("natGatewayName", "natGatewayValue"), + } +} + +// String returns a human-readable description of this Nat Gateway ID +func (id NatGatewayId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Nat Gateway Name: %q", id.NatGatewayName), + } + return fmt.Sprintf("Nat Gateway (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/natgateways/id_natgateway_test.go b/resource-manager/network/2024-01-01/natgateways/id_natgateway_test.go new file mode 100644 index 00000000000..3d502524a2f --- /dev/null +++ b/resource-manager/network/2024-01-01/natgateways/id_natgateway_test.go @@ -0,0 +1,282 @@ +package natgateways + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NatGatewayId{} + +func TestNewNatGatewayID(t *testing.T) { + id := NewNatGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "natGatewayValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NatGatewayName != "natGatewayValue" { + t.Fatalf("Expected %q but got %q for Segment 'NatGatewayName'", id.NatGatewayName, "natGatewayValue") + } +} + +func TestFormatNatGatewayID(t *testing.T) { + actual := NewNatGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "natGatewayValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/natGateways/natGatewayValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNatGatewayID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NatGatewayId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/natGateways", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/natGateways/natGatewayValue", + Expected: &NatGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NatGatewayName: "natGatewayValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/natGateways/natGatewayValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNatGatewayID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NatGatewayName != v.Expected.NatGatewayName { + t.Fatalf("Expected %q but got %q for NatGatewayName", v.Expected.NatGatewayName, actual.NatGatewayName) + } + + } +} + +func TestParseNatGatewayIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NatGatewayId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/natGateways", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nAtGaTeWaYs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/natGateways/natGatewayValue", + Expected: &NatGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NatGatewayName: "natGatewayValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/natGateways/natGatewayValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nAtGaTeWaYs/nAtGaTeWaYvAlUe", + Expected: &NatGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NatGatewayName: "nAtGaTeWaYvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nAtGaTeWaYs/nAtGaTeWaYvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNatGatewayIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NatGatewayName != v.Expected.NatGatewayName { + t.Fatalf("Expected %q but got %q for NatGatewayName", v.Expected.NatGatewayName, actual.NatGatewayName) + } + + } +} + +func TestSegmentsForNatGatewayId(t *testing.T) { + segments := NatGatewayId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NatGatewayId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/natgateways/method_createorupdate.go b/resource-manager/network/2024-01-01/natgateways/method_createorupdate.go new file mode 100644 index 00000000000..34a53aff5ac --- /dev/null +++ b/resource-manager/network/2024-01-01/natgateways/method_createorupdate.go @@ -0,0 +1,76 @@ +package natgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *NatGateway +} + +// CreateOrUpdate ... +func (c NatGatewaysClient) CreateOrUpdate(ctx context.Context, id NatGatewayId, input NatGateway) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c NatGatewaysClient) CreateOrUpdateThenPoll(ctx context.Context, id NatGatewayId, input NatGateway) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/natgateways/method_delete.go b/resource-manager/network/2024-01-01/natgateways/method_delete.go new file mode 100644 index 00000000000..d03d142add6 --- /dev/null +++ b/resource-manager/network/2024-01-01/natgateways/method_delete.go @@ -0,0 +1,71 @@ +package natgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c NatGatewaysClient) Delete(ctx context.Context, id NatGatewayId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c NatGatewaysClient) DeleteThenPoll(ctx context.Context, id NatGatewayId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/natgateways/method_get.go b/resource-manager/network/2024-01-01/natgateways/method_get.go new file mode 100644 index 00000000000..43cb3094813 --- /dev/null +++ b/resource-manager/network/2024-01-01/natgateways/method_get.go @@ -0,0 +1,83 @@ +package natgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NatGateway +} + +type GetOperationOptions struct { + Expand *string +} + +func DefaultGetOperationOptions() GetOperationOptions { + return GetOperationOptions{} +} + +func (o GetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// Get ... +func (c NatGatewaysClient) Get(ctx context.Context, id NatGatewayId, options GetOperationOptions) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NatGateway + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/natgateways/method_list.go b/resource-manager/network/2024-01-01/natgateways/method_list.go new file mode 100644 index 00000000000..1f8a5d1a76a --- /dev/null +++ b/resource-manager/network/2024-01-01/natgateways/method_list.go @@ -0,0 +1,93 @@ +package natgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NatGateway +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []NatGateway +} + +// List ... +func (c NatGatewaysClient) List(ctx context.Context, id commonids.ResourceGroupId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/natGateways", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NatGateway `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c NatGatewaysClient) ListComplete(ctx context.Context, id commonids.ResourceGroupId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, NatGatewayOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c NatGatewaysClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate NatGatewayOperationPredicate) (result ListCompleteResult, err error) { + items := make([]NatGateway, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/natgateways/method_listall.go b/resource-manager/network/2024-01-01/natgateways/method_listall.go new file mode 100644 index 00000000000..69aeb402ae1 --- /dev/null +++ b/resource-manager/network/2024-01-01/natgateways/method_listall.go @@ -0,0 +1,93 @@ +package natgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAllOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NatGateway +} + +type ListAllCompleteResult struct { + LatestHttpResponse *http.Response + Items []NatGateway +} + +// ListAll ... +func (c NatGatewaysClient) ListAll(ctx context.Context, id commonids.SubscriptionId) (result ListAllOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/natGateways", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NatGateway `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListAllComplete retrieves all the results into a single object +func (c NatGatewaysClient) ListAllComplete(ctx context.Context, id commonids.SubscriptionId) (ListAllCompleteResult, error) { + return c.ListAllCompleteMatchingPredicate(ctx, id, NatGatewayOperationPredicate{}) +} + +// ListAllCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c NatGatewaysClient) ListAllCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate NatGatewayOperationPredicate) (result ListAllCompleteResult, err error) { + items := make([]NatGateway, 0) + + resp, err := c.ListAll(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListAllCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/natgateways/method_updatetags.go b/resource-manager/network/2024-01-01/natgateways/method_updatetags.go new file mode 100644 index 00000000000..b5dbabece39 --- /dev/null +++ b/resource-manager/network/2024-01-01/natgateways/method_updatetags.go @@ -0,0 +1,58 @@ +package natgateways + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NatGateway +} + +// UpdateTags ... +func (c NatGatewaysClient) UpdateTags(ctx context.Context, id NatGatewayId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NatGateway + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/natgateways/model_natgateway.go b/resource-manager/network/2024-01-01/natgateways/model_natgateway.go new file mode 100644 index 00000000000..0aabf1ead87 --- /dev/null +++ b/resource-manager/network/2024-01-01/natgateways/model_natgateway.go @@ -0,0 +1,20 @@ +package natgateways + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"` + Sku *NatGatewaySku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/natgateways/model_natgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/natgateways/model_natgatewaypropertiesformat.go new file mode 100644 index 00000000000..7bfde80e4d9 --- /dev/null +++ b/resource-manager/network/2024-01-01/natgateways/model_natgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package natgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayPropertiesFormat struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]SubResource `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/natgateways/model_natgatewaysku.go b/resource-manager/network/2024-01-01/natgateways/model_natgatewaysku.go new file mode 100644 index 00000000000..962d747cc17 --- /dev/null +++ b/resource-manager/network/2024-01-01/natgateways/model_natgatewaysku.go @@ -0,0 +1,8 @@ +package natgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySku struct { + Name *NatGatewaySkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/natgateways/model_subresource.go b/resource-manager/network/2024-01-01/natgateways/model_subresource.go new file mode 100644 index 00000000000..ea00694667d --- /dev/null +++ b/resource-manager/network/2024-01-01/natgateways/model_subresource.go @@ -0,0 +1,8 @@ +package natgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/natgateways/model_tagsobject.go b/resource-manager/network/2024-01-01/natgateways/model_tagsobject.go new file mode 100644 index 00000000000..c5e055c3a58 --- /dev/null +++ b/resource-manager/network/2024-01-01/natgateways/model_tagsobject.go @@ -0,0 +1,8 @@ +package natgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/natgateways/predicates.go b/resource-manager/network/2024-01-01/natgateways/predicates.go new file mode 100644 index 00000000000..c0e09cf2f07 --- /dev/null +++ b/resource-manager/network/2024-01-01/natgateways/predicates.go @@ -0,0 +1,37 @@ +package natgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p NatGatewayOperationPredicate) Matches(input NatGateway) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/natgateways/version.go b/resource-manager/network/2024-01-01/natgateways/version.go new file mode 100644 index 00000000000..bc738a003fe --- /dev/null +++ b/resource-manager/network/2024-01-01/natgateways/version.go @@ -0,0 +1,12 @@ +package natgateways + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/natgateways/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/networkgroups/README.md b/resource-manager/network/2024-01-01/networkgroups/README.md new file mode 100644 index 00000000000..7f1dd4d8d82 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkgroups/README.md @@ -0,0 +1,86 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkgroups` Documentation + +The `networkgroups` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkgroups" +``` + + +### Client Initialization + +```go +client := networkgroups.NewNetworkGroupsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `NetworkGroupsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := networkgroups.NewNetworkGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "networkGroupValue") + +payload := networkgroups.NetworkGroup{ + // ... +} + + +read, err := client.CreateOrUpdate(ctx, id, payload, networkgroups.DefaultCreateOrUpdateOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkGroupsClient.Delete` + +```go +ctx := context.TODO() +id := networkgroups.NewNetworkGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "networkGroupValue") + +if err := client.DeleteThenPoll(ctx, id, networkgroups.DefaultDeleteOperationOptions()); err != nil { + // handle the error +} +``` + + +### Example Usage: `NetworkGroupsClient.Get` + +```go +ctx := context.TODO() +id := networkgroups.NewNetworkGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "networkGroupValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkGroupsClient.List` + +```go +ctx := context.TODO() +id := networkgroups.NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue") + +// alternatively `client.List(ctx, id, networkgroups.DefaultListOperationOptions())` can be used to do batched pagination +items, err := client.ListComplete(ctx, id, networkgroups.DefaultListOperationOptions()) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/networkgroups/client.go b/resource-manager/network/2024-01-01/networkgroups/client.go new file mode 100644 index 00000000000..3cfe1e1eebf --- /dev/null +++ b/resource-manager/network/2024-01-01/networkgroups/client.go @@ -0,0 +1,26 @@ +package networkgroups + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkGroupsClient struct { + Client *resourcemanager.Client +} + +func NewNetworkGroupsClientWithBaseURI(sdkApi sdkEnv.Api) (*NetworkGroupsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "networkgroups", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating NetworkGroupsClient: %+v", err) + } + + return &NetworkGroupsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/networkgroups/constants.go b/resource-manager/network/2024-01-01/networkgroups/constants.go new file mode 100644 index 00000000000..3bc1d35bd51 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkgroups/constants.go @@ -0,0 +1,57 @@ +package networkgroups + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/networkgroups/id_networkgroup.go b/resource-manager/network/2024-01-01/networkgroups/id_networkgroup.go new file mode 100644 index 00000000000..e92b4d5d7c0 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkgroups/id_networkgroup.go @@ -0,0 +1,139 @@ +package networkgroups + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NetworkGroupId{}) +} + +var _ resourceids.ResourceId = &NetworkGroupId{} + +// NetworkGroupId is a struct representing the Resource ID for a Network Group +type NetworkGroupId struct { + SubscriptionId string + ResourceGroupName string + NetworkManagerName string + NetworkGroupName string +} + +// NewNetworkGroupID returns a new NetworkGroupId struct +func NewNetworkGroupID(subscriptionId string, resourceGroupName string, networkManagerName string, networkGroupName string) NetworkGroupId { + return NetworkGroupId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkManagerName: networkManagerName, + NetworkGroupName: networkGroupName, + } +} + +// ParseNetworkGroupID parses 'input' into a NetworkGroupId +func ParseNetworkGroupID(input string) (*NetworkGroupId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkGroupId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkGroupId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNetworkGroupIDInsensitively parses 'input' case-insensitively into a NetworkGroupId +// note: this method should only be used for API response data and not user input +func ParseNetworkGroupIDInsensitively(input string) (*NetworkGroupId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkGroupId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkGroupId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NetworkGroupId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkManagerName, ok = input.Parsed["networkManagerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkManagerName", input) + } + + if id.NetworkGroupName, ok = input.Parsed["networkGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkGroupName", input) + } + + return nil +} + +// ValidateNetworkGroupID checks that 'input' can be parsed as a Network Group ID +func ValidateNetworkGroupID(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 := ParseNetworkGroupID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Network Group ID +func (id NetworkGroupId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkManagers/%s/networkGroups/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkManagerName, id.NetworkGroupName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Network Group ID +func (id NetworkGroupId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkManagers", "networkManagers", "networkManagers"), + resourceids.UserSpecifiedSegment("networkManagerName", "networkManagerValue"), + resourceids.StaticSegment("staticNetworkGroups", "networkGroups", "networkGroups"), + resourceids.UserSpecifiedSegment("networkGroupName", "networkGroupValue"), + } +} + +// String returns a human-readable description of this Network Group ID +func (id NetworkGroupId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Manager Name: %q", id.NetworkManagerName), + fmt.Sprintf("Network Group Name: %q", id.NetworkGroupName), + } + return fmt.Sprintf("Network Group (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/networkgroups/id_networkgroup_test.go b/resource-manager/network/2024-01-01/networkgroups/id_networkgroup_test.go new file mode 100644 index 00000000000..5224081b110 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkgroups/id_networkgroup_test.go @@ -0,0 +1,327 @@ +package networkgroups + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NetworkGroupId{} + +func TestNewNetworkGroupID(t *testing.T) { + id := NewNetworkGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "networkGroupValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkManagerName != "networkManagerValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkManagerName'", id.NetworkManagerName, "networkManagerValue") + } + + if id.NetworkGroupName != "networkGroupValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkGroupName'", id.NetworkGroupName, "networkGroupValue") + } +} + +func TestFormatNetworkGroupID(t *testing.T) { + actual := NewNetworkGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "networkGroupValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups/networkGroupValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNetworkGroupID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkGroupId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups/networkGroupValue", + Expected: &NetworkGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + NetworkGroupName: "networkGroupValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups/networkGroupValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkGroupID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + if actual.NetworkGroupName != v.Expected.NetworkGroupName { + t.Fatalf("Expected %q but got %q for NetworkGroupName", v.Expected.NetworkGroupName, actual.NetworkGroupName) + } + + } +} + +func TestParseNetworkGroupIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkGroupId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/nEtWoRkGrOuPs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups/networkGroupValue", + Expected: &NetworkGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + NetworkGroupName: "networkGroupValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups/networkGroupValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/nEtWoRkGrOuPs/nEtWoRkGrOuPvAlUe", + Expected: &NetworkGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkManagerName: "nEtWoRkMaNaGeRvAlUe", + NetworkGroupName: "nEtWoRkGrOuPvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/nEtWoRkGrOuPs/nEtWoRkGrOuPvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkGroupIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + if actual.NetworkGroupName != v.Expected.NetworkGroupName { + t.Fatalf("Expected %q but got %q for NetworkGroupName", v.Expected.NetworkGroupName, actual.NetworkGroupName) + } + + } +} + +func TestSegmentsForNetworkGroupId(t *testing.T) { + segments := NetworkGroupId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NetworkGroupId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/networkgroups/id_networkmanager.go b/resource-manager/network/2024-01-01/networkgroups/id_networkmanager.go new file mode 100644 index 00000000000..58b8bb2d432 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkgroups/id_networkmanager.go @@ -0,0 +1,130 @@ +package networkgroups + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NetworkManagerId{}) +} + +var _ resourceids.ResourceId = &NetworkManagerId{} + +// NetworkManagerId is a struct representing the Resource ID for a Network Manager +type NetworkManagerId struct { + SubscriptionId string + ResourceGroupName string + NetworkManagerName string +} + +// NewNetworkManagerID returns a new NetworkManagerId struct +func NewNetworkManagerID(subscriptionId string, resourceGroupName string, networkManagerName string) NetworkManagerId { + return NetworkManagerId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkManagerName: networkManagerName, + } +} + +// ParseNetworkManagerID parses 'input' into a NetworkManagerId +func ParseNetworkManagerID(input string) (*NetworkManagerId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkManagerId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkManagerId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNetworkManagerIDInsensitively parses 'input' case-insensitively into a NetworkManagerId +// note: this method should only be used for API response data and not user input +func ParseNetworkManagerIDInsensitively(input string) (*NetworkManagerId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkManagerId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkManagerId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NetworkManagerId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkManagerName, ok = input.Parsed["networkManagerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkManagerName", input) + } + + return nil +} + +// ValidateNetworkManagerID checks that 'input' can be parsed as a Network Manager ID +func ValidateNetworkManagerID(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 := ParseNetworkManagerID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Network Manager ID +func (id NetworkManagerId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkManagers/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkManagerName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Network Manager ID +func (id NetworkManagerId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkManagers", "networkManagers", "networkManagers"), + resourceids.UserSpecifiedSegment("networkManagerName", "networkManagerValue"), + } +} + +// String returns a human-readable description of this Network Manager ID +func (id NetworkManagerId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Manager Name: %q", id.NetworkManagerName), + } + return fmt.Sprintf("Network Manager (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/networkgroups/id_networkmanager_test.go b/resource-manager/network/2024-01-01/networkgroups/id_networkmanager_test.go new file mode 100644 index 00000000000..e48b7115869 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkgroups/id_networkmanager_test.go @@ -0,0 +1,282 @@ +package networkgroups + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NetworkManagerId{} + +func TestNewNetworkManagerID(t *testing.T) { + id := NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkManagerName != "networkManagerValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkManagerName'", id.NetworkManagerName, "networkManagerValue") + } +} + +func TestFormatNetworkManagerID(t *testing.T) { + actual := NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNetworkManagerID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkManagerId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Expected: &NetworkManagerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkManagerID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + } +} + +func TestParseNetworkManagerIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkManagerId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Expected: &NetworkManagerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe", + Expected: &NetworkManagerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkManagerName: "nEtWoRkMaNaGeRvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkManagerIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + } +} + +func TestSegmentsForNetworkManagerId(t *testing.T) { + segments := NetworkManagerId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NetworkManagerId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/networkgroups/method_createorupdate.go b/resource-manager/network/2024-01-01/networkgroups/method_createorupdate.go new file mode 100644 index 00000000000..dcb392d1ae2 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkgroups/method_createorupdate.go @@ -0,0 +1,88 @@ +package networkgroups + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkGroup +} + +type CreateOrUpdateOperationOptions struct { + IfMatch *string +} + +func DefaultCreateOrUpdateOperationOptions() CreateOrUpdateOperationOptions { + return CreateOrUpdateOperationOptions{} +} + +func (o CreateOrUpdateOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + if o.IfMatch != nil { + out.Append("If-Match", fmt.Sprintf("%v", *o.IfMatch)) + } + return &out +} + +func (o CreateOrUpdateOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o CreateOrUpdateOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + + return &out +} + +// CreateOrUpdate ... +func (c NetworkGroupsClient) CreateOrUpdate(ctx context.Context, id NetworkGroupId, input NetworkGroup, options CreateOrUpdateOperationOptions) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkGroup + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkgroups/method_delete.go b/resource-manager/network/2024-01-01/networkgroups/method_delete.go new file mode 100644 index 00000000000..567e0fb203a --- /dev/null +++ b/resource-manager/network/2024-01-01/networkgroups/method_delete.go @@ -0,0 +1,99 @@ +package networkgroups + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +type DeleteOperationOptions struct { + Force *bool +} + +func DefaultDeleteOperationOptions() DeleteOperationOptions { + return DeleteOperationOptions{} +} + +func (o DeleteOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o DeleteOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o DeleteOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Force != nil { + out.Append("force", fmt.Sprintf("%v", *o.Force)) + } + return &out +} + +// Delete ... +func (c NetworkGroupsClient) Delete(ctx context.Context, id NetworkGroupId, options DeleteOperationOptions) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c NetworkGroupsClient) DeleteThenPoll(ctx context.Context, id NetworkGroupId, options DeleteOperationOptions) error { + result, err := c.Delete(ctx, id, options) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkgroups/method_get.go b/resource-manager/network/2024-01-01/networkgroups/method_get.go new file mode 100644 index 00000000000..554db15d016 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkgroups/method_get.go @@ -0,0 +1,54 @@ +package networkgroups + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkGroup +} + +// Get ... +func (c NetworkGroupsClient) Get(ctx context.Context, id NetworkGroupId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkGroup + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkgroups/method_list.go b/resource-manager/network/2024-01-01/networkgroups/method_list.go new file mode 100644 index 00000000000..a802dbd08b3 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkgroups/method_list.go @@ -0,0 +1,120 @@ +package networkgroups + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NetworkGroup +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []NetworkGroup +} + +type ListOperationOptions struct { + Top *int64 +} + +func DefaultListOperationOptions() ListOperationOptions { + return ListOperationOptions{} +} + +func (o ListOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o ListOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o ListOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Top != nil { + out.Append("$top", fmt.Sprintf("%v", *o.Top)) + } + return &out +} + +// List ... +func (c NetworkGroupsClient) List(ctx context.Context, id NetworkManagerId, options ListOperationOptions) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/networkGroups", id.ID()), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NetworkGroup `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c NetworkGroupsClient) ListComplete(ctx context.Context, id NetworkManagerId, options ListOperationOptions) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, options, NetworkGroupOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c NetworkGroupsClient) ListCompleteMatchingPredicate(ctx context.Context, id NetworkManagerId, options ListOperationOptions, predicate NetworkGroupOperationPredicate) (result ListCompleteResult, err error) { + items := make([]NetworkGroup, 0) + + resp, err := c.List(ctx, id, options) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/networkgroups/model_networkgroup.go b/resource-manager/network/2024-01-01/networkgroups/model_networkgroup.go new file mode 100644 index 00000000000..c35ded0ac80 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkgroups/model_networkgroup.go @@ -0,0 +1,17 @@ +package networkgroups + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/systemdata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkGroupProperties `json:"properties,omitempty"` + SystemData *systemdata.SystemData `json:"systemData,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkgroups/model_networkgroupproperties.go b/resource-manager/network/2024-01-01/networkgroups/model_networkgroupproperties.go new file mode 100644 index 00000000000..69e5d9d5b22 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkgroups/model_networkgroupproperties.go @@ -0,0 +1,10 @@ +package networkgroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkGroupProperties struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkgroups/predicates.go b/resource-manager/network/2024-01-01/networkgroups/predicates.go new file mode 100644 index 00000000000..621d0d7b40a --- /dev/null +++ b/resource-manager/network/2024-01-01/networkgroups/predicates.go @@ -0,0 +1,32 @@ +package networkgroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkGroupOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p NetworkGroupOperationPredicate) Matches(input NetworkGroup) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/networkgroups/version.go b/resource-manager/network/2024-01-01/networkgroups/version.go new file mode 100644 index 00000000000..cfd68bccd10 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkgroups/version.go @@ -0,0 +1,12 @@ +package networkgroups + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/networkgroups/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/README.md b/resource-manager/network/2024-01-01/networkinterfaces/README.md new file mode 100644 index 00000000000..d40b0ed0e54 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/README.md @@ -0,0 +1,371 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkinterfaces` Documentation + +The `networkinterfaces` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkinterfaces" +``` + + +### Client Initialization + +```go +client := networkinterfaces.NewNetworkInterfacesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `NetworkInterfacesClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := commonids.NewNetworkInterfaceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkInterfaceValue") + +payload := networkinterfaces.NetworkInterface{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `NetworkInterfacesClient.Delete` + +```go +ctx := context.TODO() +id := commonids.NewNetworkInterfaceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkInterfaceValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `NetworkInterfacesClient.Get` + +```go +ctx := context.TODO() +id := commonids.NewNetworkInterfaceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkInterfaceValue") + +read, err := client.Get(ctx, id, networkinterfaces.DefaultGetOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkInterfacesClient.GetCloudServiceNetworkInterface` + +```go +ctx := context.TODO() +id := networkinterfaces.NewRoleInstanceNetworkInterfaceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "cloudServiceValue", "roleInstanceValue", "networkInterfaceValue") + +read, err := client.GetCloudServiceNetworkInterface(ctx, id, networkinterfaces.DefaultGetCloudServiceNetworkInterfaceOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkInterfacesClient.GetEffectiveRouteTable` + +```go +ctx := context.TODO() +id := commonids.NewNetworkInterfaceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkInterfaceValue") + +// alternatively `client.GetEffectiveRouteTable(ctx, id)` can be used to do batched pagination +items, err := client.GetEffectiveRouteTableComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `NetworkInterfacesClient.GetVirtualMachineScaleSetIPConfiguration` + +```go +ctx := context.TODO() +id := commonids.NewVirtualMachineScaleSetIPConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualMachineScaleSetValue", "virtualMachineValue", "networkInterfaceValue", "ipConfigurationValue") + +read, err := client.GetVirtualMachineScaleSetIPConfiguration(ctx, id, networkinterfaces.DefaultGetVirtualMachineScaleSetIPConfigurationOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkInterfacesClient.GetVirtualMachineScaleSetNetworkInterface` + +```go +ctx := context.TODO() +id := commonids.NewVirtualMachineScaleSetNetworkInterfaceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualMachineScaleSetValue", "virtualMachineValue", "networkInterfaceValue") + +read, err := client.GetVirtualMachineScaleSetNetworkInterface(ctx, id, networkinterfaces.DefaultGetVirtualMachineScaleSetNetworkInterfaceOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkInterfacesClient.List` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `NetworkInterfacesClient.ListAll` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.ListAll(ctx, id)` can be used to do batched pagination +items, err := client.ListAllComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `NetworkInterfacesClient.ListCloudServiceNetworkInterfaces` + +```go +ctx := context.TODO() +id := networkinterfaces.NewProviderCloudServiceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "cloudServiceValue") + +// alternatively `client.ListCloudServiceNetworkInterfaces(ctx, id)` can be used to do batched pagination +items, err := client.ListCloudServiceNetworkInterfacesComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `NetworkInterfacesClient.ListCloudServiceRoleInstanceNetworkInterfaces` + +```go +ctx := context.TODO() +id := networkinterfaces.NewRoleInstanceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "cloudServiceValue", "roleInstanceValue") + +// alternatively `client.ListCloudServiceRoleInstanceNetworkInterfaces(ctx, id)` can be used to do batched pagination +items, err := client.ListCloudServiceRoleInstanceNetworkInterfacesComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `NetworkInterfacesClient.ListEffectiveNetworkSecurityGroups` + +```go +ctx := context.TODO() +id := commonids.NewNetworkInterfaceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkInterfaceValue") + +// alternatively `client.ListEffectiveNetworkSecurityGroups(ctx, id)` can be used to do batched pagination +items, err := client.ListEffectiveNetworkSecurityGroupsComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `NetworkInterfacesClient.ListVirtualMachineScaleSetIPConfigurations` + +```go +ctx := context.TODO() +id := commonids.NewVirtualMachineScaleSetNetworkInterfaceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualMachineScaleSetValue", "virtualMachineValue", "networkInterfaceValue") + +// alternatively `client.ListVirtualMachineScaleSetIPConfigurations(ctx, id, networkinterfaces.DefaultListVirtualMachineScaleSetIPConfigurationsOperationOptions())` can be used to do batched pagination +items, err := client.ListVirtualMachineScaleSetIPConfigurationsComplete(ctx, id, networkinterfaces.DefaultListVirtualMachineScaleSetIPConfigurationsOperationOptions()) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `NetworkInterfacesClient.ListVirtualMachineScaleSetNetworkInterfaces` + +```go +ctx := context.TODO() +id := networkinterfaces.NewVirtualMachineScaleSetID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualMachineScaleSetValue") + +// alternatively `client.ListVirtualMachineScaleSetNetworkInterfaces(ctx, id)` can be used to do batched pagination +items, err := client.ListVirtualMachineScaleSetNetworkInterfacesComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `NetworkInterfacesClient.ListVirtualMachineScaleSetVMNetworkInterfaces` + +```go +ctx := context.TODO() +id := networkinterfaces.NewVirtualMachineID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualMachineScaleSetValue", "virtualMachineValue") + +// alternatively `client.ListVirtualMachineScaleSetVMNetworkInterfaces(ctx, id)` can be used to do batched pagination +items, err := client.ListVirtualMachineScaleSetVMNetworkInterfacesComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `NetworkInterfacesClient.NetworkInterfaceIPConfigurationsGet` + +```go +ctx := context.TODO() +id := commonids.NewNetworkInterfaceIPConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkInterfaceValue", "ipConfigurationValue") + +read, err := client.NetworkInterfaceIPConfigurationsGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkInterfacesClient.NetworkInterfaceIPConfigurationsList` + +```go +ctx := context.TODO() +id := commonids.NewNetworkInterfaceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkInterfaceValue") + +// alternatively `client.NetworkInterfaceIPConfigurationsList(ctx, id)` can be used to do batched pagination +items, err := client.NetworkInterfaceIPConfigurationsListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `NetworkInterfacesClient.NetworkInterfaceLoadBalancersList` + +```go +ctx := context.TODO() +id := commonids.NewNetworkInterfaceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkInterfaceValue") + +// alternatively `client.NetworkInterfaceLoadBalancersList(ctx, id)` can be used to do batched pagination +items, err := client.NetworkInterfaceLoadBalancersListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `NetworkInterfacesClient.NetworkInterfaceTapConfigurationsGet` + +```go +ctx := context.TODO() +id := networkinterfaces.NewTapConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkInterfaceValue", "tapConfigurationValue") + +read, err := client.NetworkInterfaceTapConfigurationsGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkInterfacesClient.NetworkInterfaceTapConfigurationsList` + +```go +ctx := context.TODO() +id := commonids.NewNetworkInterfaceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkInterfaceValue") + +// alternatively `client.NetworkInterfaceTapConfigurationsList(ctx, id)` can be used to do batched pagination +items, err := client.NetworkInterfaceTapConfigurationsListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `NetworkInterfacesClient.UpdateTags` + +```go +ctx := context.TODO() +id := commonids.NewNetworkInterfaceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkInterfaceValue") + +payload := networkinterfaces.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/networkinterfaces/client.go b/resource-manager/network/2024-01-01/networkinterfaces/client.go new file mode 100644 index 00000000000..cd098aeccdf --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/client.go @@ -0,0 +1,26 @@ +package networkinterfaces + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfacesClient struct { + Client *resourcemanager.Client +} + +func NewNetworkInterfacesClientWithBaseURI(sdkApi sdkEnv.Api) (*NetworkInterfacesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "networkinterfaces", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating NetworkInterfacesClient: %+v", err) + } + + return &NetworkInterfacesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/constants.go b/resource-manager/network/2024-01-01/networkinterfaces/constants.go new file mode 100644 index 00000000000..cf88bae168b --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/constants.go @@ -0,0 +1,1588 @@ +package networkinterfaces + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettingsProtectionMode string + +const ( + DdosSettingsProtectionModeDisabled DdosSettingsProtectionMode = "Disabled" + DdosSettingsProtectionModeEnabled DdosSettingsProtectionMode = "Enabled" + DdosSettingsProtectionModeVirtualNetworkInherited DdosSettingsProtectionMode = "VirtualNetworkInherited" +) + +func PossibleValuesForDdosSettingsProtectionMode() []string { + return []string{ + string(DdosSettingsProtectionModeDisabled), + string(DdosSettingsProtectionModeEnabled), + string(DdosSettingsProtectionModeVirtualNetworkInherited), + } +} + +func (s *DdosSettingsProtectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDdosSettingsProtectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDdosSettingsProtectionMode(input string) (*DdosSettingsProtectionMode, error) { + vals := map[string]DdosSettingsProtectionMode{ + "disabled": DdosSettingsProtectionModeDisabled, + "enabled": DdosSettingsProtectionModeEnabled, + "virtualnetworkinherited": DdosSettingsProtectionModeVirtualNetworkInherited, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DdosSettingsProtectionMode(input) + return &out, nil +} + +type DeleteOptions string + +const ( + DeleteOptionsDelete DeleteOptions = "Delete" + DeleteOptionsDetach DeleteOptions = "Detach" +) + +func PossibleValuesForDeleteOptions() []string { + return []string{ + string(DeleteOptionsDelete), + string(DeleteOptionsDetach), + } +} + +func (s *DeleteOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteOptions(input string) (*DeleteOptions, error) { + vals := map[string]DeleteOptions{ + "delete": DeleteOptionsDelete, + "detach": DeleteOptionsDetach, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteOptions(input) + return &out, nil +} + +type EffectiveRouteSource string + +const ( + EffectiveRouteSourceDefault EffectiveRouteSource = "Default" + EffectiveRouteSourceUnknown EffectiveRouteSource = "Unknown" + EffectiveRouteSourceUser EffectiveRouteSource = "User" + EffectiveRouteSourceVirtualNetworkGateway EffectiveRouteSource = "VirtualNetworkGateway" +) + +func PossibleValuesForEffectiveRouteSource() []string { + return []string{ + string(EffectiveRouteSourceDefault), + string(EffectiveRouteSourceUnknown), + string(EffectiveRouteSourceUser), + string(EffectiveRouteSourceVirtualNetworkGateway), + } +} + +func (s *EffectiveRouteSource) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseEffectiveRouteSource(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseEffectiveRouteSource(input string) (*EffectiveRouteSource, error) { + vals := map[string]EffectiveRouteSource{ + "default": EffectiveRouteSourceDefault, + "unknown": EffectiveRouteSourceUnknown, + "user": EffectiveRouteSourceUser, + "virtualnetworkgateway": EffectiveRouteSourceVirtualNetworkGateway, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := EffectiveRouteSource(input) + return &out, nil +} + +type EffectiveRouteState string + +const ( + EffectiveRouteStateActive EffectiveRouteState = "Active" + EffectiveRouteStateInvalid EffectiveRouteState = "Invalid" +) + +func PossibleValuesForEffectiveRouteState() []string { + return []string{ + string(EffectiveRouteStateActive), + string(EffectiveRouteStateInvalid), + } +} + +func (s *EffectiveRouteState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseEffectiveRouteState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseEffectiveRouteState(input string) (*EffectiveRouteState, error) { + vals := map[string]EffectiveRouteState{ + "active": EffectiveRouteStateActive, + "invalid": EffectiveRouteStateInvalid, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := EffectiveRouteState(input) + return &out, nil +} + +type EffectiveSecurityRuleProtocol string + +const ( + EffectiveSecurityRuleProtocolAll EffectiveSecurityRuleProtocol = "All" + EffectiveSecurityRuleProtocolTcp EffectiveSecurityRuleProtocol = "Tcp" + EffectiveSecurityRuleProtocolUdp EffectiveSecurityRuleProtocol = "Udp" +) + +func PossibleValuesForEffectiveSecurityRuleProtocol() []string { + return []string{ + string(EffectiveSecurityRuleProtocolAll), + string(EffectiveSecurityRuleProtocolTcp), + string(EffectiveSecurityRuleProtocolUdp), + } +} + +func (s *EffectiveSecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseEffectiveSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseEffectiveSecurityRuleProtocol(input string) (*EffectiveSecurityRuleProtocol, error) { + vals := map[string]EffectiveSecurityRuleProtocol{ + "all": EffectiveSecurityRuleProtocolAll, + "tcp": EffectiveSecurityRuleProtocolTcp, + "udp": EffectiveSecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := EffectiveSecurityRuleProtocol(input) + return &out, nil +} + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelInterfaceType string + +const ( + GatewayLoadBalancerTunnelInterfaceTypeExternal GatewayLoadBalancerTunnelInterfaceType = "External" + GatewayLoadBalancerTunnelInterfaceTypeInternal GatewayLoadBalancerTunnelInterfaceType = "Internal" + GatewayLoadBalancerTunnelInterfaceTypeNone GatewayLoadBalancerTunnelInterfaceType = "None" +) + +func PossibleValuesForGatewayLoadBalancerTunnelInterfaceType() []string { + return []string{ + string(GatewayLoadBalancerTunnelInterfaceTypeExternal), + string(GatewayLoadBalancerTunnelInterfaceTypeInternal), + string(GatewayLoadBalancerTunnelInterfaceTypeNone), + } +} + +func (s *GatewayLoadBalancerTunnelInterfaceType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelInterfaceType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelInterfaceType(input string) (*GatewayLoadBalancerTunnelInterfaceType, error) { + vals := map[string]GatewayLoadBalancerTunnelInterfaceType{ + "external": GatewayLoadBalancerTunnelInterfaceTypeExternal, + "internal": GatewayLoadBalancerTunnelInterfaceTypeInternal, + "none": GatewayLoadBalancerTunnelInterfaceTypeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelInterfaceType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelProtocol string + +const ( + GatewayLoadBalancerTunnelProtocolNative GatewayLoadBalancerTunnelProtocol = "Native" + GatewayLoadBalancerTunnelProtocolNone GatewayLoadBalancerTunnelProtocol = "None" + GatewayLoadBalancerTunnelProtocolVXLAN GatewayLoadBalancerTunnelProtocol = "VXLAN" +) + +func PossibleValuesForGatewayLoadBalancerTunnelProtocol() []string { + return []string{ + string(GatewayLoadBalancerTunnelProtocolNative), + string(GatewayLoadBalancerTunnelProtocolNone), + string(GatewayLoadBalancerTunnelProtocolVXLAN), + } +} + +func (s *GatewayLoadBalancerTunnelProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelProtocol(input string) (*GatewayLoadBalancerTunnelProtocol, error) { + vals := map[string]GatewayLoadBalancerTunnelProtocol{ + "native": GatewayLoadBalancerTunnelProtocolNative, + "none": GatewayLoadBalancerTunnelProtocolNone, + "vxlan": GatewayLoadBalancerTunnelProtocolVXLAN, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelProtocol(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} + +type LoadBalancerBackendAddressAdminState string + +const ( + LoadBalancerBackendAddressAdminStateDown LoadBalancerBackendAddressAdminState = "Down" + LoadBalancerBackendAddressAdminStateNone LoadBalancerBackendAddressAdminState = "None" + LoadBalancerBackendAddressAdminStateUp LoadBalancerBackendAddressAdminState = "Up" +) + +func PossibleValuesForLoadBalancerBackendAddressAdminState() []string { + return []string{ + string(LoadBalancerBackendAddressAdminStateDown), + string(LoadBalancerBackendAddressAdminStateNone), + string(LoadBalancerBackendAddressAdminStateUp), + } +} + +func (s *LoadBalancerBackendAddressAdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerBackendAddressAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerBackendAddressAdminState(input string) (*LoadBalancerBackendAddressAdminState, error) { + vals := map[string]LoadBalancerBackendAddressAdminState{ + "down": LoadBalancerBackendAddressAdminStateDown, + "none": LoadBalancerBackendAddressAdminStateNone, + "up": LoadBalancerBackendAddressAdminStateUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerBackendAddressAdminState(input) + return &out, nil +} + +type LoadBalancerOutboundRuleProtocol string + +const ( + LoadBalancerOutboundRuleProtocolAll LoadBalancerOutboundRuleProtocol = "All" + LoadBalancerOutboundRuleProtocolTcp LoadBalancerOutboundRuleProtocol = "Tcp" + LoadBalancerOutboundRuleProtocolUdp LoadBalancerOutboundRuleProtocol = "Udp" +) + +func PossibleValuesForLoadBalancerOutboundRuleProtocol() []string { + return []string{ + string(LoadBalancerOutboundRuleProtocolAll), + string(LoadBalancerOutboundRuleProtocolTcp), + string(LoadBalancerOutboundRuleProtocolUdp), + } +} + +func (s *LoadBalancerOutboundRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerOutboundRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerOutboundRuleProtocol(input string) (*LoadBalancerOutboundRuleProtocol, error) { + vals := map[string]LoadBalancerOutboundRuleProtocol{ + "all": LoadBalancerOutboundRuleProtocolAll, + "tcp": LoadBalancerOutboundRuleProtocolTcp, + "udp": LoadBalancerOutboundRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerOutboundRuleProtocol(input) + return &out, nil +} + +type LoadBalancerSkuName string + +const ( + LoadBalancerSkuNameBasic LoadBalancerSkuName = "Basic" + LoadBalancerSkuNameGateway LoadBalancerSkuName = "Gateway" + LoadBalancerSkuNameStandard LoadBalancerSkuName = "Standard" +) + +func PossibleValuesForLoadBalancerSkuName() []string { + return []string{ + string(LoadBalancerSkuNameBasic), + string(LoadBalancerSkuNameGateway), + string(LoadBalancerSkuNameStandard), + } +} + +func (s *LoadBalancerSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerSkuName(input string) (*LoadBalancerSkuName, error) { + vals := map[string]LoadBalancerSkuName{ + "basic": LoadBalancerSkuNameBasic, + "gateway": LoadBalancerSkuNameGateway, + "standard": LoadBalancerSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerSkuName(input) + return &out, nil +} + +type LoadBalancerSkuTier string + +const ( + LoadBalancerSkuTierGlobal LoadBalancerSkuTier = "Global" + LoadBalancerSkuTierRegional LoadBalancerSkuTier = "Regional" +) + +func PossibleValuesForLoadBalancerSkuTier() []string { + return []string{ + string(LoadBalancerSkuTierGlobal), + string(LoadBalancerSkuTierRegional), + } +} + +func (s *LoadBalancerSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerSkuTier(input string) (*LoadBalancerSkuTier, error) { + vals := map[string]LoadBalancerSkuTier{ + "global": LoadBalancerSkuTierGlobal, + "regional": LoadBalancerSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerSkuTier(input) + return &out, nil +} + +type LoadDistribution string + +const ( + LoadDistributionDefault LoadDistribution = "Default" + LoadDistributionSourceIP LoadDistribution = "SourceIP" + LoadDistributionSourceIPProtocol LoadDistribution = "SourceIPProtocol" +) + +func PossibleValuesForLoadDistribution() []string { + return []string{ + string(LoadDistributionDefault), + string(LoadDistributionSourceIP), + string(LoadDistributionSourceIPProtocol), + } +} + +func (s *LoadDistribution) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadDistribution(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadDistribution(input string) (*LoadDistribution, error) { + vals := map[string]LoadDistribution{ + "default": LoadDistributionDefault, + "sourceip": LoadDistributionSourceIP, + "sourceipprotocol": LoadDistributionSourceIPProtocol, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadDistribution(input) + return &out, nil +} + +type NatGatewaySkuName string + +const ( + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +func PossibleValuesForNatGatewaySkuName() []string { + return []string{ + string(NatGatewaySkuNameStandard), + } +} + +func (s *NatGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNatGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNatGatewaySkuName(input string) (*NatGatewaySkuName, error) { + vals := map[string]NatGatewaySkuName{ + "standard": NatGatewaySkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NatGatewaySkuName(input) + return &out, nil +} + +type NetworkInterfaceAuxiliaryMode string + +const ( + NetworkInterfaceAuxiliaryModeAcceleratedConnections NetworkInterfaceAuxiliaryMode = "AcceleratedConnections" + NetworkInterfaceAuxiliaryModeFloating NetworkInterfaceAuxiliaryMode = "Floating" + NetworkInterfaceAuxiliaryModeMaxConnections NetworkInterfaceAuxiliaryMode = "MaxConnections" + NetworkInterfaceAuxiliaryModeNone NetworkInterfaceAuxiliaryMode = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliaryMode() []string { + return []string{ + string(NetworkInterfaceAuxiliaryModeAcceleratedConnections), + string(NetworkInterfaceAuxiliaryModeFloating), + string(NetworkInterfaceAuxiliaryModeMaxConnections), + string(NetworkInterfaceAuxiliaryModeNone), + } +} + +func (s *NetworkInterfaceAuxiliaryMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliaryMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliaryMode(input string) (*NetworkInterfaceAuxiliaryMode, error) { + vals := map[string]NetworkInterfaceAuxiliaryMode{ + "acceleratedconnections": NetworkInterfaceAuxiliaryModeAcceleratedConnections, + "floating": NetworkInterfaceAuxiliaryModeFloating, + "maxconnections": NetworkInterfaceAuxiliaryModeMaxConnections, + "none": NetworkInterfaceAuxiliaryModeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliaryMode(input) + return &out, nil +} + +type NetworkInterfaceAuxiliarySku string + +const ( + NetworkInterfaceAuxiliarySkuAEight NetworkInterfaceAuxiliarySku = "A8" + NetworkInterfaceAuxiliarySkuAFour NetworkInterfaceAuxiliarySku = "A4" + NetworkInterfaceAuxiliarySkuAOne NetworkInterfaceAuxiliarySku = "A1" + NetworkInterfaceAuxiliarySkuATwo NetworkInterfaceAuxiliarySku = "A2" + NetworkInterfaceAuxiliarySkuNone NetworkInterfaceAuxiliarySku = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliarySku() []string { + return []string{ + string(NetworkInterfaceAuxiliarySkuAEight), + string(NetworkInterfaceAuxiliarySkuAFour), + string(NetworkInterfaceAuxiliarySkuAOne), + string(NetworkInterfaceAuxiliarySkuATwo), + string(NetworkInterfaceAuxiliarySkuNone), + } +} + +func (s *NetworkInterfaceAuxiliarySku) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliarySku(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliarySku(input string) (*NetworkInterfaceAuxiliarySku, error) { + vals := map[string]NetworkInterfaceAuxiliarySku{ + "a8": NetworkInterfaceAuxiliarySkuAEight, + "a4": NetworkInterfaceAuxiliarySkuAFour, + "a1": NetworkInterfaceAuxiliarySkuAOne, + "a2": NetworkInterfaceAuxiliarySkuATwo, + "none": NetworkInterfaceAuxiliarySkuNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliarySku(input) + return &out, nil +} + +type NetworkInterfaceMigrationPhase string + +const ( + NetworkInterfaceMigrationPhaseAbort NetworkInterfaceMigrationPhase = "Abort" + NetworkInterfaceMigrationPhaseCommit NetworkInterfaceMigrationPhase = "Commit" + NetworkInterfaceMigrationPhaseCommitted NetworkInterfaceMigrationPhase = "Committed" + NetworkInterfaceMigrationPhaseNone NetworkInterfaceMigrationPhase = "None" + NetworkInterfaceMigrationPhasePrepare NetworkInterfaceMigrationPhase = "Prepare" +) + +func PossibleValuesForNetworkInterfaceMigrationPhase() []string { + return []string{ + string(NetworkInterfaceMigrationPhaseAbort), + string(NetworkInterfaceMigrationPhaseCommit), + string(NetworkInterfaceMigrationPhaseCommitted), + string(NetworkInterfaceMigrationPhaseNone), + string(NetworkInterfaceMigrationPhasePrepare), + } +} + +func (s *NetworkInterfaceMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceMigrationPhase(input string) (*NetworkInterfaceMigrationPhase, error) { + vals := map[string]NetworkInterfaceMigrationPhase{ + "abort": NetworkInterfaceMigrationPhaseAbort, + "commit": NetworkInterfaceMigrationPhaseCommit, + "committed": NetworkInterfaceMigrationPhaseCommitted, + "none": NetworkInterfaceMigrationPhaseNone, + "prepare": NetworkInterfaceMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceMigrationPhase(input) + return &out, nil +} + +type NetworkInterfaceNicType string + +const ( + NetworkInterfaceNicTypeElastic NetworkInterfaceNicType = "Elastic" + NetworkInterfaceNicTypeStandard NetworkInterfaceNicType = "Standard" +) + +func PossibleValuesForNetworkInterfaceNicType() []string { + return []string{ + string(NetworkInterfaceNicTypeElastic), + string(NetworkInterfaceNicTypeStandard), + } +} + +func (s *NetworkInterfaceNicType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceNicType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceNicType(input string) (*NetworkInterfaceNicType, error) { + vals := map[string]NetworkInterfaceNicType{ + "elastic": NetworkInterfaceNicTypeElastic, + "standard": NetworkInterfaceNicTypeStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceNicType(input) + return &out, nil +} + +type ProbeNoHealthyBackendsBehavior string + +const ( + ProbeNoHealthyBackendsBehaviorAllProbedDown ProbeNoHealthyBackendsBehavior = "AllProbedDown" + ProbeNoHealthyBackendsBehaviorAllProbedUp ProbeNoHealthyBackendsBehavior = "AllProbedUp" +) + +func PossibleValuesForProbeNoHealthyBackendsBehavior() []string { + return []string{ + string(ProbeNoHealthyBackendsBehaviorAllProbedDown), + string(ProbeNoHealthyBackendsBehaviorAllProbedUp), + } +} + +func (s *ProbeNoHealthyBackendsBehavior) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProbeNoHealthyBackendsBehavior(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProbeNoHealthyBackendsBehavior(input string) (*ProbeNoHealthyBackendsBehavior, error) { + vals := map[string]ProbeNoHealthyBackendsBehavior{ + "allprobeddown": ProbeNoHealthyBackendsBehaviorAllProbedDown, + "allprobedup": ProbeNoHealthyBackendsBehaviorAllProbedUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProbeNoHealthyBackendsBehavior(input) + return &out, nil +} + +type ProbeProtocol string + +const ( + ProbeProtocolHTTP ProbeProtocol = "Http" + ProbeProtocolHTTPS ProbeProtocol = "Https" + ProbeProtocolTcp ProbeProtocol = "Tcp" +) + +func PossibleValuesForProbeProtocol() []string { + return []string{ + string(ProbeProtocolHTTP), + string(ProbeProtocolHTTPS), + string(ProbeProtocolTcp), + } +} + +func (s *ProbeProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProbeProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProbeProtocol(input string) (*ProbeProtocol, error) { + vals := map[string]ProbeProtocol{ + "http": ProbeProtocolHTTP, + "https": ProbeProtocolHTTPS, + "tcp": ProbeProtocolTcp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProbeProtocol(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type PublicIPAddressDnsSettingsDomainNameLabelScope string + +const ( + PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "NoReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "ResourceGroupReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "SubscriptionReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "TenantReuse" +) + +func PossibleValuesForPublicIPAddressDnsSettingsDomainNameLabelScope() []string { + return []string{ + string(PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse), + } +} + +func (s *PublicIPAddressDnsSettingsDomainNameLabelScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressDnsSettingsDomainNameLabelScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressDnsSettingsDomainNameLabelScope(input string) (*PublicIPAddressDnsSettingsDomainNameLabelScope, error) { + vals := map[string]PublicIPAddressDnsSettingsDomainNameLabelScope{ + "noreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse, + "resourcegroupreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse, + "subscriptionreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse, + "tenantreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressDnsSettingsDomainNameLabelScope(input) + return &out, nil +} + +type PublicIPAddressMigrationPhase string + +const ( + PublicIPAddressMigrationPhaseAbort PublicIPAddressMigrationPhase = "Abort" + PublicIPAddressMigrationPhaseCommit PublicIPAddressMigrationPhase = "Commit" + PublicIPAddressMigrationPhaseCommitted PublicIPAddressMigrationPhase = "Committed" + PublicIPAddressMigrationPhaseNone PublicIPAddressMigrationPhase = "None" + PublicIPAddressMigrationPhasePrepare PublicIPAddressMigrationPhase = "Prepare" +) + +func PossibleValuesForPublicIPAddressMigrationPhase() []string { + return []string{ + string(PublicIPAddressMigrationPhaseAbort), + string(PublicIPAddressMigrationPhaseCommit), + string(PublicIPAddressMigrationPhaseCommitted), + string(PublicIPAddressMigrationPhaseNone), + string(PublicIPAddressMigrationPhasePrepare), + } +} + +func (s *PublicIPAddressMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressMigrationPhase(input string) (*PublicIPAddressMigrationPhase, error) { + vals := map[string]PublicIPAddressMigrationPhase{ + "abort": PublicIPAddressMigrationPhaseAbort, + "commit": PublicIPAddressMigrationPhaseCommit, + "committed": PublicIPAddressMigrationPhaseCommitted, + "none": PublicIPAddressMigrationPhaseNone, + "prepare": PublicIPAddressMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressMigrationPhase(input) + return &out, nil +} + +type PublicIPAddressSkuName string + +const ( + PublicIPAddressSkuNameBasic PublicIPAddressSkuName = "Basic" + PublicIPAddressSkuNameStandard PublicIPAddressSkuName = "Standard" +) + +func PossibleValuesForPublicIPAddressSkuName() []string { + return []string{ + string(PublicIPAddressSkuNameBasic), + string(PublicIPAddressSkuNameStandard), + } +} + +func (s *PublicIPAddressSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuName(input string) (*PublicIPAddressSkuName, error) { + vals := map[string]PublicIPAddressSkuName{ + "basic": PublicIPAddressSkuNameBasic, + "standard": PublicIPAddressSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuName(input) + return &out, nil +} + +type PublicIPAddressSkuTier string + +const ( + PublicIPAddressSkuTierGlobal PublicIPAddressSkuTier = "Global" + PublicIPAddressSkuTierRegional PublicIPAddressSkuTier = "Regional" +) + +func PossibleValuesForPublicIPAddressSkuTier() []string { + return []string{ + string(PublicIPAddressSkuTierGlobal), + string(PublicIPAddressSkuTierRegional), + } +} + +func (s *PublicIPAddressSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuTier(input string) (*PublicIPAddressSkuTier, error) { + vals := map[string]PublicIPAddressSkuTier{ + "global": PublicIPAddressSkuTierGlobal, + "regional": PublicIPAddressSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuTier(input) + return &out, nil +} + +type RouteNextHopType string + +const ( + RouteNextHopTypeInternet RouteNextHopType = "Internet" + RouteNextHopTypeNone RouteNextHopType = "None" + RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" + RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" + RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" +) + +func PossibleValuesForRouteNextHopType() []string { + return []string{ + string(RouteNextHopTypeInternet), + string(RouteNextHopTypeNone), + string(RouteNextHopTypeVirtualAppliance), + string(RouteNextHopTypeVirtualNetworkGateway), + string(RouteNextHopTypeVnetLocal), + } +} + +func (s *RouteNextHopType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteNextHopType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteNextHopType(input string) (*RouteNextHopType, error) { + vals := map[string]RouteNextHopType{ + "internet": RouteNextHopTypeInternet, + "none": RouteNextHopTypeNone, + "virtualappliance": RouteNextHopTypeVirtualAppliance, + "virtualnetworkgateway": RouteNextHopTypeVirtualNetworkGateway, + "vnetlocal": RouteNextHopTypeVnetLocal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteNextHopType(input) + return &out, nil +} + +type SecurityRuleAccess string + +const ( + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +func PossibleValuesForSecurityRuleAccess() []string { + return []string{ + string(SecurityRuleAccessAllow), + string(SecurityRuleAccessDeny), + } +} + +func (s *SecurityRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleAccess(input string) (*SecurityRuleAccess, error) { + vals := map[string]SecurityRuleAccess{ + "allow": SecurityRuleAccessAllow, + "deny": SecurityRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleAccess(input) + return &out, nil +} + +type SecurityRuleDirection string + +const ( + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityRuleDirection() []string { + return []string{ + string(SecurityRuleDirectionInbound), + string(SecurityRuleDirectionOutbound), + } +} + +func (s *SecurityRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleDirection(input string) (*SecurityRuleDirection, error) { + vals := map[string]SecurityRuleDirection{ + "inbound": SecurityRuleDirectionInbound, + "outbound": SecurityRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleDirection(input) + return &out, nil +} + +type SecurityRuleProtocol string + +const ( + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + SecurityRuleProtocolAny SecurityRuleProtocol = "*" + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + SecurityRuleProtocolTcp SecurityRuleProtocol = "Tcp" + SecurityRuleProtocolUdp SecurityRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityRuleProtocol() []string { + return []string{ + string(SecurityRuleProtocolAh), + string(SecurityRuleProtocolAny), + string(SecurityRuleProtocolEsp), + string(SecurityRuleProtocolIcmp), + string(SecurityRuleProtocolTcp), + string(SecurityRuleProtocolUdp), + } +} + +func (s *SecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleProtocol(input string) (*SecurityRuleProtocol, error) { + vals := map[string]SecurityRuleProtocol{ + "ah": SecurityRuleProtocolAh, + "*": SecurityRuleProtocolAny, + "esp": SecurityRuleProtocolEsp, + "icmp": SecurityRuleProtocolIcmp, + "tcp": SecurityRuleProtocolTcp, + "udp": SecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleProtocol(input) + return &out, nil +} + +type SharingScope string + +const ( + SharingScopeDelegatedServices SharingScope = "DelegatedServices" + SharingScopeTenant SharingScope = "Tenant" +) + +func PossibleValuesForSharingScope() []string { + return []string{ + string(SharingScopeDelegatedServices), + string(SharingScopeTenant), + } +} + +func (s *SharingScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSharingScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSharingScope(input string) (*SharingScope, error) { + vals := map[string]SharingScope{ + "delegatedservices": SharingScopeDelegatedServices, + "tenant": SharingScopeTenant, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SharingScope(input) + return &out, nil +} + +type SyncMode string + +const ( + SyncModeAutomatic SyncMode = "Automatic" + SyncModeManual SyncMode = "Manual" +) + +func PossibleValuesForSyncMode() []string { + return []string{ + string(SyncModeAutomatic), + string(SyncModeManual), + } +} + +func (s *SyncMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSyncMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSyncMode(input string) (*SyncMode, error) { + vals := map[string]SyncMode{ + "automatic": SyncModeAutomatic, + "manual": SyncModeManual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SyncMode(input) + return &out, nil +} + +type TransportProtocol string + +const ( + TransportProtocolAll TransportProtocol = "All" + TransportProtocolTcp TransportProtocol = "Tcp" + TransportProtocolUdp TransportProtocol = "Udp" +) + +func PossibleValuesForTransportProtocol() []string { + return []string{ + string(TransportProtocolAll), + string(TransportProtocolTcp), + string(TransportProtocolUdp), + } +} + +func (s *TransportProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseTransportProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseTransportProtocol(input string) (*TransportProtocol, error) { + vals := map[string]TransportProtocol{ + "all": TransportProtocolAll, + "tcp": TransportProtocolTcp, + "udp": TransportProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := TransportProtocol(input) + return &out, nil +} + +type VirtualNetworkPrivateEndpointNetworkPolicies string + +const ( + VirtualNetworkPrivateEndpointNetworkPoliciesDisabled VirtualNetworkPrivateEndpointNetworkPolicies = "Disabled" + VirtualNetworkPrivateEndpointNetworkPoliciesEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "Enabled" + VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "NetworkSecurityGroupEnabled" + VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "RouteTableEnabled" +) + +func PossibleValuesForVirtualNetworkPrivateEndpointNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateEndpointNetworkPoliciesDisabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled), + } +} + +func (s *VirtualNetworkPrivateEndpointNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateEndpointNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateEndpointNetworkPolicies(input string) (*VirtualNetworkPrivateEndpointNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateEndpointNetworkPolicies{ + "disabled": VirtualNetworkPrivateEndpointNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateEndpointNetworkPoliciesEnabled, + "networksecuritygroupenabled": VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled, + "routetableenabled": VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateEndpointNetworkPolicies(input) + return &out, nil +} + +type VirtualNetworkPrivateLinkServiceNetworkPolicies string + +const ( + VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Disabled" + VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Enabled" +) + +func PossibleValuesForVirtualNetworkPrivateLinkServiceNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled), + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled), + } +} + +func (s *VirtualNetworkPrivateLinkServiceNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateLinkServiceNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateLinkServiceNetworkPolicies(input string) (*VirtualNetworkPrivateLinkServiceNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateLinkServiceNetworkPolicies{ + "disabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateLinkServiceNetworkPolicies(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/id_providercloudservice.go b/resource-manager/network/2024-01-01/networkinterfaces/id_providercloudservice.go new file mode 100644 index 00000000000..e3a9af48f96 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/id_providercloudservice.go @@ -0,0 +1,130 @@ +package networkinterfaces + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ProviderCloudServiceId{}) +} + +var _ resourceids.ResourceId = &ProviderCloudServiceId{} + +// ProviderCloudServiceId is a struct representing the Resource ID for a Provider Cloud Service +type ProviderCloudServiceId struct { + SubscriptionId string + ResourceGroupName string + CloudServiceName string +} + +// NewProviderCloudServiceID returns a new ProviderCloudServiceId struct +func NewProviderCloudServiceID(subscriptionId string, resourceGroupName string, cloudServiceName string) ProviderCloudServiceId { + return ProviderCloudServiceId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + CloudServiceName: cloudServiceName, + } +} + +// ParseProviderCloudServiceID parses 'input' into a ProviderCloudServiceId +func ParseProviderCloudServiceID(input string) (*ProviderCloudServiceId, error) { + parser := resourceids.NewParserFromResourceIdType(&ProviderCloudServiceId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ProviderCloudServiceId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseProviderCloudServiceIDInsensitively parses 'input' case-insensitively into a ProviderCloudServiceId +// note: this method should only be used for API response data and not user input +func ParseProviderCloudServiceIDInsensitively(input string) (*ProviderCloudServiceId, error) { + parser := resourceids.NewParserFromResourceIdType(&ProviderCloudServiceId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ProviderCloudServiceId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ProviderCloudServiceId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.CloudServiceName, ok = input.Parsed["cloudServiceName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "cloudServiceName", input) + } + + return nil +} + +// ValidateProviderCloudServiceID checks that 'input' can be parsed as a Provider Cloud Service ID +func ValidateProviderCloudServiceID(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 := ParseProviderCloudServiceID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Provider Cloud Service ID +func (id ProviderCloudServiceId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Compute/cloudServices/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.CloudServiceName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Provider Cloud Service ID +func (id ProviderCloudServiceId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftCompute", "Microsoft.Compute", "Microsoft.Compute"), + resourceids.StaticSegment("staticCloudServices", "cloudServices", "cloudServices"), + resourceids.UserSpecifiedSegment("cloudServiceName", "cloudServiceValue"), + } +} + +// String returns a human-readable description of this Provider Cloud Service ID +func (id ProviderCloudServiceId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Cloud Service Name: %q", id.CloudServiceName), + } + return fmt.Sprintf("Provider Cloud Service (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/id_providercloudservice_test.go b/resource-manager/network/2024-01-01/networkinterfaces/id_providercloudservice_test.go new file mode 100644 index 00000000000..a29f672a8b4 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/id_providercloudservice_test.go @@ -0,0 +1,282 @@ +package networkinterfaces + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ProviderCloudServiceId{} + +func TestNewProviderCloudServiceID(t *testing.T) { + id := NewProviderCloudServiceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "cloudServiceValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.CloudServiceName != "cloudServiceValue" { + t.Fatalf("Expected %q but got %q for Segment 'CloudServiceName'", id.CloudServiceName, "cloudServiceValue") + } +} + +func TestFormatProviderCloudServiceID(t *testing.T) { + actual := NewProviderCloudServiceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "cloudServiceValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseProviderCloudServiceID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ProviderCloudServiceId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue", + Expected: &ProviderCloudServiceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + CloudServiceName: "cloudServiceValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseProviderCloudServiceID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.CloudServiceName != v.Expected.CloudServiceName { + t.Fatalf("Expected %q but got %q for CloudServiceName", v.Expected.CloudServiceName, actual.CloudServiceName) + } + + } +} + +func TestParseProviderCloudServiceIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ProviderCloudServiceId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/cLoUdSeRvIcEs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue", + Expected: &ProviderCloudServiceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + CloudServiceName: "cloudServiceValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/cLoUdSeRvIcEs/cLoUdSeRvIcEvAlUe", + Expected: &ProviderCloudServiceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + CloudServiceName: "cLoUdSeRvIcEvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/cLoUdSeRvIcEs/cLoUdSeRvIcEvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseProviderCloudServiceIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.CloudServiceName != v.Expected.CloudServiceName { + t.Fatalf("Expected %q but got %q for CloudServiceName", v.Expected.CloudServiceName, actual.CloudServiceName) + } + + } +} + +func TestSegmentsForProviderCloudServiceId(t *testing.T) { + segments := ProviderCloudServiceId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ProviderCloudServiceId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/id_roleinstance.go b/resource-manager/network/2024-01-01/networkinterfaces/id_roleinstance.go new file mode 100644 index 00000000000..69a75e612e0 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/id_roleinstance.go @@ -0,0 +1,139 @@ +package networkinterfaces + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&RoleInstanceId{}) +} + +var _ resourceids.ResourceId = &RoleInstanceId{} + +// RoleInstanceId is a struct representing the Resource ID for a Role Instance +type RoleInstanceId struct { + SubscriptionId string + ResourceGroupName string + CloudServiceName string + RoleInstanceName string +} + +// NewRoleInstanceID returns a new RoleInstanceId struct +func NewRoleInstanceID(subscriptionId string, resourceGroupName string, cloudServiceName string, roleInstanceName string) RoleInstanceId { + return RoleInstanceId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + CloudServiceName: cloudServiceName, + RoleInstanceName: roleInstanceName, + } +} + +// ParseRoleInstanceID parses 'input' into a RoleInstanceId +func ParseRoleInstanceID(input string) (*RoleInstanceId, error) { + parser := resourceids.NewParserFromResourceIdType(&RoleInstanceId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RoleInstanceId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseRoleInstanceIDInsensitively parses 'input' case-insensitively into a RoleInstanceId +// note: this method should only be used for API response data and not user input +func ParseRoleInstanceIDInsensitively(input string) (*RoleInstanceId, error) { + parser := resourceids.NewParserFromResourceIdType(&RoleInstanceId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RoleInstanceId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *RoleInstanceId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.CloudServiceName, ok = input.Parsed["cloudServiceName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "cloudServiceName", input) + } + + if id.RoleInstanceName, ok = input.Parsed["roleInstanceName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "roleInstanceName", input) + } + + return nil +} + +// ValidateRoleInstanceID checks that 'input' can be parsed as a Role Instance ID +func ValidateRoleInstanceID(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 := ParseRoleInstanceID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Role Instance ID +func (id RoleInstanceId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Compute/cloudServices/%s/roleInstances/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.CloudServiceName, id.RoleInstanceName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Role Instance ID +func (id RoleInstanceId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftCompute", "Microsoft.Compute", "Microsoft.Compute"), + resourceids.StaticSegment("staticCloudServices", "cloudServices", "cloudServices"), + resourceids.UserSpecifiedSegment("cloudServiceName", "cloudServiceValue"), + resourceids.StaticSegment("staticRoleInstances", "roleInstances", "roleInstances"), + resourceids.UserSpecifiedSegment("roleInstanceName", "roleInstanceValue"), + } +} + +// String returns a human-readable description of this Role Instance ID +func (id RoleInstanceId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Cloud Service Name: %q", id.CloudServiceName), + fmt.Sprintf("Role Instance Name: %q", id.RoleInstanceName), + } + return fmt.Sprintf("Role Instance (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/id_roleinstance_test.go b/resource-manager/network/2024-01-01/networkinterfaces/id_roleinstance_test.go new file mode 100644 index 00000000000..77f33a78522 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/id_roleinstance_test.go @@ -0,0 +1,327 @@ +package networkinterfaces + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &RoleInstanceId{} + +func TestNewRoleInstanceID(t *testing.T) { + id := NewRoleInstanceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "cloudServiceValue", "roleInstanceValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.CloudServiceName != "cloudServiceValue" { + t.Fatalf("Expected %q but got %q for Segment 'CloudServiceName'", id.CloudServiceName, "cloudServiceValue") + } + + if id.RoleInstanceName != "roleInstanceValue" { + t.Fatalf("Expected %q but got %q for Segment 'RoleInstanceName'", id.RoleInstanceName, "roleInstanceValue") + } +} + +func TestFormatRoleInstanceID(t *testing.T) { + actual := NewRoleInstanceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "cloudServiceValue", "roleInstanceValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue/roleInstances/roleInstanceValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseRoleInstanceID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RoleInstanceId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue/roleInstances", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue/roleInstances/roleInstanceValue", + Expected: &RoleInstanceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + CloudServiceName: "cloudServiceValue", + RoleInstanceName: "roleInstanceValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue/roleInstances/roleInstanceValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRoleInstanceID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.CloudServiceName != v.Expected.CloudServiceName { + t.Fatalf("Expected %q but got %q for CloudServiceName", v.Expected.CloudServiceName, actual.CloudServiceName) + } + + if actual.RoleInstanceName != v.Expected.RoleInstanceName { + t.Fatalf("Expected %q but got %q for RoleInstanceName", v.Expected.RoleInstanceName, actual.RoleInstanceName) + } + + } +} + +func TestParseRoleInstanceIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RoleInstanceId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/cLoUdSeRvIcEs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/cLoUdSeRvIcEs/cLoUdSeRvIcEvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue/roleInstances", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/cLoUdSeRvIcEs/cLoUdSeRvIcEvAlUe/rOlEiNsTaNcEs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue/roleInstances/roleInstanceValue", + Expected: &RoleInstanceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + CloudServiceName: "cloudServiceValue", + RoleInstanceName: "roleInstanceValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue/roleInstances/roleInstanceValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/cLoUdSeRvIcEs/cLoUdSeRvIcEvAlUe/rOlEiNsTaNcEs/rOlEiNsTaNcEvAlUe", + Expected: &RoleInstanceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + CloudServiceName: "cLoUdSeRvIcEvAlUe", + RoleInstanceName: "rOlEiNsTaNcEvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/cLoUdSeRvIcEs/cLoUdSeRvIcEvAlUe/rOlEiNsTaNcEs/rOlEiNsTaNcEvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRoleInstanceIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.CloudServiceName != v.Expected.CloudServiceName { + t.Fatalf("Expected %q but got %q for CloudServiceName", v.Expected.CloudServiceName, actual.CloudServiceName) + } + + if actual.RoleInstanceName != v.Expected.RoleInstanceName { + t.Fatalf("Expected %q but got %q for RoleInstanceName", v.Expected.RoleInstanceName, actual.RoleInstanceName) + } + + } +} + +func TestSegmentsForRoleInstanceId(t *testing.T) { + segments := RoleInstanceId{}.Segments() + if len(segments) == 0 { + t.Fatalf("RoleInstanceId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/id_roleinstancenetworkinterface.go b/resource-manager/network/2024-01-01/networkinterfaces/id_roleinstancenetworkinterface.go new file mode 100644 index 00000000000..4a96fd5d010 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/id_roleinstancenetworkinterface.go @@ -0,0 +1,148 @@ +package networkinterfaces + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&RoleInstanceNetworkInterfaceId{}) +} + +var _ resourceids.ResourceId = &RoleInstanceNetworkInterfaceId{} + +// RoleInstanceNetworkInterfaceId is a struct representing the Resource ID for a Role Instance Network Interface +type RoleInstanceNetworkInterfaceId struct { + SubscriptionId string + ResourceGroupName string + CloudServiceName string + RoleInstanceName string + NetworkInterfaceName string +} + +// NewRoleInstanceNetworkInterfaceID returns a new RoleInstanceNetworkInterfaceId struct +func NewRoleInstanceNetworkInterfaceID(subscriptionId string, resourceGroupName string, cloudServiceName string, roleInstanceName string, networkInterfaceName string) RoleInstanceNetworkInterfaceId { + return RoleInstanceNetworkInterfaceId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + CloudServiceName: cloudServiceName, + RoleInstanceName: roleInstanceName, + NetworkInterfaceName: networkInterfaceName, + } +} + +// ParseRoleInstanceNetworkInterfaceID parses 'input' into a RoleInstanceNetworkInterfaceId +func ParseRoleInstanceNetworkInterfaceID(input string) (*RoleInstanceNetworkInterfaceId, error) { + parser := resourceids.NewParserFromResourceIdType(&RoleInstanceNetworkInterfaceId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RoleInstanceNetworkInterfaceId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseRoleInstanceNetworkInterfaceIDInsensitively parses 'input' case-insensitively into a RoleInstanceNetworkInterfaceId +// note: this method should only be used for API response data and not user input +func ParseRoleInstanceNetworkInterfaceIDInsensitively(input string) (*RoleInstanceNetworkInterfaceId, error) { + parser := resourceids.NewParserFromResourceIdType(&RoleInstanceNetworkInterfaceId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RoleInstanceNetworkInterfaceId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *RoleInstanceNetworkInterfaceId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.CloudServiceName, ok = input.Parsed["cloudServiceName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "cloudServiceName", input) + } + + if id.RoleInstanceName, ok = input.Parsed["roleInstanceName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "roleInstanceName", input) + } + + if id.NetworkInterfaceName, ok = input.Parsed["networkInterfaceName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkInterfaceName", input) + } + + return nil +} + +// ValidateRoleInstanceNetworkInterfaceID checks that 'input' can be parsed as a Role Instance Network Interface ID +func ValidateRoleInstanceNetworkInterfaceID(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 := ParseRoleInstanceNetworkInterfaceID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Role Instance Network Interface ID +func (id RoleInstanceNetworkInterfaceId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Compute/cloudServices/%s/roleInstances/%s/networkInterfaces/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.CloudServiceName, id.RoleInstanceName, id.NetworkInterfaceName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Role Instance Network Interface ID +func (id RoleInstanceNetworkInterfaceId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftCompute", "Microsoft.Compute", "Microsoft.Compute"), + resourceids.StaticSegment("staticCloudServices", "cloudServices", "cloudServices"), + resourceids.UserSpecifiedSegment("cloudServiceName", "cloudServiceValue"), + resourceids.StaticSegment("staticRoleInstances", "roleInstances", "roleInstances"), + resourceids.UserSpecifiedSegment("roleInstanceName", "roleInstanceValue"), + resourceids.StaticSegment("staticNetworkInterfaces", "networkInterfaces", "networkInterfaces"), + resourceids.UserSpecifiedSegment("networkInterfaceName", "networkInterfaceValue"), + } +} + +// String returns a human-readable description of this Role Instance Network Interface ID +func (id RoleInstanceNetworkInterfaceId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Cloud Service Name: %q", id.CloudServiceName), + fmt.Sprintf("Role Instance Name: %q", id.RoleInstanceName), + fmt.Sprintf("Network Interface Name: %q", id.NetworkInterfaceName), + } + return fmt.Sprintf("Role Instance Network Interface (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/id_roleinstancenetworkinterface_test.go b/resource-manager/network/2024-01-01/networkinterfaces/id_roleinstancenetworkinterface_test.go new file mode 100644 index 00000000000..706f13b517d --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/id_roleinstancenetworkinterface_test.go @@ -0,0 +1,372 @@ +package networkinterfaces + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &RoleInstanceNetworkInterfaceId{} + +func TestNewRoleInstanceNetworkInterfaceID(t *testing.T) { + id := NewRoleInstanceNetworkInterfaceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "cloudServiceValue", "roleInstanceValue", "networkInterfaceValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.CloudServiceName != "cloudServiceValue" { + t.Fatalf("Expected %q but got %q for Segment 'CloudServiceName'", id.CloudServiceName, "cloudServiceValue") + } + + if id.RoleInstanceName != "roleInstanceValue" { + t.Fatalf("Expected %q but got %q for Segment 'RoleInstanceName'", id.RoleInstanceName, "roleInstanceValue") + } + + if id.NetworkInterfaceName != "networkInterfaceValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkInterfaceName'", id.NetworkInterfaceName, "networkInterfaceValue") + } +} + +func TestFormatRoleInstanceNetworkInterfaceID(t *testing.T) { + actual := NewRoleInstanceNetworkInterfaceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "cloudServiceValue", "roleInstanceValue", "networkInterfaceValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue/roleInstances/roleInstanceValue/networkInterfaces/networkInterfaceValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseRoleInstanceNetworkInterfaceID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RoleInstanceNetworkInterfaceId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue/roleInstances", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue/roleInstances/roleInstanceValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue/roleInstances/roleInstanceValue/networkInterfaces", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue/roleInstances/roleInstanceValue/networkInterfaces/networkInterfaceValue", + Expected: &RoleInstanceNetworkInterfaceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + CloudServiceName: "cloudServiceValue", + RoleInstanceName: "roleInstanceValue", + NetworkInterfaceName: "networkInterfaceValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue/roleInstances/roleInstanceValue/networkInterfaces/networkInterfaceValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRoleInstanceNetworkInterfaceID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.CloudServiceName != v.Expected.CloudServiceName { + t.Fatalf("Expected %q but got %q for CloudServiceName", v.Expected.CloudServiceName, actual.CloudServiceName) + } + + if actual.RoleInstanceName != v.Expected.RoleInstanceName { + t.Fatalf("Expected %q but got %q for RoleInstanceName", v.Expected.RoleInstanceName, actual.RoleInstanceName) + } + + if actual.NetworkInterfaceName != v.Expected.NetworkInterfaceName { + t.Fatalf("Expected %q but got %q for NetworkInterfaceName", v.Expected.NetworkInterfaceName, actual.NetworkInterfaceName) + } + + } +} + +func TestParseRoleInstanceNetworkInterfaceIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RoleInstanceNetworkInterfaceId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/cLoUdSeRvIcEs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/cLoUdSeRvIcEs/cLoUdSeRvIcEvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue/roleInstances", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/cLoUdSeRvIcEs/cLoUdSeRvIcEvAlUe/rOlEiNsTaNcEs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue/roleInstances/roleInstanceValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/cLoUdSeRvIcEs/cLoUdSeRvIcEvAlUe/rOlEiNsTaNcEs/rOlEiNsTaNcEvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue/roleInstances/roleInstanceValue/networkInterfaces", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/cLoUdSeRvIcEs/cLoUdSeRvIcEvAlUe/rOlEiNsTaNcEs/rOlEiNsTaNcEvAlUe/nEtWoRkInTeRfAcEs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue/roleInstances/roleInstanceValue/networkInterfaces/networkInterfaceValue", + Expected: &RoleInstanceNetworkInterfaceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + CloudServiceName: "cloudServiceValue", + RoleInstanceName: "roleInstanceValue", + NetworkInterfaceName: "networkInterfaceValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/cloudServices/cloudServiceValue/roleInstances/roleInstanceValue/networkInterfaces/networkInterfaceValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/cLoUdSeRvIcEs/cLoUdSeRvIcEvAlUe/rOlEiNsTaNcEs/rOlEiNsTaNcEvAlUe/nEtWoRkInTeRfAcEs/nEtWoRkInTeRfAcEvAlUe", + Expected: &RoleInstanceNetworkInterfaceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + CloudServiceName: "cLoUdSeRvIcEvAlUe", + RoleInstanceName: "rOlEiNsTaNcEvAlUe", + NetworkInterfaceName: "nEtWoRkInTeRfAcEvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/cLoUdSeRvIcEs/cLoUdSeRvIcEvAlUe/rOlEiNsTaNcEs/rOlEiNsTaNcEvAlUe/nEtWoRkInTeRfAcEs/nEtWoRkInTeRfAcEvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRoleInstanceNetworkInterfaceIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.CloudServiceName != v.Expected.CloudServiceName { + t.Fatalf("Expected %q but got %q for CloudServiceName", v.Expected.CloudServiceName, actual.CloudServiceName) + } + + if actual.RoleInstanceName != v.Expected.RoleInstanceName { + t.Fatalf("Expected %q but got %q for RoleInstanceName", v.Expected.RoleInstanceName, actual.RoleInstanceName) + } + + if actual.NetworkInterfaceName != v.Expected.NetworkInterfaceName { + t.Fatalf("Expected %q but got %q for NetworkInterfaceName", v.Expected.NetworkInterfaceName, actual.NetworkInterfaceName) + } + + } +} + +func TestSegmentsForRoleInstanceNetworkInterfaceId(t *testing.T) { + segments := RoleInstanceNetworkInterfaceId{}.Segments() + if len(segments) == 0 { + t.Fatalf("RoleInstanceNetworkInterfaceId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/id_tapconfiguration.go b/resource-manager/network/2024-01-01/networkinterfaces/id_tapconfiguration.go new file mode 100644 index 00000000000..0778222d9c9 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/id_tapconfiguration.go @@ -0,0 +1,139 @@ +package networkinterfaces + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&TapConfigurationId{}) +} + +var _ resourceids.ResourceId = &TapConfigurationId{} + +// TapConfigurationId is a struct representing the Resource ID for a Tap Configuration +type TapConfigurationId struct { + SubscriptionId string + ResourceGroupName string + NetworkInterfaceName string + TapConfigurationName string +} + +// NewTapConfigurationID returns a new TapConfigurationId struct +func NewTapConfigurationID(subscriptionId string, resourceGroupName string, networkInterfaceName string, tapConfigurationName string) TapConfigurationId { + return TapConfigurationId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkInterfaceName: networkInterfaceName, + TapConfigurationName: tapConfigurationName, + } +} + +// ParseTapConfigurationID parses 'input' into a TapConfigurationId +func ParseTapConfigurationID(input string) (*TapConfigurationId, error) { + parser := resourceids.NewParserFromResourceIdType(&TapConfigurationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := TapConfigurationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseTapConfigurationIDInsensitively parses 'input' case-insensitively into a TapConfigurationId +// note: this method should only be used for API response data and not user input +func ParseTapConfigurationIDInsensitively(input string) (*TapConfigurationId, error) { + parser := resourceids.NewParserFromResourceIdType(&TapConfigurationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := TapConfigurationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *TapConfigurationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkInterfaceName, ok = input.Parsed["networkInterfaceName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkInterfaceName", input) + } + + if id.TapConfigurationName, ok = input.Parsed["tapConfigurationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "tapConfigurationName", input) + } + + return nil +} + +// ValidateTapConfigurationID checks that 'input' can be parsed as a Tap Configuration ID +func ValidateTapConfigurationID(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 := ParseTapConfigurationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Tap Configuration ID +func (id TapConfigurationId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkInterfaces/%s/tapConfigurations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkInterfaceName, id.TapConfigurationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Tap Configuration ID +func (id TapConfigurationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkInterfaces", "networkInterfaces", "networkInterfaces"), + resourceids.UserSpecifiedSegment("networkInterfaceName", "networkInterfaceValue"), + resourceids.StaticSegment("staticTapConfigurations", "tapConfigurations", "tapConfigurations"), + resourceids.UserSpecifiedSegment("tapConfigurationName", "tapConfigurationValue"), + } +} + +// String returns a human-readable description of this Tap Configuration ID +func (id TapConfigurationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Interface Name: %q", id.NetworkInterfaceName), + fmt.Sprintf("Tap Configuration Name: %q", id.TapConfigurationName), + } + return fmt.Sprintf("Tap Configuration (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/id_tapconfiguration_test.go b/resource-manager/network/2024-01-01/networkinterfaces/id_tapconfiguration_test.go new file mode 100644 index 00000000000..ee4786ae2fb --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/id_tapconfiguration_test.go @@ -0,0 +1,327 @@ +package networkinterfaces + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &TapConfigurationId{} + +func TestNewTapConfigurationID(t *testing.T) { + id := NewTapConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkInterfaceValue", "tapConfigurationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkInterfaceName != "networkInterfaceValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkInterfaceName'", id.NetworkInterfaceName, "networkInterfaceValue") + } + + if id.TapConfigurationName != "tapConfigurationValue" { + t.Fatalf("Expected %q but got %q for Segment 'TapConfigurationName'", id.TapConfigurationName, "tapConfigurationValue") + } +} + +func TestFormatTapConfigurationID(t *testing.T) { + actual := NewTapConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkInterfaceValue", "tapConfigurationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkInterfaces/networkInterfaceValue/tapConfigurations/tapConfigurationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseTapConfigurationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *TapConfigurationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkInterfaces", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkInterfaces/networkInterfaceValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkInterfaces/networkInterfaceValue/tapConfigurations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkInterfaces/networkInterfaceValue/tapConfigurations/tapConfigurationValue", + Expected: &TapConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkInterfaceName: "networkInterfaceValue", + TapConfigurationName: "tapConfigurationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkInterfaces/networkInterfaceValue/tapConfigurations/tapConfigurationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseTapConfigurationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkInterfaceName != v.Expected.NetworkInterfaceName { + t.Fatalf("Expected %q but got %q for NetworkInterfaceName", v.Expected.NetworkInterfaceName, actual.NetworkInterfaceName) + } + + if actual.TapConfigurationName != v.Expected.TapConfigurationName { + t.Fatalf("Expected %q but got %q for TapConfigurationName", v.Expected.TapConfigurationName, actual.TapConfigurationName) + } + + } +} + +func TestParseTapConfigurationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *TapConfigurationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkInterfaces", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkInTeRfAcEs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkInterfaces/networkInterfaceValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkInTeRfAcEs/nEtWoRkInTeRfAcEvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkInterfaces/networkInterfaceValue/tapConfigurations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkInTeRfAcEs/nEtWoRkInTeRfAcEvAlUe/tApCoNfIgUrAtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkInterfaces/networkInterfaceValue/tapConfigurations/tapConfigurationValue", + Expected: &TapConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkInterfaceName: "networkInterfaceValue", + TapConfigurationName: "tapConfigurationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkInterfaces/networkInterfaceValue/tapConfigurations/tapConfigurationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkInTeRfAcEs/nEtWoRkInTeRfAcEvAlUe/tApCoNfIgUrAtIoNs/tApCoNfIgUrAtIoNvAlUe", + Expected: &TapConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkInterfaceName: "nEtWoRkInTeRfAcEvAlUe", + TapConfigurationName: "tApCoNfIgUrAtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkInTeRfAcEs/nEtWoRkInTeRfAcEvAlUe/tApCoNfIgUrAtIoNs/tApCoNfIgUrAtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseTapConfigurationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkInterfaceName != v.Expected.NetworkInterfaceName { + t.Fatalf("Expected %q but got %q for NetworkInterfaceName", v.Expected.NetworkInterfaceName, actual.NetworkInterfaceName) + } + + if actual.TapConfigurationName != v.Expected.TapConfigurationName { + t.Fatalf("Expected %q but got %q for TapConfigurationName", v.Expected.TapConfigurationName, actual.TapConfigurationName) + } + + } +} + +func TestSegmentsForTapConfigurationId(t *testing.T) { + segments := TapConfigurationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("TapConfigurationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/id_virtualmachine.go b/resource-manager/network/2024-01-01/networkinterfaces/id_virtualmachine.go new file mode 100644 index 00000000000..e2f2dde8684 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/id_virtualmachine.go @@ -0,0 +1,139 @@ +package networkinterfaces + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&VirtualMachineId{}) +} + +var _ resourceids.ResourceId = &VirtualMachineId{} + +// VirtualMachineId is a struct representing the Resource ID for a Virtual Machine +type VirtualMachineId struct { + SubscriptionId string + ResourceGroupName string + VirtualMachineScaleSetName string + VirtualMachineName string +} + +// NewVirtualMachineID returns a new VirtualMachineId struct +func NewVirtualMachineID(subscriptionId string, resourceGroupName string, virtualMachineScaleSetName string, virtualMachineName string) VirtualMachineId { + return VirtualMachineId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VirtualMachineScaleSetName: virtualMachineScaleSetName, + VirtualMachineName: virtualMachineName, + } +} + +// ParseVirtualMachineID parses 'input' into a VirtualMachineId +func ParseVirtualMachineID(input string) (*VirtualMachineId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualMachineId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualMachineId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseVirtualMachineIDInsensitively parses 'input' case-insensitively into a VirtualMachineId +// note: this method should only be used for API response data and not user input +func ParseVirtualMachineIDInsensitively(input string) (*VirtualMachineId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualMachineId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualMachineId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *VirtualMachineId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VirtualMachineScaleSetName, ok = input.Parsed["virtualMachineScaleSetName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "virtualMachineScaleSetName", input) + } + + if id.VirtualMachineName, ok = input.Parsed["virtualMachineName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "virtualMachineName", input) + } + + return nil +} + +// ValidateVirtualMachineID checks that 'input' can be parsed as a Virtual Machine ID +func ValidateVirtualMachineID(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 := ParseVirtualMachineID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Virtual Machine ID +func (id VirtualMachineId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Compute/virtualMachineScaleSets/%s/virtualMachines/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VirtualMachineScaleSetName, id.VirtualMachineName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Virtual Machine ID +func (id VirtualMachineId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftCompute", "Microsoft.Compute", "Microsoft.Compute"), + resourceids.StaticSegment("staticVirtualMachineScaleSets", "virtualMachineScaleSets", "virtualMachineScaleSets"), + resourceids.UserSpecifiedSegment("virtualMachineScaleSetName", "virtualMachineScaleSetValue"), + resourceids.StaticSegment("staticVirtualMachines", "virtualMachines", "virtualMachines"), + resourceids.UserSpecifiedSegment("virtualMachineName", "virtualMachineValue"), + } +} + +// String returns a human-readable description of this Virtual Machine ID +func (id VirtualMachineId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Virtual Machine Scale Set Name: %q", id.VirtualMachineScaleSetName), + fmt.Sprintf("Virtual Machine Name: %q", id.VirtualMachineName), + } + return fmt.Sprintf("Virtual Machine (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/id_virtualmachine_test.go b/resource-manager/network/2024-01-01/networkinterfaces/id_virtualmachine_test.go new file mode 100644 index 00000000000..86c89e5742e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/id_virtualmachine_test.go @@ -0,0 +1,327 @@ +package networkinterfaces + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &VirtualMachineId{} + +func TestNewVirtualMachineID(t *testing.T) { + id := NewVirtualMachineID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualMachineScaleSetValue", "virtualMachineValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VirtualMachineScaleSetName != "virtualMachineScaleSetValue" { + t.Fatalf("Expected %q but got %q for Segment 'VirtualMachineScaleSetName'", id.VirtualMachineScaleSetName, "virtualMachineScaleSetValue") + } + + if id.VirtualMachineName != "virtualMachineValue" { + t.Fatalf("Expected %q but got %q for Segment 'VirtualMachineName'", id.VirtualMachineName, "virtualMachineValue") + } +} + +func TestFormatVirtualMachineID(t *testing.T) { + actual := NewVirtualMachineID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualMachineScaleSetValue", "virtualMachineValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/virtualMachineScaleSetValue/virtualMachines/virtualMachineValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseVirtualMachineID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualMachineId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/virtualMachineScaleSetValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/virtualMachineScaleSetValue/virtualMachines", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/virtualMachineScaleSetValue/virtualMachines/virtualMachineValue", + Expected: &VirtualMachineId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualMachineScaleSetName: "virtualMachineScaleSetValue", + VirtualMachineName: "virtualMachineValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/virtualMachineScaleSetValue/virtualMachines/virtualMachineValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualMachineID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualMachineScaleSetName != v.Expected.VirtualMachineScaleSetName { + t.Fatalf("Expected %q but got %q for VirtualMachineScaleSetName", v.Expected.VirtualMachineScaleSetName, actual.VirtualMachineScaleSetName) + } + + if actual.VirtualMachineName != v.Expected.VirtualMachineName { + t.Fatalf("Expected %q but got %q for VirtualMachineName", v.Expected.VirtualMachineName, actual.VirtualMachineName) + } + + } +} + +func TestParseVirtualMachineIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualMachineId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/vIrTuAlMaChInEsCaLeSeTs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/virtualMachineScaleSetValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/vIrTuAlMaChInEsCaLeSeTs/vIrTuAlMaChInEsCaLeSeTvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/virtualMachineScaleSetValue/virtualMachines", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/vIrTuAlMaChInEsCaLeSeTs/vIrTuAlMaChInEsCaLeSeTvAlUe/vIrTuAlMaChInEs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/virtualMachineScaleSetValue/virtualMachines/virtualMachineValue", + Expected: &VirtualMachineId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualMachineScaleSetName: "virtualMachineScaleSetValue", + VirtualMachineName: "virtualMachineValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/virtualMachineScaleSetValue/virtualMachines/virtualMachineValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/vIrTuAlMaChInEsCaLeSeTs/vIrTuAlMaChInEsCaLeSeTvAlUe/vIrTuAlMaChInEs/vIrTuAlMaChInEvAlUe", + Expected: &VirtualMachineId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VirtualMachineScaleSetName: "vIrTuAlMaChInEsCaLeSeTvAlUe", + VirtualMachineName: "vIrTuAlMaChInEvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/vIrTuAlMaChInEsCaLeSeTs/vIrTuAlMaChInEsCaLeSeTvAlUe/vIrTuAlMaChInEs/vIrTuAlMaChInEvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualMachineIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualMachineScaleSetName != v.Expected.VirtualMachineScaleSetName { + t.Fatalf("Expected %q but got %q for VirtualMachineScaleSetName", v.Expected.VirtualMachineScaleSetName, actual.VirtualMachineScaleSetName) + } + + if actual.VirtualMachineName != v.Expected.VirtualMachineName { + t.Fatalf("Expected %q but got %q for VirtualMachineName", v.Expected.VirtualMachineName, actual.VirtualMachineName) + } + + } +} + +func TestSegmentsForVirtualMachineId(t *testing.T) { + segments := VirtualMachineId{}.Segments() + if len(segments) == 0 { + t.Fatalf("VirtualMachineId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/id_virtualmachinescaleset.go b/resource-manager/network/2024-01-01/networkinterfaces/id_virtualmachinescaleset.go new file mode 100644 index 00000000000..e9a264c0a89 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/id_virtualmachinescaleset.go @@ -0,0 +1,130 @@ +package networkinterfaces + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&VirtualMachineScaleSetId{}) +} + +var _ resourceids.ResourceId = &VirtualMachineScaleSetId{} + +// VirtualMachineScaleSetId is a struct representing the Resource ID for a Virtual Machine Scale Set +type VirtualMachineScaleSetId struct { + SubscriptionId string + ResourceGroupName string + VirtualMachineScaleSetName string +} + +// NewVirtualMachineScaleSetID returns a new VirtualMachineScaleSetId struct +func NewVirtualMachineScaleSetID(subscriptionId string, resourceGroupName string, virtualMachineScaleSetName string) VirtualMachineScaleSetId { + return VirtualMachineScaleSetId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VirtualMachineScaleSetName: virtualMachineScaleSetName, + } +} + +// ParseVirtualMachineScaleSetID parses 'input' into a VirtualMachineScaleSetId +func ParseVirtualMachineScaleSetID(input string) (*VirtualMachineScaleSetId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualMachineScaleSetId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualMachineScaleSetId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseVirtualMachineScaleSetIDInsensitively parses 'input' case-insensitively into a VirtualMachineScaleSetId +// note: this method should only be used for API response data and not user input +func ParseVirtualMachineScaleSetIDInsensitively(input string) (*VirtualMachineScaleSetId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualMachineScaleSetId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualMachineScaleSetId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *VirtualMachineScaleSetId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VirtualMachineScaleSetName, ok = input.Parsed["virtualMachineScaleSetName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "virtualMachineScaleSetName", input) + } + + return nil +} + +// ValidateVirtualMachineScaleSetID checks that 'input' can be parsed as a Virtual Machine Scale Set ID +func ValidateVirtualMachineScaleSetID(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 := ParseVirtualMachineScaleSetID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Virtual Machine Scale Set ID +func (id VirtualMachineScaleSetId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Compute/virtualMachineScaleSets/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VirtualMachineScaleSetName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Virtual Machine Scale Set ID +func (id VirtualMachineScaleSetId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftCompute", "Microsoft.Compute", "Microsoft.Compute"), + resourceids.StaticSegment("staticVirtualMachineScaleSets", "virtualMachineScaleSets", "virtualMachineScaleSets"), + resourceids.UserSpecifiedSegment("virtualMachineScaleSetName", "virtualMachineScaleSetValue"), + } +} + +// String returns a human-readable description of this Virtual Machine Scale Set ID +func (id VirtualMachineScaleSetId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Virtual Machine Scale Set Name: %q", id.VirtualMachineScaleSetName), + } + return fmt.Sprintf("Virtual Machine Scale Set (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/id_virtualmachinescaleset_test.go b/resource-manager/network/2024-01-01/networkinterfaces/id_virtualmachinescaleset_test.go new file mode 100644 index 00000000000..541e8675bd0 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/id_virtualmachinescaleset_test.go @@ -0,0 +1,282 @@ +package networkinterfaces + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &VirtualMachineScaleSetId{} + +func TestNewVirtualMachineScaleSetID(t *testing.T) { + id := NewVirtualMachineScaleSetID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualMachineScaleSetValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VirtualMachineScaleSetName != "virtualMachineScaleSetValue" { + t.Fatalf("Expected %q but got %q for Segment 'VirtualMachineScaleSetName'", id.VirtualMachineScaleSetName, "virtualMachineScaleSetValue") + } +} + +func TestFormatVirtualMachineScaleSetID(t *testing.T) { + actual := NewVirtualMachineScaleSetID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualMachineScaleSetValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/virtualMachineScaleSetValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseVirtualMachineScaleSetID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualMachineScaleSetId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/virtualMachineScaleSetValue", + Expected: &VirtualMachineScaleSetId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualMachineScaleSetName: "virtualMachineScaleSetValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/virtualMachineScaleSetValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualMachineScaleSetID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualMachineScaleSetName != v.Expected.VirtualMachineScaleSetName { + t.Fatalf("Expected %q but got %q for VirtualMachineScaleSetName", v.Expected.VirtualMachineScaleSetName, actual.VirtualMachineScaleSetName) + } + + } +} + +func TestParseVirtualMachineScaleSetIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualMachineScaleSetId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/vIrTuAlMaChInEsCaLeSeTs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/virtualMachineScaleSetValue", + Expected: &VirtualMachineScaleSetId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualMachineScaleSetName: "virtualMachineScaleSetValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/virtualMachineScaleSetValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/vIrTuAlMaChInEsCaLeSeTs/vIrTuAlMaChInEsCaLeSeTvAlUe", + Expected: &VirtualMachineScaleSetId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VirtualMachineScaleSetName: "vIrTuAlMaChInEsCaLeSeTvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/vIrTuAlMaChInEsCaLeSeTs/vIrTuAlMaChInEsCaLeSeTvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualMachineScaleSetIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualMachineScaleSetName != v.Expected.VirtualMachineScaleSetName { + t.Fatalf("Expected %q but got %q for VirtualMachineScaleSetName", v.Expected.VirtualMachineScaleSetName, actual.VirtualMachineScaleSetName) + } + + } +} + +func TestSegmentsForVirtualMachineScaleSetId(t *testing.T) { + segments := VirtualMachineScaleSetId{}.Segments() + if len(segments) == 0 { + t.Fatalf("VirtualMachineScaleSetId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/method_createorupdate.go b/resource-manager/network/2024-01-01/networkinterfaces/method_createorupdate.go new file mode 100644 index 00000000000..5686c1db5f0 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/method_createorupdate.go @@ -0,0 +1,76 @@ +package networkinterfaces + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *NetworkInterface +} + +// CreateOrUpdate ... +func (c NetworkInterfacesClient) CreateOrUpdate(ctx context.Context, id commonids.NetworkInterfaceId, input NetworkInterface) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c NetworkInterfacesClient) CreateOrUpdateThenPoll(ctx context.Context, id commonids.NetworkInterfaceId, input NetworkInterface) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/method_delete.go b/resource-manager/network/2024-01-01/networkinterfaces/method_delete.go new file mode 100644 index 00000000000..99f476e3fa9 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/method_delete.go @@ -0,0 +1,72 @@ +package networkinterfaces + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c NetworkInterfacesClient) Delete(ctx context.Context, id commonids.NetworkInterfaceId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c NetworkInterfacesClient) DeleteThenPoll(ctx context.Context, id commonids.NetworkInterfaceId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/method_get.go b/resource-manager/network/2024-01-01/networkinterfaces/method_get.go new file mode 100644 index 00000000000..14f4f1d8a0c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/method_get.go @@ -0,0 +1,84 @@ +package networkinterfaces + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkInterface +} + +type GetOperationOptions struct { + Expand *string +} + +func DefaultGetOperationOptions() GetOperationOptions { + return GetOperationOptions{} +} + +func (o GetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// Get ... +func (c NetworkInterfacesClient) Get(ctx context.Context, id commonids.NetworkInterfaceId, options GetOperationOptions) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkInterface + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/method_getcloudservicenetworkinterface.go b/resource-manager/network/2024-01-01/networkinterfaces/method_getcloudservicenetworkinterface.go new file mode 100644 index 00000000000..b828e37133d --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/method_getcloudservicenetworkinterface.go @@ -0,0 +1,83 @@ +package networkinterfaces + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetCloudServiceNetworkInterfaceOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkInterface +} + +type GetCloudServiceNetworkInterfaceOperationOptions struct { + Expand *string +} + +func DefaultGetCloudServiceNetworkInterfaceOperationOptions() GetCloudServiceNetworkInterfaceOperationOptions { + return GetCloudServiceNetworkInterfaceOperationOptions{} +} + +func (o GetCloudServiceNetworkInterfaceOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetCloudServiceNetworkInterfaceOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetCloudServiceNetworkInterfaceOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// GetCloudServiceNetworkInterface ... +func (c NetworkInterfacesClient) GetCloudServiceNetworkInterface(ctx context.Context, id RoleInstanceNetworkInterfaceId, options GetCloudServiceNetworkInterfaceOperationOptions) (result GetCloudServiceNetworkInterfaceOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkInterface + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/method_geteffectiveroutetable.go b/resource-manager/network/2024-01-01/networkinterfaces/method_geteffectiveroutetable.go new file mode 100644 index 00000000000..e64977d2735 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/method_geteffectiveroutetable.go @@ -0,0 +1,77 @@ +package networkinterfaces + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetEffectiveRouteTableOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *[]EffectiveRoute +} + +type GetEffectiveRouteTableCompleteResult struct { + LatestHttpResponse *http.Response + Items []EffectiveRoute +} + +// GetEffectiveRouteTable ... +func (c NetworkInterfacesClient) GetEffectiveRouteTable(ctx context.Context, id commonids.NetworkInterfaceId) (result GetEffectiveRouteTableOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/effectiveRouteTable", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// GetEffectiveRouteTableThenPoll performs GetEffectiveRouteTable then polls until it's completed +func (c NetworkInterfacesClient) GetEffectiveRouteTableThenPoll(ctx context.Context, id commonids.NetworkInterfaceId) error { + result, err := c.GetEffectiveRouteTable(ctx, id) + if err != nil { + return fmt.Errorf("performing GetEffectiveRouteTable: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after GetEffectiveRouteTable: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/method_getvirtualmachinescalesetipconfiguration.go b/resource-manager/network/2024-01-01/networkinterfaces/method_getvirtualmachinescalesetipconfiguration.go new file mode 100644 index 00000000000..c30d98304ca --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/method_getvirtualmachinescalesetipconfiguration.go @@ -0,0 +1,84 @@ +package networkinterfaces + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetVirtualMachineScaleSetIPConfigurationOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkInterfaceIPConfiguration +} + +type GetVirtualMachineScaleSetIPConfigurationOperationOptions struct { + Expand *string +} + +func DefaultGetVirtualMachineScaleSetIPConfigurationOperationOptions() GetVirtualMachineScaleSetIPConfigurationOperationOptions { + return GetVirtualMachineScaleSetIPConfigurationOperationOptions{} +} + +func (o GetVirtualMachineScaleSetIPConfigurationOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetVirtualMachineScaleSetIPConfigurationOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetVirtualMachineScaleSetIPConfigurationOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// GetVirtualMachineScaleSetIPConfiguration ... +func (c NetworkInterfacesClient) GetVirtualMachineScaleSetIPConfiguration(ctx context.Context, id commonids.VirtualMachineScaleSetIPConfigurationId, options GetVirtualMachineScaleSetIPConfigurationOperationOptions) (result GetVirtualMachineScaleSetIPConfigurationOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkInterfaceIPConfiguration + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/method_getvirtualmachinescalesetnetworkinterface.go b/resource-manager/network/2024-01-01/networkinterfaces/method_getvirtualmachinescalesetnetworkinterface.go new file mode 100644 index 00000000000..17ffc7f419c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/method_getvirtualmachinescalesetnetworkinterface.go @@ -0,0 +1,84 @@ +package networkinterfaces + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetVirtualMachineScaleSetNetworkInterfaceOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkInterface +} + +type GetVirtualMachineScaleSetNetworkInterfaceOperationOptions struct { + Expand *string +} + +func DefaultGetVirtualMachineScaleSetNetworkInterfaceOperationOptions() GetVirtualMachineScaleSetNetworkInterfaceOperationOptions { + return GetVirtualMachineScaleSetNetworkInterfaceOperationOptions{} +} + +func (o GetVirtualMachineScaleSetNetworkInterfaceOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetVirtualMachineScaleSetNetworkInterfaceOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetVirtualMachineScaleSetNetworkInterfaceOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// GetVirtualMachineScaleSetNetworkInterface ... +func (c NetworkInterfacesClient) GetVirtualMachineScaleSetNetworkInterface(ctx context.Context, id commonids.VirtualMachineScaleSetNetworkInterfaceId, options GetVirtualMachineScaleSetNetworkInterfaceOperationOptions) (result GetVirtualMachineScaleSetNetworkInterfaceOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkInterface + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/method_list.go b/resource-manager/network/2024-01-01/networkinterfaces/method_list.go new file mode 100644 index 00000000000..0cac5b10455 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/method_list.go @@ -0,0 +1,93 @@ +package networkinterfaces + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NetworkInterface +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []NetworkInterface +} + +// List ... +func (c NetworkInterfacesClient) List(ctx context.Context, id commonids.ResourceGroupId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/networkInterfaces", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NetworkInterface `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c NetworkInterfacesClient) ListComplete(ctx context.Context, id commonids.ResourceGroupId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, NetworkInterfaceOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c NetworkInterfacesClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate NetworkInterfaceOperationPredicate) (result ListCompleteResult, err error) { + items := make([]NetworkInterface, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/method_listall.go b/resource-manager/network/2024-01-01/networkinterfaces/method_listall.go new file mode 100644 index 00000000000..4e462b5cfc1 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/method_listall.go @@ -0,0 +1,93 @@ +package networkinterfaces + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAllOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NetworkInterface +} + +type ListAllCompleteResult struct { + LatestHttpResponse *http.Response + Items []NetworkInterface +} + +// ListAll ... +func (c NetworkInterfacesClient) ListAll(ctx context.Context, id commonids.SubscriptionId) (result ListAllOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/networkInterfaces", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NetworkInterface `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListAllComplete retrieves all the results into a single object +func (c NetworkInterfacesClient) ListAllComplete(ctx context.Context, id commonids.SubscriptionId) (ListAllCompleteResult, error) { + return c.ListAllCompleteMatchingPredicate(ctx, id, NetworkInterfaceOperationPredicate{}) +} + +// ListAllCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c NetworkInterfacesClient) ListAllCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate NetworkInterfaceOperationPredicate) (result ListAllCompleteResult, err error) { + items := make([]NetworkInterface, 0) + + resp, err := c.ListAll(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListAllCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/method_listcloudservicenetworkinterfaces.go b/resource-manager/network/2024-01-01/networkinterfaces/method_listcloudservicenetworkinterfaces.go new file mode 100644 index 00000000000..e75341c2e34 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/method_listcloudservicenetworkinterfaces.go @@ -0,0 +1,92 @@ +package networkinterfaces + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListCloudServiceNetworkInterfacesOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NetworkInterface +} + +type ListCloudServiceNetworkInterfacesCompleteResult struct { + LatestHttpResponse *http.Response + Items []NetworkInterface +} + +// ListCloudServiceNetworkInterfaces ... +func (c NetworkInterfacesClient) ListCloudServiceNetworkInterfaces(ctx context.Context, id ProviderCloudServiceId) (result ListCloudServiceNetworkInterfacesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/networkInterfaces", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NetworkInterface `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListCloudServiceNetworkInterfacesComplete retrieves all the results into a single object +func (c NetworkInterfacesClient) ListCloudServiceNetworkInterfacesComplete(ctx context.Context, id ProviderCloudServiceId) (ListCloudServiceNetworkInterfacesCompleteResult, error) { + return c.ListCloudServiceNetworkInterfacesCompleteMatchingPredicate(ctx, id, NetworkInterfaceOperationPredicate{}) +} + +// ListCloudServiceNetworkInterfacesCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c NetworkInterfacesClient) ListCloudServiceNetworkInterfacesCompleteMatchingPredicate(ctx context.Context, id ProviderCloudServiceId, predicate NetworkInterfaceOperationPredicate) (result ListCloudServiceNetworkInterfacesCompleteResult, err error) { + items := make([]NetworkInterface, 0) + + resp, err := c.ListCloudServiceNetworkInterfaces(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCloudServiceNetworkInterfacesCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/method_listcloudserviceroleinstancenetworkinterfaces.go b/resource-manager/network/2024-01-01/networkinterfaces/method_listcloudserviceroleinstancenetworkinterfaces.go new file mode 100644 index 00000000000..107f550cde5 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/method_listcloudserviceroleinstancenetworkinterfaces.go @@ -0,0 +1,92 @@ +package networkinterfaces + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListCloudServiceRoleInstanceNetworkInterfacesOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NetworkInterface +} + +type ListCloudServiceRoleInstanceNetworkInterfacesCompleteResult struct { + LatestHttpResponse *http.Response + Items []NetworkInterface +} + +// ListCloudServiceRoleInstanceNetworkInterfaces ... +func (c NetworkInterfacesClient) ListCloudServiceRoleInstanceNetworkInterfaces(ctx context.Context, id RoleInstanceId) (result ListCloudServiceRoleInstanceNetworkInterfacesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/networkInterfaces", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NetworkInterface `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListCloudServiceRoleInstanceNetworkInterfacesComplete retrieves all the results into a single object +func (c NetworkInterfacesClient) ListCloudServiceRoleInstanceNetworkInterfacesComplete(ctx context.Context, id RoleInstanceId) (ListCloudServiceRoleInstanceNetworkInterfacesCompleteResult, error) { + return c.ListCloudServiceRoleInstanceNetworkInterfacesCompleteMatchingPredicate(ctx, id, NetworkInterfaceOperationPredicate{}) +} + +// ListCloudServiceRoleInstanceNetworkInterfacesCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c NetworkInterfacesClient) ListCloudServiceRoleInstanceNetworkInterfacesCompleteMatchingPredicate(ctx context.Context, id RoleInstanceId, predicate NetworkInterfaceOperationPredicate) (result ListCloudServiceRoleInstanceNetworkInterfacesCompleteResult, err error) { + items := make([]NetworkInterface, 0) + + resp, err := c.ListCloudServiceRoleInstanceNetworkInterfaces(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCloudServiceRoleInstanceNetworkInterfacesCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/method_listeffectivenetworksecuritygroups.go b/resource-manager/network/2024-01-01/networkinterfaces/method_listeffectivenetworksecuritygroups.go new file mode 100644 index 00000000000..50661e67194 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/method_listeffectivenetworksecuritygroups.go @@ -0,0 +1,77 @@ +package networkinterfaces + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListEffectiveNetworkSecurityGroupsOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *[]EffectiveNetworkSecurityGroup +} + +type ListEffectiveNetworkSecurityGroupsCompleteResult struct { + LatestHttpResponse *http.Response + Items []EffectiveNetworkSecurityGroup +} + +// ListEffectiveNetworkSecurityGroups ... +func (c NetworkInterfacesClient) ListEffectiveNetworkSecurityGroups(ctx context.Context, id commonids.NetworkInterfaceId) (result ListEffectiveNetworkSecurityGroupsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/effectiveNetworkSecurityGroups", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// ListEffectiveNetworkSecurityGroupsThenPoll performs ListEffectiveNetworkSecurityGroups then polls until it's completed +func (c NetworkInterfacesClient) ListEffectiveNetworkSecurityGroupsThenPoll(ctx context.Context, id commonids.NetworkInterfaceId) error { + result, err := c.ListEffectiveNetworkSecurityGroups(ctx, id) + if err != nil { + return fmt.Errorf("performing ListEffectiveNetworkSecurityGroups: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after ListEffectiveNetworkSecurityGroups: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/method_listvirtualmachinescalesetipconfigurations.go b/resource-manager/network/2024-01-01/networkinterfaces/method_listvirtualmachinescalesetipconfigurations.go new file mode 100644 index 00000000000..eea33cc5ab0 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/method_listvirtualmachinescalesetipconfigurations.go @@ -0,0 +1,121 @@ +package networkinterfaces + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListVirtualMachineScaleSetIPConfigurationsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NetworkInterfaceIPConfiguration +} + +type ListVirtualMachineScaleSetIPConfigurationsCompleteResult struct { + LatestHttpResponse *http.Response + Items []NetworkInterfaceIPConfiguration +} + +type ListVirtualMachineScaleSetIPConfigurationsOperationOptions struct { + Expand *string +} + +func DefaultListVirtualMachineScaleSetIPConfigurationsOperationOptions() ListVirtualMachineScaleSetIPConfigurationsOperationOptions { + return ListVirtualMachineScaleSetIPConfigurationsOperationOptions{} +} + +func (o ListVirtualMachineScaleSetIPConfigurationsOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o ListVirtualMachineScaleSetIPConfigurationsOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o ListVirtualMachineScaleSetIPConfigurationsOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// ListVirtualMachineScaleSetIPConfigurations ... +func (c NetworkInterfacesClient) ListVirtualMachineScaleSetIPConfigurations(ctx context.Context, id commonids.VirtualMachineScaleSetNetworkInterfaceId, options ListVirtualMachineScaleSetIPConfigurationsOperationOptions) (result ListVirtualMachineScaleSetIPConfigurationsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/ipConfigurations", id.ID()), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NetworkInterfaceIPConfiguration `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListVirtualMachineScaleSetIPConfigurationsComplete retrieves all the results into a single object +func (c NetworkInterfacesClient) ListVirtualMachineScaleSetIPConfigurationsComplete(ctx context.Context, id commonids.VirtualMachineScaleSetNetworkInterfaceId, options ListVirtualMachineScaleSetIPConfigurationsOperationOptions) (ListVirtualMachineScaleSetIPConfigurationsCompleteResult, error) { + return c.ListVirtualMachineScaleSetIPConfigurationsCompleteMatchingPredicate(ctx, id, options, NetworkInterfaceIPConfigurationOperationPredicate{}) +} + +// ListVirtualMachineScaleSetIPConfigurationsCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c NetworkInterfacesClient) ListVirtualMachineScaleSetIPConfigurationsCompleteMatchingPredicate(ctx context.Context, id commonids.VirtualMachineScaleSetNetworkInterfaceId, options ListVirtualMachineScaleSetIPConfigurationsOperationOptions, predicate NetworkInterfaceIPConfigurationOperationPredicate) (result ListVirtualMachineScaleSetIPConfigurationsCompleteResult, err error) { + items := make([]NetworkInterfaceIPConfiguration, 0) + + resp, err := c.ListVirtualMachineScaleSetIPConfigurations(ctx, id, options) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListVirtualMachineScaleSetIPConfigurationsCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/method_listvirtualmachinescalesetnetworkinterfaces.go b/resource-manager/network/2024-01-01/networkinterfaces/method_listvirtualmachinescalesetnetworkinterfaces.go new file mode 100644 index 00000000000..1b4ce2a6774 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/method_listvirtualmachinescalesetnetworkinterfaces.go @@ -0,0 +1,92 @@ +package networkinterfaces + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListVirtualMachineScaleSetNetworkInterfacesOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NetworkInterface +} + +type ListVirtualMachineScaleSetNetworkInterfacesCompleteResult struct { + LatestHttpResponse *http.Response + Items []NetworkInterface +} + +// ListVirtualMachineScaleSetNetworkInterfaces ... +func (c NetworkInterfacesClient) ListVirtualMachineScaleSetNetworkInterfaces(ctx context.Context, id VirtualMachineScaleSetId) (result ListVirtualMachineScaleSetNetworkInterfacesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/networkInterfaces", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NetworkInterface `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListVirtualMachineScaleSetNetworkInterfacesComplete retrieves all the results into a single object +func (c NetworkInterfacesClient) ListVirtualMachineScaleSetNetworkInterfacesComplete(ctx context.Context, id VirtualMachineScaleSetId) (ListVirtualMachineScaleSetNetworkInterfacesCompleteResult, error) { + return c.ListVirtualMachineScaleSetNetworkInterfacesCompleteMatchingPredicate(ctx, id, NetworkInterfaceOperationPredicate{}) +} + +// ListVirtualMachineScaleSetNetworkInterfacesCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c NetworkInterfacesClient) ListVirtualMachineScaleSetNetworkInterfacesCompleteMatchingPredicate(ctx context.Context, id VirtualMachineScaleSetId, predicate NetworkInterfaceOperationPredicate) (result ListVirtualMachineScaleSetNetworkInterfacesCompleteResult, err error) { + items := make([]NetworkInterface, 0) + + resp, err := c.ListVirtualMachineScaleSetNetworkInterfaces(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListVirtualMachineScaleSetNetworkInterfacesCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/method_listvirtualmachinescalesetvmnetworkinterfaces.go b/resource-manager/network/2024-01-01/networkinterfaces/method_listvirtualmachinescalesetvmnetworkinterfaces.go new file mode 100644 index 00000000000..eaa548b7373 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/method_listvirtualmachinescalesetvmnetworkinterfaces.go @@ -0,0 +1,92 @@ +package networkinterfaces + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListVirtualMachineScaleSetVMNetworkInterfacesOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NetworkInterface +} + +type ListVirtualMachineScaleSetVMNetworkInterfacesCompleteResult struct { + LatestHttpResponse *http.Response + Items []NetworkInterface +} + +// ListVirtualMachineScaleSetVMNetworkInterfaces ... +func (c NetworkInterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfaces(ctx context.Context, id VirtualMachineId) (result ListVirtualMachineScaleSetVMNetworkInterfacesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/networkInterfaces", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NetworkInterface `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListVirtualMachineScaleSetVMNetworkInterfacesComplete retrieves all the results into a single object +func (c NetworkInterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfacesComplete(ctx context.Context, id VirtualMachineId) (ListVirtualMachineScaleSetVMNetworkInterfacesCompleteResult, error) { + return c.ListVirtualMachineScaleSetVMNetworkInterfacesCompleteMatchingPredicate(ctx, id, NetworkInterfaceOperationPredicate{}) +} + +// ListVirtualMachineScaleSetVMNetworkInterfacesCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c NetworkInterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfacesCompleteMatchingPredicate(ctx context.Context, id VirtualMachineId, predicate NetworkInterfaceOperationPredicate) (result ListVirtualMachineScaleSetVMNetworkInterfacesCompleteResult, err error) { + items := make([]NetworkInterface, 0) + + resp, err := c.ListVirtualMachineScaleSetVMNetworkInterfaces(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListVirtualMachineScaleSetVMNetworkInterfacesCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/method_networkinterfaceipconfigurationsget.go b/resource-manager/network/2024-01-01/networkinterfaces/method_networkinterfaceipconfigurationsget.go new file mode 100644 index 00000000000..90e537d0982 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/method_networkinterfaceipconfigurationsget.go @@ -0,0 +1,55 @@ +package networkinterfaces + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationsGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkInterfaceIPConfiguration +} + +// NetworkInterfaceIPConfigurationsGet ... +func (c NetworkInterfacesClient) NetworkInterfaceIPConfigurationsGet(ctx context.Context, id commonids.NetworkInterfaceIPConfigurationId) (result NetworkInterfaceIPConfigurationsGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkInterfaceIPConfiguration + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/method_networkinterfaceipconfigurationslist.go b/resource-manager/network/2024-01-01/networkinterfaces/method_networkinterfaceipconfigurationslist.go new file mode 100644 index 00000000000..2b472af0913 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/method_networkinterfaceipconfigurationslist.go @@ -0,0 +1,93 @@ +package networkinterfaces + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationsListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NetworkInterfaceIPConfiguration +} + +type NetworkInterfaceIPConfigurationsListCompleteResult struct { + LatestHttpResponse *http.Response + Items []NetworkInterfaceIPConfiguration +} + +// NetworkInterfaceIPConfigurationsList ... +func (c NetworkInterfacesClient) NetworkInterfaceIPConfigurationsList(ctx context.Context, id commonids.NetworkInterfaceId) (result NetworkInterfaceIPConfigurationsListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/ipConfigurations", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NetworkInterfaceIPConfiguration `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// NetworkInterfaceIPConfigurationsListComplete retrieves all the results into a single object +func (c NetworkInterfacesClient) NetworkInterfaceIPConfigurationsListComplete(ctx context.Context, id commonids.NetworkInterfaceId) (NetworkInterfaceIPConfigurationsListCompleteResult, error) { + return c.NetworkInterfaceIPConfigurationsListCompleteMatchingPredicate(ctx, id, NetworkInterfaceIPConfigurationOperationPredicate{}) +} + +// NetworkInterfaceIPConfigurationsListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c NetworkInterfacesClient) NetworkInterfaceIPConfigurationsListCompleteMatchingPredicate(ctx context.Context, id commonids.NetworkInterfaceId, predicate NetworkInterfaceIPConfigurationOperationPredicate) (result NetworkInterfaceIPConfigurationsListCompleteResult, err error) { + items := make([]NetworkInterfaceIPConfiguration, 0) + + resp, err := c.NetworkInterfaceIPConfigurationsList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = NetworkInterfaceIPConfigurationsListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/method_networkinterfaceloadbalancerslist.go b/resource-manager/network/2024-01-01/networkinterfaces/method_networkinterfaceloadbalancerslist.go new file mode 100644 index 00000000000..8ed1e84ef81 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/method_networkinterfaceloadbalancerslist.go @@ -0,0 +1,93 @@ +package networkinterfaces + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceLoadBalancersListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]LoadBalancer +} + +type NetworkInterfaceLoadBalancersListCompleteResult struct { + LatestHttpResponse *http.Response + Items []LoadBalancer +} + +// NetworkInterfaceLoadBalancersList ... +func (c NetworkInterfacesClient) NetworkInterfaceLoadBalancersList(ctx context.Context, id commonids.NetworkInterfaceId) (result NetworkInterfaceLoadBalancersListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/loadBalancers", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]LoadBalancer `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// NetworkInterfaceLoadBalancersListComplete retrieves all the results into a single object +func (c NetworkInterfacesClient) NetworkInterfaceLoadBalancersListComplete(ctx context.Context, id commonids.NetworkInterfaceId) (NetworkInterfaceLoadBalancersListCompleteResult, error) { + return c.NetworkInterfaceLoadBalancersListCompleteMatchingPredicate(ctx, id, LoadBalancerOperationPredicate{}) +} + +// NetworkInterfaceLoadBalancersListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c NetworkInterfacesClient) NetworkInterfaceLoadBalancersListCompleteMatchingPredicate(ctx context.Context, id commonids.NetworkInterfaceId, predicate LoadBalancerOperationPredicate) (result NetworkInterfaceLoadBalancersListCompleteResult, err error) { + items := make([]LoadBalancer, 0) + + resp, err := c.NetworkInterfaceLoadBalancersList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = NetworkInterfaceLoadBalancersListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/method_networkinterfacetapconfigurationsget.go b/resource-manager/network/2024-01-01/networkinterfaces/method_networkinterfacetapconfigurationsget.go new file mode 100644 index 00000000000..868ecfb43d5 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/method_networkinterfacetapconfigurationsget.go @@ -0,0 +1,54 @@ +package networkinterfaces + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfigurationsGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkInterfaceTapConfiguration +} + +// NetworkInterfaceTapConfigurationsGet ... +func (c NetworkInterfacesClient) NetworkInterfaceTapConfigurationsGet(ctx context.Context, id TapConfigurationId) (result NetworkInterfaceTapConfigurationsGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkInterfaceTapConfiguration + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/method_networkinterfacetapconfigurationslist.go b/resource-manager/network/2024-01-01/networkinterfaces/method_networkinterfacetapconfigurationslist.go new file mode 100644 index 00000000000..277fda0aa19 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/method_networkinterfacetapconfigurationslist.go @@ -0,0 +1,93 @@ +package networkinterfaces + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfigurationsListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NetworkInterfaceTapConfiguration +} + +type NetworkInterfaceTapConfigurationsListCompleteResult struct { + LatestHttpResponse *http.Response + Items []NetworkInterfaceTapConfiguration +} + +// NetworkInterfaceTapConfigurationsList ... +func (c NetworkInterfacesClient) NetworkInterfaceTapConfigurationsList(ctx context.Context, id commonids.NetworkInterfaceId) (result NetworkInterfaceTapConfigurationsListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/tapConfigurations", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NetworkInterfaceTapConfiguration `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// NetworkInterfaceTapConfigurationsListComplete retrieves all the results into a single object +func (c NetworkInterfacesClient) NetworkInterfaceTapConfigurationsListComplete(ctx context.Context, id commonids.NetworkInterfaceId) (NetworkInterfaceTapConfigurationsListCompleteResult, error) { + return c.NetworkInterfaceTapConfigurationsListCompleteMatchingPredicate(ctx, id, NetworkInterfaceTapConfigurationOperationPredicate{}) +} + +// NetworkInterfaceTapConfigurationsListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c NetworkInterfacesClient) NetworkInterfaceTapConfigurationsListCompleteMatchingPredicate(ctx context.Context, id commonids.NetworkInterfaceId, predicate NetworkInterfaceTapConfigurationOperationPredicate) (result NetworkInterfaceTapConfigurationsListCompleteResult, err error) { + items := make([]NetworkInterfaceTapConfiguration, 0) + + resp, err := c.NetworkInterfaceTapConfigurationsList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = NetworkInterfaceTapConfigurationsListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/method_updatetags.go b/resource-manager/network/2024-01-01/networkinterfaces/method_updatetags.go new file mode 100644 index 00000000000..ca8e31de55a --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/method_updatetags.go @@ -0,0 +1,59 @@ +package networkinterfaces + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkInterface +} + +// UpdateTags ... +func (c NetworkInterfacesClient) UpdateTags(ctx context.Context, id commonids.NetworkInterfaceId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkInterface + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_applicationgatewaybackendaddress.go b/resource-manager/network/2024-01-01/networkinterfaces/model_applicationgatewaybackendaddress.go new file mode 100644 index 00000000000..126f8350b09 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_applicationgatewaybackendaddress.go @@ -0,0 +1,9 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddress struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_applicationgatewaybackendaddresspool.go b/resource-manager/network/2024-01-01/networkinterfaces/model_applicationgatewaybackendaddresspool.go new file mode 100644 index 00000000000..15c656ad057 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_applicationgatewaybackendaddresspool.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_applicationgatewaybackendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_applicationgatewaybackendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..34912a8fcbd --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_applicationgatewaybackendaddresspoolpropertiesformat.go @@ -0,0 +1,10 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPoolPropertiesFormat struct { + BackendAddresses *[]ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"` + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_applicationgatewayipconfiguration.go b/resource-manager/network/2024-01-01/networkinterfaces/model_applicationgatewayipconfiguration.go new file mode 100644 index 00000000000..3b83d83c7c9 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_applicationgatewayipconfiguration.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_applicationgatewayipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_applicationgatewayipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..dd810dfed2c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_applicationgatewayipconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/networkinterfaces/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..2948e0c794a --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..aa06b33fbe1 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_backendaddresspool.go b/resource-manager/network/2024-01-01/networkinterfaces/model_backendaddresspool.go new file mode 100644 index 00000000000..bd329cce127 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_backendaddresspool.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_backendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_backendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..7c5d918e43a --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_backendaddresspoolpropertiesformat.go @@ -0,0 +1,19 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPoolPropertiesFormat struct { + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + DrainPeriodInSeconds *int64 `json:"drainPeriodInSeconds,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancerBackendAddresses *[]LoadBalancerBackendAddress `json:"loadBalancerBackendAddresses,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + Location *string `json:"location,omitempty"` + OutboundRule *SubResource `json:"outboundRule,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SyncMode *SyncMode `json:"syncMode,omitempty"` + TunnelInterfaces *[]GatewayLoadBalancerTunnelInterface `json:"tunnelInterfaces,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_customdnsconfigpropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_customdnsconfigpropertiesformat.go new file mode 100644 index 00000000000..e0be4a6b6f6 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_customdnsconfigpropertiesformat.go @@ -0,0 +1,9 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomDnsConfigPropertiesFormat struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_ddossettings.go b/resource-manager/network/2024-01-01/networkinterfaces/model_ddossettings.go new file mode 100644 index 00000000000..4902360d689 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_ddossettings.go @@ -0,0 +1,9 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettings struct { + DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"` + ProtectionMode *DdosSettingsProtectionMode `json:"protectionMode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_delegation.go b/resource-manager/network/2024-01-01/networkinterfaces/model_delegation.go new file mode 100644 index 00000000000..5fb9effbb1b --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_delegation.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Delegation struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceDelegationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_effectivenetworksecuritygroup.go b/resource-manager/network/2024-01-01/networkinterfaces/model_effectivenetworksecuritygroup.go new file mode 100644 index 00000000000..5c66ee3a9b5 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_effectivenetworksecuritygroup.go @@ -0,0 +1,11 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type EffectiveNetworkSecurityGroup struct { + Association *EffectiveNetworkSecurityGroupAssociation `json:"association,omitempty"` + EffectiveSecurityRules *[]EffectiveNetworkSecurityRule `json:"effectiveSecurityRules,omitempty"` + NetworkSecurityGroup *SubResource `json:"networkSecurityGroup,omitempty"` + TagMap *map[string][]string `json:"tagMap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_effectivenetworksecuritygroupassociation.go b/resource-manager/network/2024-01-01/networkinterfaces/model_effectivenetworksecuritygroupassociation.go new file mode 100644 index 00000000000..3c6248c32c9 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_effectivenetworksecuritygroupassociation.go @@ -0,0 +1,10 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type EffectiveNetworkSecurityGroupAssociation struct { + NetworkInterface *SubResource `json:"networkInterface,omitempty"` + NetworkManager *SubResource `json:"networkManager,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_effectivenetworksecurityrule.go b/resource-manager/network/2024-01-01/networkinterfaces/model_effectivenetworksecurityrule.go new file mode 100644 index 00000000000..9c9dd92e515 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_effectivenetworksecurityrule.go @@ -0,0 +1,22 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type EffectiveNetworkSecurityRule struct { + Access *SecurityRuleAccess `json:"access,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction *SecurityRuleDirection `json:"direction,omitempty"` + ExpandedDestinationAddressPrefix *[]string `json:"expandedDestinationAddressPrefix,omitempty"` + ExpandedSourceAddressPrefix *[]string `json:"expandedSourceAddressPrefix,omitempty"` + Name *string `json:"name,omitempty"` + Priority *int64 `json:"priority,omitempty"` + Protocol *EffectiveSecurityRuleProtocol `json:"protocol,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_effectiveroute.go b/resource-manager/network/2024-01-01/networkinterfaces/model_effectiveroute.go new file mode 100644 index 00000000000..aa9dac67810 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_effectiveroute.go @@ -0,0 +1,14 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type EffectiveRoute struct { + AddressPrefix *[]string `json:"addressPrefix,omitempty"` + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + Name *string `json:"name,omitempty"` + NextHopIPAddress *[]string `json:"nextHopIpAddress,omitempty"` + NextHopType *RouteNextHopType `json:"nextHopType,omitempty"` + Source *EffectiveRouteSource `json:"source,omitempty"` + State *EffectiveRouteState `json:"state,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_flowlog.go b/resource-manager/network/2024-01-01/networkinterfaces/model_flowlog.go new file mode 100644 index 00000000000..6c8ab9073ec --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_flowlog.go @@ -0,0 +1,19 @@ +package networkinterfaces + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLog struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FlowLogPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/networkinterfaces/model_flowlogformatparameters.go new file mode 100644 index 00000000000..43abd6c1532 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_flowlogpropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_flowlogpropertiesformat.go new file mode 100644 index 00000000000..e594a5d3819 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_flowlogpropertiesformat.go @@ -0,0 +1,15 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogPropertiesFormat struct { + Enabled *bool `json:"enabled,omitempty"` + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` + TargetResourceGuid *string `json:"targetResourceGuid,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_frontendipconfiguration.go b/resource-manager/network/2024-01-01/networkinterfaces/model_frontendipconfiguration.go new file mode 100644 index 00000000000..35c07477d52 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_frontendipconfiguration.go @@ -0,0 +1,17 @@ +package networkinterfaces + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_frontendipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_frontendipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..174b1d44662 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_frontendipconfigurationpropertiesformat.go @@ -0,0 +1,19 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfigurationPropertiesFormat struct { + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + InboundNatPools *[]SubResource `json:"inboundNatPools,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_gatewayloadbalancertunnelinterface.go b/resource-manager/network/2024-01-01/networkinterfaces/model_gatewayloadbalancertunnelinterface.go new file mode 100644 index 00000000000..8562c4824fb --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_gatewayloadbalancertunnelinterface.go @@ -0,0 +1,11 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayLoadBalancerTunnelInterface struct { + Identifier *int64 `json:"identifier,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *GatewayLoadBalancerTunnelProtocol `json:"protocol,omitempty"` + Type *GatewayLoadBalancerTunnelInterfaceType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_inboundnatpool.go b/resource-manager/network/2024-01-01/networkinterfaces/model_inboundnatpool.go new file mode 100644 index 00000000000..a16659ffff0 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_inboundnatpool.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundNatPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_inboundnatpoolpropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_inboundnatpoolpropertiesformat.go new file mode 100644 index 00000000000..4586e6ec1dc --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_inboundnatpoolpropertiesformat.go @@ -0,0 +1,16 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatPoolPropertiesFormat struct { + BackendPort int64 `json:"backendPort"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPortRangeEnd int64 `json:"frontendPortRangeEnd"` + FrontendPortRangeStart int64 `json:"frontendPortRangeStart"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol TransportProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_inboundnatrule.go b/resource-manager/network/2024-01-01/networkinterfaces/model_inboundnatrule.go new file mode 100644 index 00000000000..a41993b3c8d --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_inboundnatrule.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundNatRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_inboundnatrulepropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_inboundnatrulepropertiesformat.go new file mode 100644 index 00000000000..9a882cfef22 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_inboundnatrulepropertiesformat.go @@ -0,0 +1,19 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendIPConfiguration *NetworkInterfaceIPConfiguration `json:"backendIPConfiguration,omitempty"` + BackendPort *int64 `json:"backendPort,omitempty"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + FrontendPortRangeEnd *int64 `json:"frontendPortRangeEnd,omitempty"` + FrontendPortRangeStart *int64 `json:"frontendPortRangeStart,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol *TransportProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_ipconfiguration.go b/resource-manager/network/2024-01-01/networkinterfaces/model_ipconfiguration.go new file mode 100644 index 00000000000..c1294125f57 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_ipconfiguration.go @@ -0,0 +1,11 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_ipconfigurationprofile.go b/resource-manager/network/2024-01-01/networkinterfaces/model_ipconfigurationprofile.go new file mode 100644 index 00000000000..b5f591fbc35 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_ipconfigurationprofile.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationProfilePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_ipconfigurationprofilepropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_ipconfigurationprofilepropertiesformat.go new file mode 100644 index 00000000000..0027cc6adbe --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_ipconfigurationprofilepropertiesformat.go @@ -0,0 +1,9 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfilePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_ipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_ipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..1338f55c4e1 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_ipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_iptag.go b/resource-manager/network/2024-01-01/networkinterfaces/model_iptag.go new file mode 100644 index 00000000000..c2dc282ad0e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_iptag.go @@ -0,0 +1,9 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPTag struct { + IPTagType *string `json:"ipTagType,omitempty"` + Tag *string `json:"tag,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_loadbalancer.go b/resource-manager/network/2024-01-01/networkinterfaces/model_loadbalancer.go new file mode 100644 index 00000000000..aaa7bd9d086 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_loadbalancer.go @@ -0,0 +1,20 @@ +package networkinterfaces + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancer struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *LoadBalancerPropertiesFormat `json:"properties,omitempty"` + Sku *LoadBalancerSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_loadbalancerbackendaddress.go b/resource-manager/network/2024-01-01/networkinterfaces/model_loadbalancerbackendaddress.go new file mode 100644 index 00000000000..58da623122f --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_loadbalancerbackendaddress.go @@ -0,0 +1,9 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddress struct { + Name *string `json:"name,omitempty"` + Properties *LoadBalancerBackendAddressPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_loadbalancerbackendaddresspropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_loadbalancerbackendaddresspropertiesformat.go new file mode 100644 index 00000000000..192b497dd13 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_loadbalancerbackendaddresspropertiesformat.go @@ -0,0 +1,14 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPropertiesFormat struct { + AdminState *LoadBalancerBackendAddressAdminState `json:"adminState,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + InboundNatRulesPortMapping *[]NatRulePortMapping `json:"inboundNatRulesPortMapping,omitempty"` + LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIPConfiguration,omitempty"` + NetworkInterfaceIPConfiguration *SubResource `json:"networkInterfaceIPConfiguration,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_loadbalancerpropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_loadbalancerpropertiesformat.go new file mode 100644 index 00000000000..b0c27be8bab --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_loadbalancerpropertiesformat.go @@ -0,0 +1,16 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerPropertiesFormat struct { + BackendAddressPools *[]BackendAddressPool `json:"backendAddressPools,omitempty"` + FrontendIPConfigurations *[]FrontendIPConfiguration `json:"frontendIPConfigurations,omitempty"` + InboundNatPools *[]InboundNatPool `json:"inboundNatPools,omitempty"` + InboundNatRules *[]InboundNatRule `json:"inboundNatRules,omitempty"` + LoadBalancingRules *[]LoadBalancingRule `json:"loadBalancingRules,omitempty"` + OutboundRules *[]OutboundRule `json:"outboundRules,omitempty"` + Probes *[]Probe `json:"probes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_loadbalancersku.go b/resource-manager/network/2024-01-01/networkinterfaces/model_loadbalancersku.go new file mode 100644 index 00000000000..e10cf68701b --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_loadbalancersku.go @@ -0,0 +1,9 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerSku struct { + Name *LoadBalancerSkuName `json:"name,omitempty"` + Tier *LoadBalancerSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_loadbalancingrule.go b/resource-manager/network/2024-01-01/networkinterfaces/model_loadbalancingrule.go new file mode 100644 index 00000000000..5ca9aca81f1 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_loadbalancingrule.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancingRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *LoadBalancingRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_loadbalancingrulepropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_loadbalancingrulepropertiesformat.go new file mode 100644 index 00000000000..79fe798b88d --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_loadbalancingrulepropertiesformat.go @@ -0,0 +1,20 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancingRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendAddressPools *[]SubResource `json:"backendAddressPools,omitempty"` + BackendPort *int64 `json:"backendPort,omitempty"` + DisableOutboundSnat *bool `json:"disableOutboundSnat,omitempty"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort int64 `json:"frontendPort"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + LoadDistribution *LoadDistribution `json:"loadDistribution,omitempty"` + Probe *SubResource `json:"probe,omitempty"` + Protocol TransportProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_natgateway.go b/resource-manager/network/2024-01-01/networkinterfaces/model_natgateway.go new file mode 100644 index 00000000000..7fe571d7a74 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_natgateway.go @@ -0,0 +1,20 @@ +package networkinterfaces + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"` + Sku *NatGatewaySku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_natgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_natgatewaypropertiesformat.go new file mode 100644 index 00000000000..9da53fae58a --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_natgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayPropertiesFormat struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]SubResource `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_natgatewaysku.go b/resource-manager/network/2024-01-01/networkinterfaces/model_natgatewaysku.go new file mode 100644 index 00000000000..aff4514b5e7 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_natgatewaysku.go @@ -0,0 +1,8 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySku struct { + Name *NatGatewaySkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_natruleportmapping.go b/resource-manager/network/2024-01-01/networkinterfaces/model_natruleportmapping.go new file mode 100644 index 00000000000..05068ac7e2f --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_natruleportmapping.go @@ -0,0 +1,10 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulePortMapping struct { + BackendPort *int64 `json:"backendPort,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + InboundNatRuleName *string `json:"inboundNatRuleName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterface.go b/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterface.go new file mode 100644 index 00000000000..286c9562aaf --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterface.go @@ -0,0 +1,19 @@ +package networkinterfaces + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterface struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfacePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterfacednssettings.go b/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterfacednssettings.go new file mode 100644 index 00000000000..af3e4e75519 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterfacednssettings.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceDnsSettings struct { + AppliedDnsServers *[]string `json:"appliedDnsServers,omitempty"` + DnsServers *[]string `json:"dnsServers,omitempty"` + InternalDnsNameLabel *string `json:"internalDnsNameLabel,omitempty"` + InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty"` + InternalFqdn *string `json:"internalFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterfaceipconfiguration.go b/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterfaceipconfiguration.go new file mode 100644 index 00000000000..ca861570a5d --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterfaceipconfiguration.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go b/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go new file mode 100644 index 00000000000..abcc6fdfc5b --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go @@ -0,0 +1,10 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties struct { + Fqdns *[]string `json:"fqdns,omitempty"` + GroupId *string `json:"groupId,omitempty"` + RequiredMemberName *string `json:"requiredMemberName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterfaceipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterfaceipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..86aea8f6e8e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterfaceipconfigurationpropertiesformat.go @@ -0,0 +1,22 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPropertiesFormat struct { + ApplicationGatewayBackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"applicationGatewayBackendAddressPools,omitempty"` + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + LoadBalancerBackendAddressPools *[]BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"` + LoadBalancerInboundNatRules *[]InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressPrefixLength *int64 `json:"privateIPAddressPrefixLength,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + PrivateLinkConnectionProperties *NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties `json:"privateLinkConnectionProperties,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` + VirtualNetworkTaps *[]VirtualNetworkTap `json:"virtualNetworkTaps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterfacepropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterfacepropertiesformat.go new file mode 100644 index 00000000000..3fd3da2e6e6 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterfacepropertiesformat.go @@ -0,0 +1,29 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfacePropertiesFormat struct { + AuxiliaryMode *NetworkInterfaceAuxiliaryMode `json:"auxiliaryMode,omitempty"` + AuxiliarySku *NetworkInterfaceAuxiliarySku `json:"auxiliarySku,omitempty"` + DisableTcpStateTracking *bool `json:"disableTcpStateTracking,omitempty"` + DnsSettings *NetworkInterfaceDnsSettings `json:"dnsSettings,omitempty"` + DscpConfiguration *SubResource `json:"dscpConfiguration,omitempty"` + EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"` + EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"` + HostedWorkloads *[]string `json:"hostedWorkloads,omitempty"` + IPConfigurations *[]NetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + MacAddress *string `json:"macAddress,omitempty"` + MigrationPhase *NetworkInterfaceMigrationPhase `json:"migrationPhase,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + NicType *NetworkInterfaceNicType `json:"nicType,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkService *PrivateLinkService `json:"privateLinkService,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + TapConfigurations *[]NetworkInterfaceTapConfiguration `json:"tapConfigurations,omitempty"` + VirtualMachine *SubResource `json:"virtualMachine,omitempty"` + VnetEncryptionSupported *bool `json:"vnetEncryptionSupported,omitempty"` + WorkloadType *string `json:"workloadType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterfacetapconfiguration.go b/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterfacetapconfiguration.go new file mode 100644 index 00000000000..e67a81616a9 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterfacetapconfiguration.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceTapConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterfacetapconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterfacetapconfigurationpropertiesformat.go new file mode 100644 index 00000000000..72010ae8dac --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_networkinterfacetapconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualNetworkTap *VirtualNetworkTap `json:"virtualNetworkTap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_networksecuritygroup.go b/resource-manager/network/2024-01-01/networkinterfaces/model_networksecuritygroup.go new file mode 100644 index 00000000000..05ed91fcd1a --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_networksecuritygroup.go @@ -0,0 +1,14 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_networksecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_networksecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..ce8a013b83a --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_networksecuritygrouppropertiesformat.go @@ -0,0 +1,15 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupPropertiesFormat struct { + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + FlowLogs *[]FlowLog `json:"flowLogs,omitempty"` + FlushConnection *bool `json:"flushConnection,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_outboundrule.go b/resource-manager/network/2024-01-01/networkinterfaces/model_outboundrule.go new file mode 100644 index 00000000000..2afc56da4cc --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_outboundrule.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type OutboundRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *OutboundRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_outboundrulepropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_outboundrulepropertiesformat.go new file mode 100644 index 00000000000..4cc4e2f5087 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_outboundrulepropertiesformat.go @@ -0,0 +1,14 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type OutboundRulePropertiesFormat struct { + AllocatedOutboundPorts *int64 `json:"allocatedOutboundPorts,omitempty"` + BackendAddressPool SubResource `json:"backendAddressPool"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfigurations []SubResource `json:"frontendIPConfigurations"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol LoadBalancerOutboundRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_privateendpoint.go b/resource-manager/network/2024-01-01/networkinterfaces/model_privateendpoint.go new file mode 100644 index 00000000000..da5835bccba --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_privateendpoint.go @@ -0,0 +1,19 @@ +package networkinterfaces + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpoint struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_privateendpointconnection.go b/resource-manager/network/2024-01-01/networkinterfaces/model_privateendpointconnection.go new file mode 100644 index 00000000000..81a07962195 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_privateendpointconnection.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_privateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/networkinterfaces/model_privateendpointconnectionproperties.go new file mode 100644 index 00000000000..eb2204732ec --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_privateendpointconnectionproperties.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateEndpointLocation *string `json:"privateEndpointLocation,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_privateendpointipconfiguration.go b/resource-manager/network/2024-01-01/networkinterfaces/model_privateendpointipconfiguration.go new file mode 100644 index 00000000000..085039e25e2 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_privateendpointipconfiguration.go @@ -0,0 +1,11 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_privateendpointipconfigurationproperties.go b/resource-manager/network/2024-01-01/networkinterfaces/model_privateendpointipconfigurationproperties.go new file mode 100644 index 00000000000..802747eb32e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_privateendpointipconfigurationproperties.go @@ -0,0 +1,10 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfigurationProperties struct { + GroupId *string `json:"groupId,omitempty"` + MemberName *string `json:"memberName,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_privateendpointproperties.go b/resource-manager/network/2024-01-01/networkinterfaces/model_privateendpointproperties.go new file mode 100644 index 00000000000..ea496b7d032 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_privateendpointproperties.go @@ -0,0 +1,16 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointProperties struct { + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + CustomDnsConfigs *[]CustomDnsConfigPropertiesFormat `json:"customDnsConfigs,omitempty"` + CustomNetworkInterfaceName *string `json:"customNetworkInterfaceName,omitempty"` + IPConfigurations *[]PrivateEndpointIPConfiguration `json:"ipConfigurations,omitempty"` + ManualPrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"manualPrivateLinkServiceConnections,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"privateLinkServiceConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_privatelinkservice.go b/resource-manager/network/2024-01-01/networkinterfaces/model_privatelinkservice.go new file mode 100644 index 00000000000..7dcd5f985b9 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_privatelinkservice.go @@ -0,0 +1,19 @@ +package networkinterfaces + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkService struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_privatelinkserviceconnection.go b/resource-manager/network/2024-01-01/networkinterfaces/model_privatelinkserviceconnection.go new file mode 100644 index 00000000000..5e32cbfab8a --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_privatelinkserviceconnection.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_privatelinkserviceconnectionproperties.go b/resource-manager/network/2024-01-01/networkinterfaces/model_privatelinkserviceconnectionproperties.go new file mode 100644 index 00000000000..355c3d254f2 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_privatelinkserviceconnectionproperties.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionProperties struct { + GroupIds *[]string `json:"groupIds,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + PrivateLinkServiceId *string `json:"privateLinkServiceId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestMessage *string `json:"requestMessage,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_privatelinkserviceconnectionstate.go b/resource-manager/network/2024-01-01/networkinterfaces/model_privatelinkserviceconnectionstate.go new file mode 100644 index 00000000000..367b48d2fd6 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_privatelinkserviceconnectionstate.go @@ -0,0 +1,10 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionState struct { + ActionsRequired *string `json:"actionsRequired,omitempty"` + Description *string `json:"description,omitempty"` + Status *string `json:"status,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_privatelinkserviceipconfiguration.go b/resource-manager/network/2024-01-01/networkinterfaces/model_privatelinkserviceipconfiguration.go new file mode 100644 index 00000000000..3893fd72b02 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_privatelinkserviceipconfiguration.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_privatelinkserviceipconfigurationproperties.go b/resource-manager/network/2024-01-01/networkinterfaces/model_privatelinkserviceipconfigurationproperties.go new file mode 100644 index 00000000000..e1c0b0da64c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_privatelinkserviceipconfigurationproperties.go @@ -0,0 +1,13 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_privatelinkserviceproperties.go b/resource-manager/network/2024-01-01/networkinterfaces/model_privatelinkserviceproperties.go new file mode 100644 index 00000000000..2356695f6d1 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_privatelinkserviceproperties.go @@ -0,0 +1,17 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceProperties struct { + Alias *string `json:"alias,omitempty"` + AutoApproval *ResourceSet `json:"autoApproval,omitempty"` + EnableProxyProtocol *bool `json:"enableProxyProtocol,omitempty"` + Fqdns *[]string `json:"fqdns,omitempty"` + IPConfigurations *[]PrivateLinkServiceIPConfiguration `json:"ipConfigurations,omitempty"` + LoadBalancerFrontendIPConfigurations *[]FrontendIPConfiguration `json:"loadBalancerFrontendIpConfigurations,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Visibility *ResourceSet `json:"visibility,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_probe.go b/resource-manager/network/2024-01-01/networkinterfaces/model_probe.go new file mode 100644 index 00000000000..d935d63eee6 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_probe.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Probe struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ProbePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_probepropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_probepropertiesformat.go new file mode 100644 index 00000000000..ef24f4fde69 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_probepropertiesformat.go @@ -0,0 +1,16 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProbePropertiesFormat struct { + IntervalInSeconds *int64 `json:"intervalInSeconds,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + NoHealthyBackendsBehavior *ProbeNoHealthyBackendsBehavior `json:"NoHealthyBackendsBehavior,omitempty"` + NumberOfProbes *int64 `json:"numberOfProbes,omitempty"` + Port int64 `json:"port"` + ProbeThreshold *int64 `json:"probeThreshold,omitempty"` + Protocol ProbeProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestPath *string `json:"requestPath,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_publicipaddress.go b/resource-manager/network/2024-01-01/networkinterfaces/model_publicipaddress.go new file mode 100644 index 00000000000..e89fe49804b --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_publicipaddress.go @@ -0,0 +1,22 @@ +package networkinterfaces + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddress struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PublicIPAddressPropertiesFormat `json:"properties,omitempty"` + Sku *PublicIPAddressSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_publicipaddressdnssettings.go b/resource-manager/network/2024-01-01/networkinterfaces/model_publicipaddressdnssettings.go new file mode 100644 index 00000000000..9a6ffc1106a --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_publicipaddressdnssettings.go @@ -0,0 +1,11 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressDnsSettings struct { + DomainNameLabel *string `json:"domainNameLabel,omitempty"` + DomainNameLabelScope *PublicIPAddressDnsSettingsDomainNameLabelScope `json:"domainNameLabelScope,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + ReverseFqdn *string `json:"reverseFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_publicipaddresspropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_publicipaddresspropertiesformat.go new file mode 100644 index 00000000000..b13efec6d42 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_publicipaddresspropertiesformat.go @@ -0,0 +1,23 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressPropertiesFormat struct { + DdosSettings *DdosSettings `json:"ddosSettings,omitempty"` + DeleteOption *DeleteOptions `json:"deleteOption,omitempty"` + DnsSettings *PublicIPAddressDnsSettings `json:"dnsSettings,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty"` + IPTags *[]IPTag `json:"ipTags,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + LinkedPublicIPAddress *PublicIPAddress `json:"linkedPublicIPAddress,omitempty"` + MigrationPhase *PublicIPAddressMigrationPhase `json:"migrationPhase,omitempty"` + NatGateway *NatGateway `json:"natGateway,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"` + PublicIPAllocationMethod *IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServicePublicIPAddress *PublicIPAddress `json:"servicePublicIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_publicipaddresssku.go b/resource-manager/network/2024-01-01/networkinterfaces/model_publicipaddresssku.go new file mode 100644 index 00000000000..4f6513789bc --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_publicipaddresssku.go @@ -0,0 +1,9 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressSku struct { + Name *PublicIPAddressSkuName `json:"name,omitempty"` + Tier *PublicIPAddressSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_resourcenavigationlink.go b/resource-manager/network/2024-01-01/networkinterfaces/model_resourcenavigationlink.go new file mode 100644 index 00000000000..4a3f135d98d --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_resourcenavigationlink.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ResourceNavigationLinkFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_resourcenavigationlinkformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_resourcenavigationlinkformat.go new file mode 100644 index 00000000000..aa59d57de52 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_resourcenavigationlinkformat.go @@ -0,0 +1,10 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLinkFormat struct { + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_resourceset.go b/resource-manager/network/2024-01-01/networkinterfaces/model_resourceset.go new file mode 100644 index 00000000000..48356d239d8 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_resourceset.go @@ -0,0 +1,8 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceSet struct { + Subscriptions *[]string `json:"subscriptions,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/networkinterfaces/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..fe69c5c3389 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_route.go b/resource-manager/network/2024-01-01/networkinterfaces/model_route.go new file mode 100644 index 00000000000..8dd1c1c5cbe --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_route.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Route struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RoutePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_routepropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_routepropertiesformat.go new file mode 100644 index 00000000000..b031c9a871e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_routepropertiesformat.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutePropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + HasBgpOverride *bool `json:"hasBgpOverride,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + NextHopType RouteNextHopType `json:"nextHopType"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_routetable.go b/resource-manager/network/2024-01-01/networkinterfaces/model_routetable.go new file mode 100644 index 00000000000..31df96e7b73 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_routetable.go @@ -0,0 +1,14 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTable struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteTablePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_routetablepropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_routetablepropertiesformat.go new file mode 100644 index 00000000000..3c524eb8fe1 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_routetablepropertiesformat.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTablePropertiesFormat struct { + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Routes *[]Route `json:"routes,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_securityrule.go b/resource-manager/network/2024-01-01/networkinterfaces/model_securityrule.go new file mode 100644 index 00000000000..af9210ebc2f --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_securityrule.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_securityrulepropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_securityrulepropertiesformat.go new file mode 100644 index 00000000000..0ff4ba975dc --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_securityrulepropertiesformat.go @@ -0,0 +1,23 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulePropertiesFormat struct { + Access SecurityRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction SecurityRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_serviceassociationlink.go b/resource-manager/network/2024-01-01/networkinterfaces/model_serviceassociationlink.go new file mode 100644 index 00000000000..88ebd302e70 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_serviceassociationlink.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceAssociationLinkPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_serviceassociationlinkpropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_serviceassociationlinkpropertiesformat.go new file mode 100644 index 00000000000..538945df5d3 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_serviceassociationlinkpropertiesformat.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLinkPropertiesFormat struct { + AllowDelete *bool `json:"allowDelete,omitempty"` + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + Locations *[]string `json:"locations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_servicedelegationpropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_servicedelegationpropertiesformat.go new file mode 100644 index 00000000000..8444d0d495d --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_servicedelegationpropertiesformat.go @@ -0,0 +1,10 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceDelegationPropertiesFormat struct { + Actions *[]string `json:"actions,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_serviceendpointpolicy.go b/resource-manager/network/2024-01-01/networkinterfaces/model_serviceendpointpolicy.go new file mode 100644 index 00000000000..c77c2e3460a --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_serviceendpointpolicy.go @@ -0,0 +1,15 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Kind *string `json:"kind,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_serviceendpointpolicydefinition.go b/resource-manager/network/2024-01-01/networkinterfaces/model_serviceendpointpolicydefinition.go new file mode 100644 index 00000000000..6f523978f5b --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_serviceendpointpolicydefinition.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinition struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_serviceendpointpolicydefinitionpropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_serviceendpointpolicydefinitionpropertiesformat.go new file mode 100644 index 00000000000..ddd9db6fe47 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_serviceendpointpolicydefinitionpropertiesformat.go @@ -0,0 +1,11 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionPropertiesFormat struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` + ServiceResources *[]string `json:"serviceResources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_serviceendpointpolicypropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_serviceendpointpolicypropertiesformat.go new file mode 100644 index 00000000000..2692b80393d --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_serviceendpointpolicypropertiesformat.go @@ -0,0 +1,13 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyPropertiesFormat struct { + ContextualServiceEndpointPolicies *[]string `json:"contextualServiceEndpointPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServiceAlias *string `json:"serviceAlias,omitempty"` + ServiceEndpointPolicyDefinitions *[]ServiceEndpointPolicyDefinition `json:"serviceEndpointPolicyDefinitions,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_serviceendpointpropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_serviceendpointpropertiesformat.go new file mode 100644 index 00000000000..f7a4a8f30f4 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_serviceendpointpropertiesformat.go @@ -0,0 +1,11 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPropertiesFormat struct { + Locations *[]string `json:"locations,omitempty"` + NetworkIdentifier *SubResource `json:"networkIdentifier,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_subnet.go b/resource-manager/network/2024-01-01/networkinterfaces/model_subnet.go new file mode 100644 index 00000000000..47a0e306b4a --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_subnet.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Subnet struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SubnetPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_subnetpropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_subnetpropertiesformat.go new file mode 100644 index 00000000000..e21a76de2c6 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_subnetpropertiesformat.go @@ -0,0 +1,28 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + ApplicationGatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"applicationGatewayIPConfigurations,omitempty"` + DefaultOutboundAccess *bool `json:"defaultOutboundAccess,omitempty"` + Delegations *[]Delegation `json:"delegations,omitempty"` + IPAllocations *[]SubResource `json:"ipAllocations,omitempty"` + IPConfigurationProfiles *[]IPConfigurationProfile `json:"ipConfigurationProfiles,omitempty"` + IPConfigurations *[]IPConfiguration `json:"ipConfigurations,omitempty"` + NatGateway *SubResource `json:"natGateway,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + PrivateEndpointNetworkPolicies *VirtualNetworkPrivateEndpointNetworkPolicies `json:"privateEndpointNetworkPolicies,omitempty"` + PrivateEndpoints *[]PrivateEndpoint `json:"privateEndpoints,omitempty"` + PrivateLinkServiceNetworkPolicies *VirtualNetworkPrivateLinkServiceNetworkPolicies `json:"privateLinkServiceNetworkPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Purpose *string `json:"purpose,omitempty"` + ResourceNavigationLinks *[]ResourceNavigationLink `json:"resourceNavigationLinks,omitempty"` + RouteTable *RouteTable `json:"routeTable,omitempty"` + ServiceAssociationLinks *[]ServiceAssociationLink `json:"serviceAssociationLinks,omitempty"` + ServiceEndpointPolicies *[]ServiceEndpointPolicy `json:"serviceEndpointPolicies,omitempty"` + ServiceEndpoints *[]ServiceEndpointPropertiesFormat `json:"serviceEndpoints,omitempty"` + SharingScope *SharingScope `json:"sharingScope,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_subresource.go b/resource-manager/network/2024-01-01/networkinterfaces/model_subresource.go new file mode 100644 index 00000000000..28fa931dbee --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_subresource.go @@ -0,0 +1,8 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_tagsobject.go b/resource-manager/network/2024-01-01/networkinterfaces/model_tagsobject.go new file mode 100644 index 00000000000..32bf2f0b066 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_tagsobject.go @@ -0,0 +1,8 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/networkinterfaces/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..bd0b0fa5fe0 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/networkinterfaces/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..302f5bfcc4d --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_virtualnetworktap.go b/resource-manager/network/2024-01-01/networkinterfaces/model_virtualnetworktap.go new file mode 100644 index 00000000000..315bcaef069 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_virtualnetworktap.go @@ -0,0 +1,14 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkTapPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/model_virtualnetworktappropertiesformat.go b/resource-manager/network/2024-01-01/networkinterfaces/model_virtualnetworktappropertiesformat.go new file mode 100644 index 00000000000..90ce2721f15 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/model_virtualnetworktappropertiesformat.go @@ -0,0 +1,13 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapPropertiesFormat struct { + DestinationLoadBalancerFrontEndIPConfiguration *FrontendIPConfiguration `json:"destinationLoadBalancerFrontEndIPConfiguration,omitempty"` + DestinationNetworkInterfaceIPConfiguration *NetworkInterfaceIPConfiguration `json:"destinationNetworkInterfaceIPConfiguration,omitempty"` + DestinationPort *int64 `json:"destinationPort,omitempty"` + NetworkInterfaceTapConfigurations *[]NetworkInterfaceTapConfiguration `json:"networkInterfaceTapConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/predicates.go b/resource-manager/network/2024-01-01/networkinterfaces/predicates.go new file mode 100644 index 00000000000..c58ed4a328b --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/predicates.go @@ -0,0 +1,152 @@ +package networkinterfaces + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type EffectiveNetworkSecurityGroupOperationPredicate struct { +} + +func (p EffectiveNetworkSecurityGroupOperationPredicate) Matches(input EffectiveNetworkSecurityGroup) bool { + + return true +} + +type EffectiveRouteOperationPredicate struct { + DisableBgpRoutePropagation *bool + Name *string +} + +func (p EffectiveRouteOperationPredicate) Matches(input EffectiveRoute) bool { + + if p.DisableBgpRoutePropagation != nil && (input.DisableBgpRoutePropagation == nil || *p.DisableBgpRoutePropagation != *input.DisableBgpRoutePropagation) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + return true +} + +type LoadBalancerOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p LoadBalancerOperationPredicate) Matches(input LoadBalancer) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type NetworkInterfaceOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p NetworkInterfaceOperationPredicate) Matches(input NetworkInterface) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type NetworkInterfaceIPConfigurationOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p NetworkInterfaceIPConfigurationOperationPredicate) Matches(input NetworkInterfaceIPConfiguration) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type NetworkInterfaceTapConfigurationOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p NetworkInterfaceTapConfigurationOperationPredicate) Matches(input NetworkInterfaceTapConfiguration) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/networkinterfaces/version.go b/resource-manager/network/2024-01-01/networkinterfaces/version.go new file mode 100644 index 00000000000..82d52844172 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkinterfaces/version.go @@ -0,0 +1,12 @@ +package networkinterfaces + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/networkinterfaces/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/README.md b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/README.md new file mode 100644 index 00000000000..890e2a4f404 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/README.md @@ -0,0 +1,41 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkmanageractiveconfigurations` Documentation + +The `networkmanageractiveconfigurations` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkmanageractiveconfigurations" +``` + + +### Client Initialization + +```go +client := networkmanageractiveconfigurations.NewNetworkManagerActiveConfigurationsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `NetworkManagerActiveConfigurationsClient.ListActiveSecurityAdminRules` + +```go +ctx := context.TODO() +id := networkmanageractiveconfigurations.NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue") + +payload := networkmanageractiveconfigurations.ActiveConfigurationParameter{ + // ... +} + + +read, err := client.ListActiveSecurityAdminRules(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/client.go b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/client.go new file mode 100644 index 00000000000..fd577e53f33 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/client.go @@ -0,0 +1,26 @@ +package networkmanageractiveconfigurations + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManagerActiveConfigurationsClient struct { + Client *resourcemanager.Client +} + +func NewNetworkManagerActiveConfigurationsClientWithBaseURI(sdkApi sdkEnv.Api) (*NetworkManagerActiveConfigurationsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "networkmanageractiveconfigurations", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating NetworkManagerActiveConfigurationsClient: %+v", err) + } + + return &NetworkManagerActiveConfigurationsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/constants.go b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/constants.go new file mode 100644 index 00000000000..e4a2b230b6e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/constants.go @@ -0,0 +1,277 @@ +package networkmanageractiveconfigurations + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AddressPrefixType string + +const ( + AddressPrefixTypeIPPrefix AddressPrefixType = "IPPrefix" + AddressPrefixTypeServiceTag AddressPrefixType = "ServiceTag" +) + +func PossibleValuesForAddressPrefixType() []string { + return []string{ + string(AddressPrefixTypeIPPrefix), + string(AddressPrefixTypeServiceTag), + } +} + +func (s *AddressPrefixType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAddressPrefixType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAddressPrefixType(input string) (*AddressPrefixType, error) { + vals := map[string]AddressPrefixType{ + "ipprefix": AddressPrefixTypeIPPrefix, + "servicetag": AddressPrefixTypeServiceTag, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := AddressPrefixType(input) + return &out, nil +} + +type EffectiveAdminRuleKind string + +const ( + EffectiveAdminRuleKindCustom EffectiveAdminRuleKind = "Custom" + EffectiveAdminRuleKindDefault EffectiveAdminRuleKind = "Default" +) + +func PossibleValuesForEffectiveAdminRuleKind() []string { + return []string{ + string(EffectiveAdminRuleKindCustom), + string(EffectiveAdminRuleKindDefault), + } +} + +func (s *EffectiveAdminRuleKind) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseEffectiveAdminRuleKind(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseEffectiveAdminRuleKind(input string) (*EffectiveAdminRuleKind, error) { + vals := map[string]EffectiveAdminRuleKind{ + "custom": EffectiveAdminRuleKindCustom, + "default": EffectiveAdminRuleKindDefault, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := EffectiveAdminRuleKind(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type SecurityConfigurationRuleAccess string + +const ( + SecurityConfigurationRuleAccessAllow SecurityConfigurationRuleAccess = "Allow" + SecurityConfigurationRuleAccessAlwaysAllow SecurityConfigurationRuleAccess = "AlwaysAllow" + SecurityConfigurationRuleAccessDeny SecurityConfigurationRuleAccess = "Deny" +) + +func PossibleValuesForSecurityConfigurationRuleAccess() []string { + return []string{ + string(SecurityConfigurationRuleAccessAllow), + string(SecurityConfigurationRuleAccessAlwaysAllow), + string(SecurityConfigurationRuleAccessDeny), + } +} + +func (s *SecurityConfigurationRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityConfigurationRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityConfigurationRuleAccess(input string) (*SecurityConfigurationRuleAccess, error) { + vals := map[string]SecurityConfigurationRuleAccess{ + "allow": SecurityConfigurationRuleAccessAllow, + "alwaysallow": SecurityConfigurationRuleAccessAlwaysAllow, + "deny": SecurityConfigurationRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityConfigurationRuleAccess(input) + return &out, nil +} + +type SecurityConfigurationRuleDirection string + +const ( + SecurityConfigurationRuleDirectionInbound SecurityConfigurationRuleDirection = "Inbound" + SecurityConfigurationRuleDirectionOutbound SecurityConfigurationRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityConfigurationRuleDirection() []string { + return []string{ + string(SecurityConfigurationRuleDirectionInbound), + string(SecurityConfigurationRuleDirectionOutbound), + } +} + +func (s *SecurityConfigurationRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityConfigurationRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityConfigurationRuleDirection(input string) (*SecurityConfigurationRuleDirection, error) { + vals := map[string]SecurityConfigurationRuleDirection{ + "inbound": SecurityConfigurationRuleDirectionInbound, + "outbound": SecurityConfigurationRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityConfigurationRuleDirection(input) + return &out, nil +} + +type SecurityConfigurationRuleProtocol string + +const ( + SecurityConfigurationRuleProtocolAh SecurityConfigurationRuleProtocol = "Ah" + SecurityConfigurationRuleProtocolAny SecurityConfigurationRuleProtocol = "Any" + SecurityConfigurationRuleProtocolEsp SecurityConfigurationRuleProtocol = "Esp" + SecurityConfigurationRuleProtocolIcmp SecurityConfigurationRuleProtocol = "Icmp" + SecurityConfigurationRuleProtocolTcp SecurityConfigurationRuleProtocol = "Tcp" + SecurityConfigurationRuleProtocolUdp SecurityConfigurationRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityConfigurationRuleProtocol() []string { + return []string{ + string(SecurityConfigurationRuleProtocolAh), + string(SecurityConfigurationRuleProtocolAny), + string(SecurityConfigurationRuleProtocolEsp), + string(SecurityConfigurationRuleProtocolIcmp), + string(SecurityConfigurationRuleProtocolTcp), + string(SecurityConfigurationRuleProtocolUdp), + } +} + +func (s *SecurityConfigurationRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityConfigurationRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityConfigurationRuleProtocol(input string) (*SecurityConfigurationRuleProtocol, error) { + vals := map[string]SecurityConfigurationRuleProtocol{ + "ah": SecurityConfigurationRuleProtocolAh, + "any": SecurityConfigurationRuleProtocolAny, + "esp": SecurityConfigurationRuleProtocolEsp, + "icmp": SecurityConfigurationRuleProtocolIcmp, + "tcp": SecurityConfigurationRuleProtocolTcp, + "udp": SecurityConfigurationRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityConfigurationRuleProtocol(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/id_networkmanager.go b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/id_networkmanager.go new file mode 100644 index 00000000000..ee0e5e5a9c8 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/id_networkmanager.go @@ -0,0 +1,130 @@ +package networkmanageractiveconfigurations + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NetworkManagerId{}) +} + +var _ resourceids.ResourceId = &NetworkManagerId{} + +// NetworkManagerId is a struct representing the Resource ID for a Network Manager +type NetworkManagerId struct { + SubscriptionId string + ResourceGroupName string + NetworkManagerName string +} + +// NewNetworkManagerID returns a new NetworkManagerId struct +func NewNetworkManagerID(subscriptionId string, resourceGroupName string, networkManagerName string) NetworkManagerId { + return NetworkManagerId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkManagerName: networkManagerName, + } +} + +// ParseNetworkManagerID parses 'input' into a NetworkManagerId +func ParseNetworkManagerID(input string) (*NetworkManagerId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkManagerId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkManagerId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNetworkManagerIDInsensitively parses 'input' case-insensitively into a NetworkManagerId +// note: this method should only be used for API response data and not user input +func ParseNetworkManagerIDInsensitively(input string) (*NetworkManagerId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkManagerId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkManagerId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NetworkManagerId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkManagerName, ok = input.Parsed["networkManagerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkManagerName", input) + } + + return nil +} + +// ValidateNetworkManagerID checks that 'input' can be parsed as a Network Manager ID +func ValidateNetworkManagerID(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 := ParseNetworkManagerID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Network Manager ID +func (id NetworkManagerId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkManagers/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkManagerName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Network Manager ID +func (id NetworkManagerId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkManagers", "networkManagers", "networkManagers"), + resourceids.UserSpecifiedSegment("networkManagerName", "networkManagerValue"), + } +} + +// String returns a human-readable description of this Network Manager ID +func (id NetworkManagerId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Manager Name: %q", id.NetworkManagerName), + } + return fmt.Sprintf("Network Manager (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/id_networkmanager_test.go b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/id_networkmanager_test.go new file mode 100644 index 00000000000..e1c6ebe2617 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/id_networkmanager_test.go @@ -0,0 +1,282 @@ +package networkmanageractiveconfigurations + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NetworkManagerId{} + +func TestNewNetworkManagerID(t *testing.T) { + id := NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkManagerName != "networkManagerValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkManagerName'", id.NetworkManagerName, "networkManagerValue") + } +} + +func TestFormatNetworkManagerID(t *testing.T) { + actual := NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNetworkManagerID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkManagerId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Expected: &NetworkManagerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkManagerID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + } +} + +func TestParseNetworkManagerIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkManagerId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Expected: &NetworkManagerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe", + Expected: &NetworkManagerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkManagerName: "nEtWoRkMaNaGeRvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkManagerIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + } +} + +func TestSegmentsForNetworkManagerId(t *testing.T) { + segments := NetworkManagerId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NetworkManagerId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/method_listactivesecurityadminrules.go b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/method_listactivesecurityadminrules.go new file mode 100644 index 00000000000..0a882c8e731 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/method_listactivesecurityadminrules.go @@ -0,0 +1,59 @@ +package networkmanageractiveconfigurations + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListActiveSecurityAdminRulesOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ActiveSecurityAdminRulesListResult +} + +// ListActiveSecurityAdminRules ... +func (c NetworkManagerActiveConfigurationsClient) ListActiveSecurityAdminRules(ctx context.Context, id NetworkManagerId, input ActiveConfigurationParameter) (result ListActiveSecurityAdminRulesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/listActiveSecurityAdminRules", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ActiveSecurityAdminRulesListResult + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_activebasesecurityadminrule.go b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_activebasesecurityadminrule.go new file mode 100644 index 00000000000..c19193dfd82 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_activebasesecurityadminrule.go @@ -0,0 +1,61 @@ +package networkmanageractiveconfigurations + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ActiveBaseSecurityAdminRule interface { +} + +// RawActiveBaseSecurityAdminRuleImpl is returned when the Discriminated Value +// doesn't match any of the defined types +// NOTE: this should only be used when a type isn't defined for this type of Object (as a workaround) +// and is used only for Deserialization (e.g. this cannot be used as a Request Payload). +type RawActiveBaseSecurityAdminRuleImpl struct { + Type string + Values map[string]interface{} +} + +func unmarshalActiveBaseSecurityAdminRuleImplementation(input []byte) (ActiveBaseSecurityAdminRule, error) { + if input == nil { + return nil, nil + } + + var temp map[string]interface{} + if err := json.Unmarshal(input, &temp); err != nil { + return nil, fmt.Errorf("unmarshaling ActiveBaseSecurityAdminRule into map[string]interface: %+v", err) + } + + value, ok := temp["kind"].(string) + if !ok { + return nil, nil + } + + if strings.EqualFold(value, "Default") { + var out ActiveDefaultSecurityAdminRule + if err := json.Unmarshal(input, &out); err != nil { + return nil, fmt.Errorf("unmarshaling into ActiveDefaultSecurityAdminRule: %+v", err) + } + return out, nil + } + + if strings.EqualFold(value, "Custom") { + var out ActiveSecurityAdminRule + if err := json.Unmarshal(input, &out); err != nil { + return nil, fmt.Errorf("unmarshaling into ActiveSecurityAdminRule: %+v", err) + } + return out, nil + } + + out := RawActiveBaseSecurityAdminRuleImpl{ + Type: value, + Values: temp, + } + return out, nil + +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_activeconfigurationparameter.go b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_activeconfigurationparameter.go new file mode 100644 index 00000000000..309a4998c1b --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_activeconfigurationparameter.go @@ -0,0 +1,9 @@ +package networkmanageractiveconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ActiveConfigurationParameter struct { + Regions *[]string `json:"regions,omitempty"` + SkipToken *string `json:"skipToken,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_activedefaultsecurityadminrule.go b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_activedefaultsecurityadminrule.go new file mode 100644 index 00000000000..371ee82ef8c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_activedefaultsecurityadminrule.go @@ -0,0 +1,63 @@ +package networkmanageractiveconfigurations + +import ( + "encoding/json" + "fmt" + "time" + + "github.com/hashicorp/go-azure-helpers/lang/dates" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ ActiveBaseSecurityAdminRule = ActiveDefaultSecurityAdminRule{} + +type ActiveDefaultSecurityAdminRule struct { + Properties *DefaultAdminPropertiesFormat `json:"properties,omitempty"` + + // Fields inherited from ActiveBaseSecurityAdminRule + CommitTime *string `json:"commitTime,omitempty"` + ConfigurationDescription *string `json:"configurationDescription,omitempty"` + Id *string `json:"id,omitempty"` + Region *string `json:"region,omitempty"` + RuleCollectionAppliesToGroups *[]NetworkManagerSecurityGroupItem `json:"ruleCollectionAppliesToGroups,omitempty"` + RuleCollectionDescription *string `json:"ruleCollectionDescription,omitempty"` + RuleGroups *[]ConfigurationGroup `json:"ruleGroups,omitempty"` +} + +func (o *ActiveDefaultSecurityAdminRule) GetCommitTimeAsTime() (*time.Time, error) { + if o.CommitTime == nil { + return nil, nil + } + return dates.ParseAsFormat(o.CommitTime, "2006-01-02T15:04:05Z07:00") +} + +func (o *ActiveDefaultSecurityAdminRule) SetCommitTimeAsTime(input time.Time) { + formatted := input.Format("2006-01-02T15:04:05Z07:00") + o.CommitTime = &formatted +} + +var _ json.Marshaler = ActiveDefaultSecurityAdminRule{} + +func (s ActiveDefaultSecurityAdminRule) MarshalJSON() ([]byte, error) { + type wrapper ActiveDefaultSecurityAdminRule + wrapped := wrapper(s) + encoded, err := json.Marshal(wrapped) + if err != nil { + return nil, fmt.Errorf("marshaling ActiveDefaultSecurityAdminRule: %+v", err) + } + + var decoded map[string]interface{} + if err := json.Unmarshal(encoded, &decoded); err != nil { + return nil, fmt.Errorf("unmarshaling ActiveDefaultSecurityAdminRule: %+v", err) + } + decoded["kind"] = "Default" + + encoded, err = json.Marshal(decoded) + if err != nil { + return nil, fmt.Errorf("re-marshaling ActiveDefaultSecurityAdminRule: %+v", err) + } + + return encoded, nil +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_activesecurityadminrule.go b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_activesecurityadminrule.go new file mode 100644 index 00000000000..70266c6ff7c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_activesecurityadminrule.go @@ -0,0 +1,63 @@ +package networkmanageractiveconfigurations + +import ( + "encoding/json" + "fmt" + "time" + + "github.com/hashicorp/go-azure-helpers/lang/dates" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ ActiveBaseSecurityAdminRule = ActiveSecurityAdminRule{} + +type ActiveSecurityAdminRule struct { + Properties *AdminPropertiesFormat `json:"properties,omitempty"` + + // Fields inherited from ActiveBaseSecurityAdminRule + CommitTime *string `json:"commitTime,omitempty"` + ConfigurationDescription *string `json:"configurationDescription,omitempty"` + Id *string `json:"id,omitempty"` + Region *string `json:"region,omitempty"` + RuleCollectionAppliesToGroups *[]NetworkManagerSecurityGroupItem `json:"ruleCollectionAppliesToGroups,omitempty"` + RuleCollectionDescription *string `json:"ruleCollectionDescription,omitempty"` + RuleGroups *[]ConfigurationGroup `json:"ruleGroups,omitempty"` +} + +func (o *ActiveSecurityAdminRule) GetCommitTimeAsTime() (*time.Time, error) { + if o.CommitTime == nil { + return nil, nil + } + return dates.ParseAsFormat(o.CommitTime, "2006-01-02T15:04:05Z07:00") +} + +func (o *ActiveSecurityAdminRule) SetCommitTimeAsTime(input time.Time) { + formatted := input.Format("2006-01-02T15:04:05Z07:00") + o.CommitTime = &formatted +} + +var _ json.Marshaler = ActiveSecurityAdminRule{} + +func (s ActiveSecurityAdminRule) MarshalJSON() ([]byte, error) { + type wrapper ActiveSecurityAdminRule + wrapped := wrapper(s) + encoded, err := json.Marshal(wrapped) + if err != nil { + return nil, fmt.Errorf("marshaling ActiveSecurityAdminRule: %+v", err) + } + + var decoded map[string]interface{} + if err := json.Unmarshal(encoded, &decoded); err != nil { + return nil, fmt.Errorf("unmarshaling ActiveSecurityAdminRule: %+v", err) + } + decoded["kind"] = "Custom" + + encoded, err = json.Marshal(decoded) + if err != nil { + return nil, fmt.Errorf("re-marshaling ActiveSecurityAdminRule: %+v", err) + } + + return encoded, nil +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_activesecurityadminruleslistresult.go b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_activesecurityadminruleslistresult.go new file mode 100644 index 00000000000..c9007f5e0f3 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_activesecurityadminruleslistresult.go @@ -0,0 +1,49 @@ +package networkmanageractiveconfigurations + +import ( + "encoding/json" + "fmt" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ActiveSecurityAdminRulesListResult struct { + SkipToken *string `json:"skipToken,omitempty"` + Value *[]ActiveBaseSecurityAdminRule `json:"value,omitempty"` +} + +var _ json.Unmarshaler = &ActiveSecurityAdminRulesListResult{} + +func (s *ActiveSecurityAdminRulesListResult) UnmarshalJSON(bytes []byte) error { + type alias ActiveSecurityAdminRulesListResult + var decoded alias + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling into ActiveSecurityAdminRulesListResult: %+v", err) + } + + s.SkipToken = decoded.SkipToken + + var temp map[string]json.RawMessage + if err := json.Unmarshal(bytes, &temp); err != nil { + return fmt.Errorf("unmarshaling ActiveSecurityAdminRulesListResult into map[string]json.RawMessage: %+v", err) + } + + if v, ok := temp["value"]; ok { + var listTemp []json.RawMessage + if err := json.Unmarshal(v, &listTemp); err != nil { + return fmt.Errorf("unmarshaling Value into list []json.RawMessage: %+v", err) + } + + output := make([]ActiveBaseSecurityAdminRule, 0) + for i, val := range listTemp { + impl, err := unmarshalActiveBaseSecurityAdminRuleImplementation(val) + if err != nil { + return fmt.Errorf("unmarshaling index %d field 'Value' for 'ActiveSecurityAdminRulesListResult': %+v", i, err) + } + output = append(output, impl) + } + s.Value = &output + } + return nil +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_addressprefixitem.go b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_addressprefixitem.go new file mode 100644 index 00000000000..f82ae16f590 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_addressprefixitem.go @@ -0,0 +1,9 @@ +package networkmanageractiveconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AddressPrefixItem struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixType *AddressPrefixType `json:"addressPrefixType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_adminpropertiesformat.go b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_adminpropertiesformat.go new file mode 100644 index 00000000000..afc108f8ff4 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_adminpropertiesformat.go @@ -0,0 +1,18 @@ +package networkmanageractiveconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AdminPropertiesFormat struct { + Access SecurityConfigurationRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Destinations *[]AddressPrefixItem `json:"destinations,omitempty"` + Direction SecurityConfigurationRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityConfigurationRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` + Sources *[]AddressPrefixItem `json:"sources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_configurationgroup.go b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_configurationgroup.go new file mode 100644 index 00000000000..be051a18f2d --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_configurationgroup.go @@ -0,0 +1,9 @@ +package networkmanageractiveconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConfigurationGroup struct { + Id *string `json:"id,omitempty"` + Properties *NetworkGroupProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_defaultadminpropertiesformat.go b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_defaultadminpropertiesformat.go new file mode 100644 index 00000000000..665a643ae5e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_defaultadminpropertiesformat.go @@ -0,0 +1,19 @@ +package networkmanageractiveconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DefaultAdminPropertiesFormat struct { + Access *SecurityConfigurationRuleAccess `json:"access,omitempty"` + Description *string `json:"description,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Destinations *[]AddressPrefixItem `json:"destinations,omitempty"` + Direction *SecurityConfigurationRuleDirection `json:"direction,omitempty"` + Flag *string `json:"flag,omitempty"` + Priority *int64 `json:"priority,omitempty"` + Protocol *SecurityConfigurationRuleProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` + Sources *[]AddressPrefixItem `json:"sources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_networkgroupproperties.go b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_networkgroupproperties.go new file mode 100644 index 00000000000..ed891dc195e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_networkgroupproperties.go @@ -0,0 +1,10 @@ +package networkmanageractiveconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkGroupProperties struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_networkmanagersecuritygroupitem.go b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_networkmanagersecuritygroupitem.go new file mode 100644 index 00000000000..6457c3d0001 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/model_networkmanagersecuritygroupitem.go @@ -0,0 +1,8 @@ +package networkmanageractiveconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManagerSecurityGroupItem struct { + NetworkGroupId string `json:"networkGroupId"` +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/version.go b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/version.go new file mode 100644 index 00000000000..0e71155cac0 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconfigurations/version.go @@ -0,0 +1,12 @@ +package networkmanageractiveconfigurations + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/networkmanageractiveconfigurations/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/README.md b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/README.md new file mode 100644 index 00000000000..b4875e304db --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/README.md @@ -0,0 +1,41 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations` Documentation + +The `networkmanageractiveconnectivityconfigurations` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations" +``` + + +### Client Initialization + +```go +client := networkmanageractiveconnectivityconfigurations.NewNetworkManagerActiveConnectivityConfigurationsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `NetworkManagerActiveConnectivityConfigurationsClient.ListActiveConnectivityConfigurations` + +```go +ctx := context.TODO() +id := networkmanageractiveconnectivityconfigurations.NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue") + +payload := networkmanageractiveconnectivityconfigurations.ActiveConfigurationParameter{ + // ... +} + + +read, err := client.ListActiveConnectivityConfigurations(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/client.go b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/client.go new file mode 100644 index 00000000000..25282a2bad5 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/client.go @@ -0,0 +1,26 @@ +package networkmanageractiveconnectivityconfigurations + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManagerActiveConnectivityConfigurationsClient struct { + Client *resourcemanager.Client +} + +func NewNetworkManagerActiveConnectivityConfigurationsClientWithBaseURI(sdkApi sdkEnv.Api) (*NetworkManagerActiveConnectivityConfigurationsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "networkmanageractiveconnectivityconfigurations", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating NetworkManagerActiveConnectivityConfigurationsClient: %+v", err) + } + + return &NetworkManagerActiveConnectivityConfigurationsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/constants.go b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/constants.go new file mode 100644 index 00000000000..ce9e85b744a --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/constants.go @@ -0,0 +1,262 @@ +package networkmanageractiveconnectivityconfigurations + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectivityTopology string + +const ( + ConnectivityTopologyHubAndSpoke ConnectivityTopology = "HubAndSpoke" + ConnectivityTopologyMesh ConnectivityTopology = "Mesh" +) + +func PossibleValuesForConnectivityTopology() []string { + return []string{ + string(ConnectivityTopologyHubAndSpoke), + string(ConnectivityTopologyMesh), + } +} + +func (s *ConnectivityTopology) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseConnectivityTopology(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseConnectivityTopology(input string) (*ConnectivityTopology, error) { + vals := map[string]ConnectivityTopology{ + "hubandspoke": ConnectivityTopologyHubAndSpoke, + "mesh": ConnectivityTopologyMesh, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ConnectivityTopology(input) + return &out, nil +} + +type DeleteExistingPeering string + +const ( + DeleteExistingPeeringFalse DeleteExistingPeering = "False" + DeleteExistingPeeringTrue DeleteExistingPeering = "True" +) + +func PossibleValuesForDeleteExistingPeering() []string { + return []string{ + string(DeleteExistingPeeringFalse), + string(DeleteExistingPeeringTrue), + } +} + +func (s *DeleteExistingPeering) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteExistingPeering(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteExistingPeering(input string) (*DeleteExistingPeering, error) { + vals := map[string]DeleteExistingPeering{ + "false": DeleteExistingPeeringFalse, + "true": DeleteExistingPeeringTrue, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteExistingPeering(input) + return &out, nil +} + +type GroupConnectivity string + +const ( + GroupConnectivityDirectlyConnected GroupConnectivity = "DirectlyConnected" + GroupConnectivityNone GroupConnectivity = "None" +) + +func PossibleValuesForGroupConnectivity() []string { + return []string{ + string(GroupConnectivityDirectlyConnected), + string(GroupConnectivityNone), + } +} + +func (s *GroupConnectivity) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGroupConnectivity(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGroupConnectivity(input string) (*GroupConnectivity, error) { + vals := map[string]GroupConnectivity{ + "directlyconnected": GroupConnectivityDirectlyConnected, + "none": GroupConnectivityNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GroupConnectivity(input) + return &out, nil +} + +type IsGlobal string + +const ( + IsGlobalFalse IsGlobal = "False" + IsGlobalTrue IsGlobal = "True" +) + +func PossibleValuesForIsGlobal() []string { + return []string{ + string(IsGlobalFalse), + string(IsGlobalTrue), + } +} + +func (s *IsGlobal) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIsGlobal(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIsGlobal(input string) (*IsGlobal, error) { + vals := map[string]IsGlobal{ + "false": IsGlobalFalse, + "true": IsGlobalTrue, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IsGlobal(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type UseHubGateway string + +const ( + UseHubGatewayFalse UseHubGateway = "False" + UseHubGatewayTrue UseHubGateway = "True" +) + +func PossibleValuesForUseHubGateway() []string { + return []string{ + string(UseHubGatewayFalse), + string(UseHubGatewayTrue), + } +} + +func (s *UseHubGateway) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseUseHubGateway(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseUseHubGateway(input string) (*UseHubGateway, error) { + vals := map[string]UseHubGateway{ + "false": UseHubGatewayFalse, + "true": UseHubGatewayTrue, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := UseHubGateway(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/id_networkmanager.go b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/id_networkmanager.go new file mode 100644 index 00000000000..4b1919fa120 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/id_networkmanager.go @@ -0,0 +1,130 @@ +package networkmanageractiveconnectivityconfigurations + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NetworkManagerId{}) +} + +var _ resourceids.ResourceId = &NetworkManagerId{} + +// NetworkManagerId is a struct representing the Resource ID for a Network Manager +type NetworkManagerId struct { + SubscriptionId string + ResourceGroupName string + NetworkManagerName string +} + +// NewNetworkManagerID returns a new NetworkManagerId struct +func NewNetworkManagerID(subscriptionId string, resourceGroupName string, networkManagerName string) NetworkManagerId { + return NetworkManagerId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkManagerName: networkManagerName, + } +} + +// ParseNetworkManagerID parses 'input' into a NetworkManagerId +func ParseNetworkManagerID(input string) (*NetworkManagerId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkManagerId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkManagerId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNetworkManagerIDInsensitively parses 'input' case-insensitively into a NetworkManagerId +// note: this method should only be used for API response data and not user input +func ParseNetworkManagerIDInsensitively(input string) (*NetworkManagerId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkManagerId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkManagerId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NetworkManagerId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkManagerName, ok = input.Parsed["networkManagerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkManagerName", input) + } + + return nil +} + +// ValidateNetworkManagerID checks that 'input' can be parsed as a Network Manager ID +func ValidateNetworkManagerID(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 := ParseNetworkManagerID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Network Manager ID +func (id NetworkManagerId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkManagers/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkManagerName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Network Manager ID +func (id NetworkManagerId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkManagers", "networkManagers", "networkManagers"), + resourceids.UserSpecifiedSegment("networkManagerName", "networkManagerValue"), + } +} + +// String returns a human-readable description of this Network Manager ID +func (id NetworkManagerId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Manager Name: %q", id.NetworkManagerName), + } + return fmt.Sprintf("Network Manager (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/id_networkmanager_test.go b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/id_networkmanager_test.go new file mode 100644 index 00000000000..ba44a76acbb --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/id_networkmanager_test.go @@ -0,0 +1,282 @@ +package networkmanageractiveconnectivityconfigurations + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NetworkManagerId{} + +func TestNewNetworkManagerID(t *testing.T) { + id := NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkManagerName != "networkManagerValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkManagerName'", id.NetworkManagerName, "networkManagerValue") + } +} + +func TestFormatNetworkManagerID(t *testing.T) { + actual := NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNetworkManagerID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkManagerId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Expected: &NetworkManagerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkManagerID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + } +} + +func TestParseNetworkManagerIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkManagerId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Expected: &NetworkManagerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe", + Expected: &NetworkManagerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkManagerName: "nEtWoRkMaNaGeRvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkManagerIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + } +} + +func TestSegmentsForNetworkManagerId(t *testing.T) { + segments := NetworkManagerId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NetworkManagerId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/method_listactiveconnectivityconfigurations.go b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/method_listactiveconnectivityconfigurations.go new file mode 100644 index 00000000000..a4c1e51550d --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/method_listactiveconnectivityconfigurations.go @@ -0,0 +1,59 @@ +package networkmanageractiveconnectivityconfigurations + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListActiveConnectivityConfigurationsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ActiveConnectivityConfigurationsListResult +} + +// ListActiveConnectivityConfigurations ... +func (c NetworkManagerActiveConnectivityConfigurationsClient) ListActiveConnectivityConfigurations(ctx context.Context, id NetworkManagerId, input ActiveConfigurationParameter) (result ListActiveConnectivityConfigurationsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/listActiveConnectivityConfigurations", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ActiveConnectivityConfigurationsListResult + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_activeconfigurationparameter.go b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_activeconfigurationparameter.go new file mode 100644 index 00000000000..835513d64ee --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_activeconfigurationparameter.go @@ -0,0 +1,9 @@ +package networkmanageractiveconnectivityconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ActiveConfigurationParameter struct { + Regions *[]string `json:"regions,omitempty"` + SkipToken *string `json:"skipToken,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_activeconnectivityconfiguration.go b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_activeconnectivityconfiguration.go new file mode 100644 index 00000000000..b836614744d --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_activeconnectivityconfiguration.go @@ -0,0 +1,30 @@ +package networkmanageractiveconnectivityconfigurations + +import ( + "time" + + "github.com/hashicorp/go-azure-helpers/lang/dates" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ActiveConnectivityConfiguration struct { + CommitTime *string `json:"commitTime,omitempty"` + ConfigurationGroups *[]ConfigurationGroup `json:"configurationGroups,omitempty"` + Id *string `json:"id,omitempty"` + Properties *ConnectivityConfigurationProperties `json:"properties,omitempty"` + Region *string `json:"region,omitempty"` +} + +func (o *ActiveConnectivityConfiguration) GetCommitTimeAsTime() (*time.Time, error) { + if o.CommitTime == nil { + return nil, nil + } + return dates.ParseAsFormat(o.CommitTime, "2006-01-02T15:04:05Z07:00") +} + +func (o *ActiveConnectivityConfiguration) SetCommitTimeAsTime(input time.Time) { + formatted := input.Format("2006-01-02T15:04:05Z07:00") + o.CommitTime = &formatted +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_activeconnectivityconfigurationslistresult.go b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_activeconnectivityconfigurationslistresult.go new file mode 100644 index 00000000000..6fbfafeb4f7 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_activeconnectivityconfigurationslistresult.go @@ -0,0 +1,9 @@ +package networkmanageractiveconnectivityconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ActiveConnectivityConfigurationsListResult struct { + SkipToken *string `json:"skipToken,omitempty"` + Value *[]ActiveConnectivityConfiguration `json:"value,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_configurationgroup.go b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_configurationgroup.go new file mode 100644 index 00000000000..2f7ac6eb77f --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_configurationgroup.go @@ -0,0 +1,9 @@ +package networkmanageractiveconnectivityconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConfigurationGroup struct { + Id *string `json:"id,omitempty"` + Properties *NetworkGroupProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_connectivityconfigurationproperties.go b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_connectivityconfigurationproperties.go new file mode 100644 index 00000000000..07a3c4a945c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_connectivityconfigurationproperties.go @@ -0,0 +1,15 @@ +package networkmanageractiveconnectivityconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectivityConfigurationProperties struct { + AppliesToGroups []ConnectivityGroupItem `json:"appliesToGroups"` + ConnectivityTopology ConnectivityTopology `json:"connectivityTopology"` + DeleteExistingPeering *DeleteExistingPeering `json:"deleteExistingPeering,omitempty"` + Description *string `json:"description,omitempty"` + Hubs *[]Hub `json:"hubs,omitempty"` + IsGlobal *IsGlobal `json:"isGlobal,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_connectivitygroupitem.go b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_connectivitygroupitem.go new file mode 100644 index 00000000000..18571eaa75f --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_connectivitygroupitem.go @@ -0,0 +1,11 @@ +package networkmanageractiveconnectivityconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectivityGroupItem struct { + GroupConnectivity GroupConnectivity `json:"groupConnectivity"` + IsGlobal *IsGlobal `json:"isGlobal,omitempty"` + NetworkGroupId string `json:"networkGroupId"` + UseHubGateway *UseHubGateway `json:"useHubGateway,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_hub.go b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_hub.go new file mode 100644 index 00000000000..6d2eef46795 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_hub.go @@ -0,0 +1,9 @@ +package networkmanageractiveconnectivityconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Hub struct { + ResourceId *string `json:"resourceId,omitempty"` + ResourceType *string `json:"resourceType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_networkgroupproperties.go b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_networkgroupproperties.go new file mode 100644 index 00000000000..46f87e5058e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/model_networkgroupproperties.go @@ -0,0 +1,10 @@ +package networkmanageractiveconnectivityconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkGroupProperties struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/version.go b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/version.go new file mode 100644 index 00000000000..6ea33105aba --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanageractiveconnectivityconfigurations/version.go @@ -0,0 +1,12 @@ +package networkmanageractiveconnectivityconfigurations + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/networkmanageractiveconnectivityconfigurations/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/networkmanagerconnections/README.md b/resource-manager/network/2024-01-01/networkmanagerconnections/README.md new file mode 100644 index 00000000000..669baaea24e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagerconnections/README.md @@ -0,0 +1,161 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkmanagerconnections` Documentation + +The `networkmanagerconnections` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkmanagerconnections" +``` + + +### Client Initialization + +```go +client := networkmanagerconnections.NewNetworkManagerConnectionsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `NetworkManagerConnectionsClient.ManagementGroupNetworkManagerConnectionsCreateOrUpdate` + +```go +ctx := context.TODO() +id := networkmanagerconnections.NewProviders2NetworkManagerConnectionID("managementGroupIdValue", "networkManagerConnectionValue") + +payload := networkmanagerconnections.NetworkManagerConnection{ + // ... +} + + +read, err := client.ManagementGroupNetworkManagerConnectionsCreateOrUpdate(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkManagerConnectionsClient.ManagementGroupNetworkManagerConnectionsDelete` + +```go +ctx := context.TODO() +id := networkmanagerconnections.NewProviders2NetworkManagerConnectionID("managementGroupIdValue", "networkManagerConnectionValue") + +read, err := client.ManagementGroupNetworkManagerConnectionsDelete(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkManagerConnectionsClient.ManagementGroupNetworkManagerConnectionsGet` + +```go +ctx := context.TODO() +id := networkmanagerconnections.NewProviders2NetworkManagerConnectionID("managementGroupIdValue", "networkManagerConnectionValue") + +read, err := client.ManagementGroupNetworkManagerConnectionsGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkManagerConnectionsClient.ManagementGroupNetworkManagerConnectionsList` + +```go +ctx := context.TODO() +id := commonids.NewManagementGroupID("groupIdValue") + +// alternatively `client.ManagementGroupNetworkManagerConnectionsList(ctx, id, networkmanagerconnections.DefaultManagementGroupNetworkManagerConnectionsListOperationOptions())` can be used to do batched pagination +items, err := client.ManagementGroupNetworkManagerConnectionsListComplete(ctx, id, networkmanagerconnections.DefaultManagementGroupNetworkManagerConnectionsListOperationOptions()) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `NetworkManagerConnectionsClient.SubscriptionNetworkManagerConnectionsCreateOrUpdate` + +```go +ctx := context.TODO() +id := networkmanagerconnections.NewNetworkManagerConnectionID("12345678-1234-9876-4563-123456789012", "networkManagerConnectionValue") + +payload := networkmanagerconnections.NetworkManagerConnection{ + // ... +} + + +read, err := client.SubscriptionNetworkManagerConnectionsCreateOrUpdate(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkManagerConnectionsClient.SubscriptionNetworkManagerConnectionsDelete` + +```go +ctx := context.TODO() +id := networkmanagerconnections.NewNetworkManagerConnectionID("12345678-1234-9876-4563-123456789012", "networkManagerConnectionValue") + +read, err := client.SubscriptionNetworkManagerConnectionsDelete(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkManagerConnectionsClient.SubscriptionNetworkManagerConnectionsGet` + +```go +ctx := context.TODO() +id := networkmanagerconnections.NewNetworkManagerConnectionID("12345678-1234-9876-4563-123456789012", "networkManagerConnectionValue") + +read, err := client.SubscriptionNetworkManagerConnectionsGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkManagerConnectionsClient.SubscriptionNetworkManagerConnectionsList` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.SubscriptionNetworkManagerConnectionsList(ctx, id, networkmanagerconnections.DefaultSubscriptionNetworkManagerConnectionsListOperationOptions())` can be used to do batched pagination +items, err := client.SubscriptionNetworkManagerConnectionsListComplete(ctx, id, networkmanagerconnections.DefaultSubscriptionNetworkManagerConnectionsListOperationOptions()) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/networkmanagerconnections/client.go b/resource-manager/network/2024-01-01/networkmanagerconnections/client.go new file mode 100644 index 00000000000..3cfa72a376e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagerconnections/client.go @@ -0,0 +1,26 @@ +package networkmanagerconnections + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManagerConnectionsClient struct { + Client *resourcemanager.Client +} + +func NewNetworkManagerConnectionsClientWithBaseURI(sdkApi sdkEnv.Api) (*NetworkManagerConnectionsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "networkmanagerconnections", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating NetworkManagerConnectionsClient: %+v", err) + } + + return &NetworkManagerConnectionsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/networkmanagerconnections/constants.go b/resource-manager/network/2024-01-01/networkmanagerconnections/constants.go new file mode 100644 index 00000000000..47d6adfd207 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagerconnections/constants.go @@ -0,0 +1,60 @@ +package networkmanagerconnections + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ScopeConnectionState string + +const ( + ScopeConnectionStateConflict ScopeConnectionState = "Conflict" + ScopeConnectionStateConnected ScopeConnectionState = "Connected" + ScopeConnectionStatePending ScopeConnectionState = "Pending" + ScopeConnectionStateRejected ScopeConnectionState = "Rejected" + ScopeConnectionStateRevoked ScopeConnectionState = "Revoked" +) + +func PossibleValuesForScopeConnectionState() []string { + return []string{ + string(ScopeConnectionStateConflict), + string(ScopeConnectionStateConnected), + string(ScopeConnectionStatePending), + string(ScopeConnectionStateRejected), + string(ScopeConnectionStateRevoked), + } +} + +func (s *ScopeConnectionState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseScopeConnectionState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseScopeConnectionState(input string) (*ScopeConnectionState, error) { + vals := map[string]ScopeConnectionState{ + "conflict": ScopeConnectionStateConflict, + "connected": ScopeConnectionStateConnected, + "pending": ScopeConnectionStatePending, + "rejected": ScopeConnectionStateRejected, + "revoked": ScopeConnectionStateRevoked, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ScopeConnectionState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/networkmanagerconnections/id_networkmanagerconnection.go b/resource-manager/network/2024-01-01/networkmanagerconnections/id_networkmanagerconnection.go new file mode 100644 index 00000000000..066e316e2cb --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagerconnections/id_networkmanagerconnection.go @@ -0,0 +1,121 @@ +package networkmanagerconnections + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NetworkManagerConnectionId{}) +} + +var _ resourceids.ResourceId = &NetworkManagerConnectionId{} + +// NetworkManagerConnectionId is a struct representing the Resource ID for a Network Manager Connection +type NetworkManagerConnectionId struct { + SubscriptionId string + NetworkManagerConnectionName string +} + +// NewNetworkManagerConnectionID returns a new NetworkManagerConnectionId struct +func NewNetworkManagerConnectionID(subscriptionId string, networkManagerConnectionName string) NetworkManagerConnectionId { + return NetworkManagerConnectionId{ + SubscriptionId: subscriptionId, + NetworkManagerConnectionName: networkManagerConnectionName, + } +} + +// ParseNetworkManagerConnectionID parses 'input' into a NetworkManagerConnectionId +func ParseNetworkManagerConnectionID(input string) (*NetworkManagerConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkManagerConnectionId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkManagerConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNetworkManagerConnectionIDInsensitively parses 'input' case-insensitively into a NetworkManagerConnectionId +// note: this method should only be used for API response data and not user input +func ParseNetworkManagerConnectionIDInsensitively(input string) (*NetworkManagerConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkManagerConnectionId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkManagerConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NetworkManagerConnectionId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.NetworkManagerConnectionName, ok = input.Parsed["networkManagerConnectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkManagerConnectionName", input) + } + + return nil +} + +// ValidateNetworkManagerConnectionID checks that 'input' can be parsed as a Network Manager Connection ID +func ValidateNetworkManagerConnectionID(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 := ParseNetworkManagerConnectionID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Network Manager Connection ID +func (id NetworkManagerConnectionId) ID() string { + fmtString := "/subscriptions/%s/providers/Microsoft.Network/networkManagerConnections/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.NetworkManagerConnectionName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Network Manager Connection ID +func (id NetworkManagerConnectionId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkManagerConnections", "networkManagerConnections", "networkManagerConnections"), + resourceids.UserSpecifiedSegment("networkManagerConnectionName", "networkManagerConnectionValue"), + } +} + +// String returns a human-readable description of this Network Manager Connection ID +func (id NetworkManagerConnectionId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Network Manager Connection Name: %q", id.NetworkManagerConnectionName), + } + return fmt.Sprintf("Network Manager Connection (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/networkmanagerconnections/id_networkmanagerconnection_test.go b/resource-manager/network/2024-01-01/networkmanagerconnections/id_networkmanagerconnection_test.go new file mode 100644 index 00000000000..acb385214fd --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagerconnections/id_networkmanagerconnection_test.go @@ -0,0 +1,237 @@ +package networkmanagerconnections + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NetworkManagerConnectionId{} + +func TestNewNetworkManagerConnectionID(t *testing.T) { + id := NewNetworkManagerConnectionID("12345678-1234-9876-4563-123456789012", "networkManagerConnectionValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.NetworkManagerConnectionName != "networkManagerConnectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkManagerConnectionName'", id.NetworkManagerConnectionName, "networkManagerConnectionValue") + } +} + +func TestFormatNetworkManagerConnectionID(t *testing.T) { + actual := NewNetworkManagerConnectionID("12345678-1234-9876-4563-123456789012", "networkManagerConnectionValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/networkManagerConnections/networkManagerConnectionValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNetworkManagerConnectionID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkManagerConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/networkManagerConnections", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/networkManagerConnections/networkManagerConnectionValue", + Expected: &NetworkManagerConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + NetworkManagerConnectionName: "networkManagerConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/networkManagerConnections/networkManagerConnectionValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkManagerConnectionID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.NetworkManagerConnectionName != v.Expected.NetworkManagerConnectionName { + t.Fatalf("Expected %q but got %q for NetworkManagerConnectionName", v.Expected.NetworkManagerConnectionName, actual.NetworkManagerConnectionName) + } + + } +} + +func TestParseNetworkManagerConnectionIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkManagerConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/networkManagerConnections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRcOnNeCtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/networkManagerConnections/networkManagerConnectionValue", + Expected: &NetworkManagerConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + NetworkManagerConnectionName: "networkManagerConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/networkManagerConnections/networkManagerConnectionValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRcOnNeCtIoNs/nEtWoRkMaNaGeRcOnNeCtIoNvAlUe", + Expected: &NetworkManagerConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + NetworkManagerConnectionName: "nEtWoRkMaNaGeRcOnNeCtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRcOnNeCtIoNs/nEtWoRkMaNaGeRcOnNeCtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkManagerConnectionIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.NetworkManagerConnectionName != v.Expected.NetworkManagerConnectionName { + t.Fatalf("Expected %q but got %q for NetworkManagerConnectionName", v.Expected.NetworkManagerConnectionName, actual.NetworkManagerConnectionName) + } + + } +} + +func TestSegmentsForNetworkManagerConnectionId(t *testing.T) { + segments := NetworkManagerConnectionId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NetworkManagerConnectionId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/networkmanagerconnections/id_providers2networkmanagerconnection.go b/resource-manager/network/2024-01-01/networkmanagerconnections/id_providers2networkmanagerconnection.go new file mode 100644 index 00000000000..81d73abef15 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagerconnections/id_providers2networkmanagerconnection.go @@ -0,0 +1,123 @@ +package networkmanagerconnections + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&Providers2NetworkManagerConnectionId{}) +} + +var _ resourceids.ResourceId = &Providers2NetworkManagerConnectionId{} + +// Providers2NetworkManagerConnectionId is a struct representing the Resource ID for a Providers 2 Network Manager Connection +type Providers2NetworkManagerConnectionId struct { + ManagementGroupId string + NetworkManagerConnectionName string +} + +// NewProviders2NetworkManagerConnectionID returns a new Providers2NetworkManagerConnectionId struct +func NewProviders2NetworkManagerConnectionID(managementGroupId string, networkManagerConnectionName string) Providers2NetworkManagerConnectionId { + return Providers2NetworkManagerConnectionId{ + ManagementGroupId: managementGroupId, + NetworkManagerConnectionName: networkManagerConnectionName, + } +} + +// ParseProviders2NetworkManagerConnectionID parses 'input' into a Providers2NetworkManagerConnectionId +func ParseProviders2NetworkManagerConnectionID(input string) (*Providers2NetworkManagerConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&Providers2NetworkManagerConnectionId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := Providers2NetworkManagerConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseProviders2NetworkManagerConnectionIDInsensitively parses 'input' case-insensitively into a Providers2NetworkManagerConnectionId +// note: this method should only be used for API response data and not user input +func ParseProviders2NetworkManagerConnectionIDInsensitively(input string) (*Providers2NetworkManagerConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&Providers2NetworkManagerConnectionId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := Providers2NetworkManagerConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *Providers2NetworkManagerConnectionId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.ManagementGroupId, ok = input.Parsed["managementGroupId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "managementGroupId", input) + } + + if id.NetworkManagerConnectionName, ok = input.Parsed["networkManagerConnectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkManagerConnectionName", input) + } + + return nil +} + +// ValidateProviders2NetworkManagerConnectionID checks that 'input' can be parsed as a Providers 2 Network Manager Connection ID +func ValidateProviders2NetworkManagerConnectionID(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 := ParseProviders2NetworkManagerConnectionID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Providers 2 Network Manager Connection ID +func (id Providers2NetworkManagerConnectionId) ID() string { + fmtString := "/providers/Microsoft.Management/managementGroups/%s/providers/Microsoft.Network/networkManagerConnections/%s" + return fmt.Sprintf(fmtString, id.ManagementGroupId, id.NetworkManagerConnectionName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Providers 2 Network Manager Connection ID +func (id Providers2NetworkManagerConnectionId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftManagement", "Microsoft.Management", "Microsoft.Management"), + resourceids.StaticSegment("staticManagementGroups", "managementGroups", "managementGroups"), + resourceids.UserSpecifiedSegment("managementGroupId", "managementGroupIdValue"), + resourceids.StaticSegment("staticProviders2", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkManagerConnections", "networkManagerConnections", "networkManagerConnections"), + resourceids.UserSpecifiedSegment("networkManagerConnectionName", "networkManagerConnectionValue"), + } +} + +// String returns a human-readable description of this Providers 2 Network Manager Connection ID +func (id Providers2NetworkManagerConnectionId) String() string { + components := []string{ + fmt.Sprintf("Management Group: %q", id.ManagementGroupId), + fmt.Sprintf("Network Manager Connection Name: %q", id.NetworkManagerConnectionName), + } + return fmt.Sprintf("Providers 2 Network Manager Connection (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/networkmanagerconnections/id_providers2networkmanagerconnection_test.go b/resource-manager/network/2024-01-01/networkmanagerconnections/id_providers2networkmanagerconnection_test.go new file mode 100644 index 00000000000..0ee86660877 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagerconnections/id_providers2networkmanagerconnection_test.go @@ -0,0 +1,267 @@ +package networkmanagerconnections + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &Providers2NetworkManagerConnectionId{} + +func TestNewProviders2NetworkManagerConnectionID(t *testing.T) { + id := NewProviders2NetworkManagerConnectionID("managementGroupIdValue", "networkManagerConnectionValue") + + if id.ManagementGroupId != "managementGroupIdValue" { + t.Fatalf("Expected %q but got %q for Segment 'ManagementGroupId'", id.ManagementGroupId, "managementGroupIdValue") + } + + if id.NetworkManagerConnectionName != "networkManagerConnectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkManagerConnectionName'", id.NetworkManagerConnectionName, "networkManagerConnectionValue") + } +} + +func TestFormatProviders2NetworkManagerConnectionID(t *testing.T) { + actual := NewProviders2NetworkManagerConnectionID("managementGroupIdValue", "networkManagerConnectionValue").ID() + expected := "/providers/Microsoft.Management/managementGroups/managementGroupIdValue/providers/Microsoft.Network/networkManagerConnections/networkManagerConnectionValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseProviders2NetworkManagerConnectionID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *Providers2NetworkManagerConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/providers/Microsoft.Management", + Error: true, + }, + { + // Incomplete URI + Input: "/providers/Microsoft.Management/managementGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/providers/Microsoft.Management/managementGroups/managementGroupIdValue", + Error: true, + }, + { + // Incomplete URI + Input: "/providers/Microsoft.Management/managementGroups/managementGroupIdValue/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/providers/Microsoft.Management/managementGroups/managementGroupIdValue/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/providers/Microsoft.Management/managementGroups/managementGroupIdValue/providers/Microsoft.Network/networkManagerConnections", + Error: true, + }, + { + // Valid URI + Input: "/providers/Microsoft.Management/managementGroups/managementGroupIdValue/providers/Microsoft.Network/networkManagerConnections/networkManagerConnectionValue", + Expected: &Providers2NetworkManagerConnectionId{ + ManagementGroupId: "managementGroupIdValue", + NetworkManagerConnectionName: "networkManagerConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/providers/Microsoft.Management/managementGroups/managementGroupIdValue/providers/Microsoft.Network/networkManagerConnections/networkManagerConnectionValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseProviders2NetworkManagerConnectionID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", err) + } + if v.Error { + t.Fatal("Expect an error but didn't get one") + } + + if actual.ManagementGroupId != v.Expected.ManagementGroupId { + t.Fatalf("Expected %q but got %q for ManagementGroupId", v.Expected.ManagementGroupId, actual.ManagementGroupId) + } + + if actual.NetworkManagerConnectionName != v.Expected.NetworkManagerConnectionName { + t.Fatalf("Expected %q but got %q for NetworkManagerConnectionName", v.Expected.NetworkManagerConnectionName, actual.NetworkManagerConnectionName) + } + + } +} + +func TestParseProviders2NetworkManagerConnectionIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *Providers2NetworkManagerConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/providers/Microsoft.Management", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/pRoViDeRs/mIcRoSoFt.mAnAgEmEnT", + Error: true, + }, + { + // Incomplete URI + Input: "/providers/Microsoft.Management/managementGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/pRoViDeRs/mIcRoSoFt.mAnAgEmEnT/mAnAgEmEnTgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/providers/Microsoft.Management/managementGroups/managementGroupIdValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/pRoViDeRs/mIcRoSoFt.mAnAgEmEnT/mAnAgEmEnTgRoUpS/mAnAgEmEnTgRoUpIdVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/providers/Microsoft.Management/managementGroups/managementGroupIdValue/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/pRoViDeRs/mIcRoSoFt.mAnAgEmEnT/mAnAgEmEnTgRoUpS/mAnAgEmEnTgRoUpIdVaLuE/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/providers/Microsoft.Management/managementGroups/managementGroupIdValue/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/pRoViDeRs/mIcRoSoFt.mAnAgEmEnT/mAnAgEmEnTgRoUpS/mAnAgEmEnTgRoUpIdVaLuE/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/providers/Microsoft.Management/managementGroups/managementGroupIdValue/providers/Microsoft.Network/networkManagerConnections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/pRoViDeRs/mIcRoSoFt.mAnAgEmEnT/mAnAgEmEnTgRoUpS/mAnAgEmEnTgRoUpIdVaLuE/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRcOnNeCtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/providers/Microsoft.Management/managementGroups/managementGroupIdValue/providers/Microsoft.Network/networkManagerConnections/networkManagerConnectionValue", + Expected: &Providers2NetworkManagerConnectionId{ + ManagementGroupId: "managementGroupIdValue", + NetworkManagerConnectionName: "networkManagerConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/providers/Microsoft.Management/managementGroups/managementGroupIdValue/providers/Microsoft.Network/networkManagerConnections/networkManagerConnectionValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/pRoViDeRs/mIcRoSoFt.mAnAgEmEnT/mAnAgEmEnTgRoUpS/mAnAgEmEnTgRoUpIdVaLuE/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRcOnNeCtIoNs/nEtWoRkMaNaGeRcOnNeCtIoNvAlUe", + Expected: &Providers2NetworkManagerConnectionId{ + ManagementGroupId: "mAnAgEmEnTgRoUpIdVaLuE", + NetworkManagerConnectionName: "nEtWoRkMaNaGeRcOnNeCtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/pRoViDeRs/mIcRoSoFt.mAnAgEmEnT/mAnAgEmEnTgRoUpS/mAnAgEmEnTgRoUpIdVaLuE/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRcOnNeCtIoNs/nEtWoRkMaNaGeRcOnNeCtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseProviders2NetworkManagerConnectionIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", err) + } + if v.Error { + t.Fatal("Expect an error but didn't get one") + } + + if actual.ManagementGroupId != v.Expected.ManagementGroupId { + t.Fatalf("Expected %q but got %q for ManagementGroupId", v.Expected.ManagementGroupId, actual.ManagementGroupId) + } + + if actual.NetworkManagerConnectionName != v.Expected.NetworkManagerConnectionName { + t.Fatalf("Expected %q but got %q for NetworkManagerConnectionName", v.Expected.NetworkManagerConnectionName, actual.NetworkManagerConnectionName) + } + + } +} + +func TestSegmentsForProviders2NetworkManagerConnectionId(t *testing.T) { + segments := Providers2NetworkManagerConnectionId{}.Segments() + if len(segments) == 0 { + t.Fatalf("Providers2NetworkManagerConnectionId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/networkmanagerconnections/method_managementgroupnetworkmanagerconnectionscreateorupdate.go b/resource-manager/network/2024-01-01/networkmanagerconnections/method_managementgroupnetworkmanagerconnectionscreateorupdate.go new file mode 100644 index 00000000000..cddf4364027 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagerconnections/method_managementgroupnetworkmanagerconnectionscreateorupdate.go @@ -0,0 +1,59 @@ +package networkmanagerconnections + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ManagementGroupNetworkManagerConnectionsCreateOrUpdateOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkManagerConnection +} + +// ManagementGroupNetworkManagerConnectionsCreateOrUpdate ... +func (c NetworkManagerConnectionsClient) ManagementGroupNetworkManagerConnectionsCreateOrUpdate(ctx context.Context, id Providers2NetworkManagerConnectionId, input NetworkManagerConnection) (result ManagementGroupNetworkManagerConnectionsCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkManagerConnection + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkmanagerconnections/method_managementgroupnetworkmanagerconnectionsdelete.go b/resource-manager/network/2024-01-01/networkmanagerconnections/method_managementgroupnetworkmanagerconnectionsdelete.go new file mode 100644 index 00000000000..83c0e93f95b --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagerconnections/method_managementgroupnetworkmanagerconnectionsdelete.go @@ -0,0 +1,47 @@ +package networkmanagerconnections + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ManagementGroupNetworkManagerConnectionsDeleteOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData +} + +// ManagementGroupNetworkManagerConnectionsDelete ... +func (c NetworkManagerConnectionsClient) ManagementGroupNetworkManagerConnectionsDelete(ctx context.Context, id Providers2NetworkManagerConnectionId) (result ManagementGroupNetworkManagerConnectionsDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkmanagerconnections/method_managementgroupnetworkmanagerconnectionsget.go b/resource-manager/network/2024-01-01/networkmanagerconnections/method_managementgroupnetworkmanagerconnectionsget.go new file mode 100644 index 00000000000..9e0447e4aea --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagerconnections/method_managementgroupnetworkmanagerconnectionsget.go @@ -0,0 +1,54 @@ +package networkmanagerconnections + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ManagementGroupNetworkManagerConnectionsGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkManagerConnection +} + +// ManagementGroupNetworkManagerConnectionsGet ... +func (c NetworkManagerConnectionsClient) ManagementGroupNetworkManagerConnectionsGet(ctx context.Context, id Providers2NetworkManagerConnectionId) (result ManagementGroupNetworkManagerConnectionsGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkManagerConnection + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkmanagerconnections/method_managementgroupnetworkmanagerconnectionslist.go b/resource-manager/network/2024-01-01/networkmanagerconnections/method_managementgroupnetworkmanagerconnectionslist.go new file mode 100644 index 00000000000..ddec2f40123 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagerconnections/method_managementgroupnetworkmanagerconnectionslist.go @@ -0,0 +1,121 @@ +package networkmanagerconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ManagementGroupNetworkManagerConnectionsListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NetworkManagerConnection +} + +type ManagementGroupNetworkManagerConnectionsListCompleteResult struct { + LatestHttpResponse *http.Response + Items []NetworkManagerConnection +} + +type ManagementGroupNetworkManagerConnectionsListOperationOptions struct { + Top *int64 +} + +func DefaultManagementGroupNetworkManagerConnectionsListOperationOptions() ManagementGroupNetworkManagerConnectionsListOperationOptions { + return ManagementGroupNetworkManagerConnectionsListOperationOptions{} +} + +func (o ManagementGroupNetworkManagerConnectionsListOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o ManagementGroupNetworkManagerConnectionsListOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o ManagementGroupNetworkManagerConnectionsListOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Top != nil { + out.Append("$top", fmt.Sprintf("%v", *o.Top)) + } + return &out +} + +// ManagementGroupNetworkManagerConnectionsList ... +func (c NetworkManagerConnectionsClient) ManagementGroupNetworkManagerConnectionsList(ctx context.Context, id commonids.ManagementGroupId, options ManagementGroupNetworkManagerConnectionsListOperationOptions) (result ManagementGroupNetworkManagerConnectionsListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/networkManagerConnections", id.ID()), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NetworkManagerConnection `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ManagementGroupNetworkManagerConnectionsListComplete retrieves all the results into a single object +func (c NetworkManagerConnectionsClient) ManagementGroupNetworkManagerConnectionsListComplete(ctx context.Context, id commonids.ManagementGroupId, options ManagementGroupNetworkManagerConnectionsListOperationOptions) (ManagementGroupNetworkManagerConnectionsListCompleteResult, error) { + return c.ManagementGroupNetworkManagerConnectionsListCompleteMatchingPredicate(ctx, id, options, NetworkManagerConnectionOperationPredicate{}) +} + +// ManagementGroupNetworkManagerConnectionsListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c NetworkManagerConnectionsClient) ManagementGroupNetworkManagerConnectionsListCompleteMatchingPredicate(ctx context.Context, id commonids.ManagementGroupId, options ManagementGroupNetworkManagerConnectionsListOperationOptions, predicate NetworkManagerConnectionOperationPredicate) (result ManagementGroupNetworkManagerConnectionsListCompleteResult, err error) { + items := make([]NetworkManagerConnection, 0) + + resp, err := c.ManagementGroupNetworkManagerConnectionsList(ctx, id, options) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ManagementGroupNetworkManagerConnectionsListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/networkmanagerconnections/method_subscriptionnetworkmanagerconnectionscreateorupdate.go b/resource-manager/network/2024-01-01/networkmanagerconnections/method_subscriptionnetworkmanagerconnectionscreateorupdate.go new file mode 100644 index 00000000000..4447d41cf06 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagerconnections/method_subscriptionnetworkmanagerconnectionscreateorupdate.go @@ -0,0 +1,59 @@ +package networkmanagerconnections + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubscriptionNetworkManagerConnectionsCreateOrUpdateOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkManagerConnection +} + +// SubscriptionNetworkManagerConnectionsCreateOrUpdate ... +func (c NetworkManagerConnectionsClient) SubscriptionNetworkManagerConnectionsCreateOrUpdate(ctx context.Context, id NetworkManagerConnectionId, input NetworkManagerConnection) (result SubscriptionNetworkManagerConnectionsCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkManagerConnection + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkmanagerconnections/method_subscriptionnetworkmanagerconnectionsdelete.go b/resource-manager/network/2024-01-01/networkmanagerconnections/method_subscriptionnetworkmanagerconnectionsdelete.go new file mode 100644 index 00000000000..43ebf8bb5e4 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagerconnections/method_subscriptionnetworkmanagerconnectionsdelete.go @@ -0,0 +1,47 @@ +package networkmanagerconnections + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubscriptionNetworkManagerConnectionsDeleteOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData +} + +// SubscriptionNetworkManagerConnectionsDelete ... +func (c NetworkManagerConnectionsClient) SubscriptionNetworkManagerConnectionsDelete(ctx context.Context, id NetworkManagerConnectionId) (result SubscriptionNetworkManagerConnectionsDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkmanagerconnections/method_subscriptionnetworkmanagerconnectionsget.go b/resource-manager/network/2024-01-01/networkmanagerconnections/method_subscriptionnetworkmanagerconnectionsget.go new file mode 100644 index 00000000000..5f0b27a080c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagerconnections/method_subscriptionnetworkmanagerconnectionsget.go @@ -0,0 +1,54 @@ +package networkmanagerconnections + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubscriptionNetworkManagerConnectionsGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkManagerConnection +} + +// SubscriptionNetworkManagerConnectionsGet ... +func (c NetworkManagerConnectionsClient) SubscriptionNetworkManagerConnectionsGet(ctx context.Context, id NetworkManagerConnectionId) (result SubscriptionNetworkManagerConnectionsGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkManagerConnection + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkmanagerconnections/method_subscriptionnetworkmanagerconnectionslist.go b/resource-manager/network/2024-01-01/networkmanagerconnections/method_subscriptionnetworkmanagerconnectionslist.go new file mode 100644 index 00000000000..341b43a227d --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagerconnections/method_subscriptionnetworkmanagerconnectionslist.go @@ -0,0 +1,121 @@ +package networkmanagerconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubscriptionNetworkManagerConnectionsListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NetworkManagerConnection +} + +type SubscriptionNetworkManagerConnectionsListCompleteResult struct { + LatestHttpResponse *http.Response + Items []NetworkManagerConnection +} + +type SubscriptionNetworkManagerConnectionsListOperationOptions struct { + Top *int64 +} + +func DefaultSubscriptionNetworkManagerConnectionsListOperationOptions() SubscriptionNetworkManagerConnectionsListOperationOptions { + return SubscriptionNetworkManagerConnectionsListOperationOptions{} +} + +func (o SubscriptionNetworkManagerConnectionsListOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o SubscriptionNetworkManagerConnectionsListOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o SubscriptionNetworkManagerConnectionsListOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Top != nil { + out.Append("$top", fmt.Sprintf("%v", *o.Top)) + } + return &out +} + +// SubscriptionNetworkManagerConnectionsList ... +func (c NetworkManagerConnectionsClient) SubscriptionNetworkManagerConnectionsList(ctx context.Context, id commonids.SubscriptionId, options SubscriptionNetworkManagerConnectionsListOperationOptions) (result SubscriptionNetworkManagerConnectionsListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/networkManagerConnections", id.ID()), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NetworkManagerConnection `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// SubscriptionNetworkManagerConnectionsListComplete retrieves all the results into a single object +func (c NetworkManagerConnectionsClient) SubscriptionNetworkManagerConnectionsListComplete(ctx context.Context, id commonids.SubscriptionId, options SubscriptionNetworkManagerConnectionsListOperationOptions) (SubscriptionNetworkManagerConnectionsListCompleteResult, error) { + return c.SubscriptionNetworkManagerConnectionsListCompleteMatchingPredicate(ctx, id, options, NetworkManagerConnectionOperationPredicate{}) +} + +// SubscriptionNetworkManagerConnectionsListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c NetworkManagerConnectionsClient) SubscriptionNetworkManagerConnectionsListCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, options SubscriptionNetworkManagerConnectionsListOperationOptions, predicate NetworkManagerConnectionOperationPredicate) (result SubscriptionNetworkManagerConnectionsListCompleteResult, err error) { + items := make([]NetworkManagerConnection, 0) + + resp, err := c.SubscriptionNetworkManagerConnectionsList(ctx, id, options) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = SubscriptionNetworkManagerConnectionsListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/networkmanagerconnections/model_networkmanagerconnection.go b/resource-manager/network/2024-01-01/networkmanagerconnections/model_networkmanagerconnection.go new file mode 100644 index 00000000000..a7548b73699 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagerconnections/model_networkmanagerconnection.go @@ -0,0 +1,17 @@ +package networkmanagerconnections + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/systemdata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManagerConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkManagerConnectionProperties `json:"properties,omitempty"` + SystemData *systemdata.SystemData `json:"systemData,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagerconnections/model_networkmanagerconnectionproperties.go b/resource-manager/network/2024-01-01/networkmanagerconnections/model_networkmanagerconnectionproperties.go new file mode 100644 index 00000000000..faec43c2f30 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagerconnections/model_networkmanagerconnectionproperties.go @@ -0,0 +1,10 @@ +package networkmanagerconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManagerConnectionProperties struct { + ConnectionState *ScopeConnectionState `json:"connectionState,omitempty"` + Description *string `json:"description,omitempty"` + NetworkManagerId *string `json:"networkManagerId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagerconnections/predicates.go b/resource-manager/network/2024-01-01/networkmanagerconnections/predicates.go new file mode 100644 index 00000000000..145b7b7261a --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagerconnections/predicates.go @@ -0,0 +1,32 @@ +package networkmanagerconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManagerConnectionOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p NetworkManagerConnectionOperationPredicate) Matches(input NetworkManagerConnection) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/networkmanagerconnections/version.go b/resource-manager/network/2024-01-01/networkmanagerconnections/version.go new file mode 100644 index 00000000000..6cd0b6f1957 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagerconnections/version.go @@ -0,0 +1,12 @@ +package networkmanagerconnections + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/networkmanagerconnections/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/README.md b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/README.md new file mode 100644 index 00000000000..fa5a423da87 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/README.md @@ -0,0 +1,42 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration` Documentation + +The `networkmanagereffectiveconnectivityconfiguration` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration" +``` + + +### Client Initialization + +```go +client := networkmanagereffectiveconnectivityconfiguration.NewNetworkManagerEffectiveConnectivityConfigurationClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `NetworkManagerEffectiveConnectivityConfigurationClient.ListNetworkManagerEffectiveConnectivityConfigurations` + +```go +ctx := context.TODO() +id := commonids.NewVirtualNetworkID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkValue") + +payload := networkmanagereffectiveconnectivityconfiguration.QueryRequestOptions{ + // ... +} + + +read, err := client.ListNetworkManagerEffectiveConnectivityConfigurations(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/client.go b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/client.go new file mode 100644 index 00000000000..2f234ee82ef --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/client.go @@ -0,0 +1,26 @@ +package networkmanagereffectiveconnectivityconfiguration + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManagerEffectiveConnectivityConfigurationClient struct { + Client *resourcemanager.Client +} + +func NewNetworkManagerEffectiveConnectivityConfigurationClientWithBaseURI(sdkApi sdkEnv.Api) (*NetworkManagerEffectiveConnectivityConfigurationClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "networkmanagereffectiveconnectivityconfiguration", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating NetworkManagerEffectiveConnectivityConfigurationClient: %+v", err) + } + + return &NetworkManagerEffectiveConnectivityConfigurationClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/constants.go b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/constants.go new file mode 100644 index 00000000000..06b5b5629ff --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/constants.go @@ -0,0 +1,262 @@ +package networkmanagereffectiveconnectivityconfiguration + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectivityTopology string + +const ( + ConnectivityTopologyHubAndSpoke ConnectivityTopology = "HubAndSpoke" + ConnectivityTopologyMesh ConnectivityTopology = "Mesh" +) + +func PossibleValuesForConnectivityTopology() []string { + return []string{ + string(ConnectivityTopologyHubAndSpoke), + string(ConnectivityTopologyMesh), + } +} + +func (s *ConnectivityTopology) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseConnectivityTopology(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseConnectivityTopology(input string) (*ConnectivityTopology, error) { + vals := map[string]ConnectivityTopology{ + "hubandspoke": ConnectivityTopologyHubAndSpoke, + "mesh": ConnectivityTopologyMesh, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ConnectivityTopology(input) + return &out, nil +} + +type DeleteExistingPeering string + +const ( + DeleteExistingPeeringFalse DeleteExistingPeering = "False" + DeleteExistingPeeringTrue DeleteExistingPeering = "True" +) + +func PossibleValuesForDeleteExistingPeering() []string { + return []string{ + string(DeleteExistingPeeringFalse), + string(DeleteExistingPeeringTrue), + } +} + +func (s *DeleteExistingPeering) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteExistingPeering(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteExistingPeering(input string) (*DeleteExistingPeering, error) { + vals := map[string]DeleteExistingPeering{ + "false": DeleteExistingPeeringFalse, + "true": DeleteExistingPeeringTrue, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteExistingPeering(input) + return &out, nil +} + +type GroupConnectivity string + +const ( + GroupConnectivityDirectlyConnected GroupConnectivity = "DirectlyConnected" + GroupConnectivityNone GroupConnectivity = "None" +) + +func PossibleValuesForGroupConnectivity() []string { + return []string{ + string(GroupConnectivityDirectlyConnected), + string(GroupConnectivityNone), + } +} + +func (s *GroupConnectivity) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGroupConnectivity(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGroupConnectivity(input string) (*GroupConnectivity, error) { + vals := map[string]GroupConnectivity{ + "directlyconnected": GroupConnectivityDirectlyConnected, + "none": GroupConnectivityNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GroupConnectivity(input) + return &out, nil +} + +type IsGlobal string + +const ( + IsGlobalFalse IsGlobal = "False" + IsGlobalTrue IsGlobal = "True" +) + +func PossibleValuesForIsGlobal() []string { + return []string{ + string(IsGlobalFalse), + string(IsGlobalTrue), + } +} + +func (s *IsGlobal) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIsGlobal(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIsGlobal(input string) (*IsGlobal, error) { + vals := map[string]IsGlobal{ + "false": IsGlobalFalse, + "true": IsGlobalTrue, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IsGlobal(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type UseHubGateway string + +const ( + UseHubGatewayFalse UseHubGateway = "False" + UseHubGatewayTrue UseHubGateway = "True" +) + +func PossibleValuesForUseHubGateway() []string { + return []string{ + string(UseHubGatewayFalse), + string(UseHubGatewayTrue), + } +} + +func (s *UseHubGateway) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseUseHubGateway(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseUseHubGateway(input string) (*UseHubGateway, error) { + vals := map[string]UseHubGateway{ + "false": UseHubGatewayFalse, + "true": UseHubGatewayTrue, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := UseHubGateway(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/method_listnetworkmanagereffectiveconnectivityconfigurations.go b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/method_listnetworkmanagereffectiveconnectivityconfigurations.go new file mode 100644 index 00000000000..d752edf32eb --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/method_listnetworkmanagereffectiveconnectivityconfigurations.go @@ -0,0 +1,60 @@ +package networkmanagereffectiveconnectivityconfiguration + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListNetworkManagerEffectiveConnectivityConfigurationsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkManagerEffectiveConnectivityConfigurationListResult +} + +// ListNetworkManagerEffectiveConnectivityConfigurations ... +func (c NetworkManagerEffectiveConnectivityConfigurationClient) ListNetworkManagerEffectiveConnectivityConfigurations(ctx context.Context, id commonids.VirtualNetworkId, input QueryRequestOptions) (result ListNetworkManagerEffectiveConnectivityConfigurationsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/listNetworkManagerEffectiveConnectivityConfigurations", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkManagerEffectiveConnectivityConfigurationListResult + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_configurationgroup.go b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_configurationgroup.go new file mode 100644 index 00000000000..219b2fe208e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_configurationgroup.go @@ -0,0 +1,9 @@ +package networkmanagereffectiveconnectivityconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConfigurationGroup struct { + Id *string `json:"id,omitempty"` + Properties *NetworkGroupProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_connectivityconfigurationproperties.go b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_connectivityconfigurationproperties.go new file mode 100644 index 00000000000..04f8fd3c40e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_connectivityconfigurationproperties.go @@ -0,0 +1,15 @@ +package networkmanagereffectiveconnectivityconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectivityConfigurationProperties struct { + AppliesToGroups []ConnectivityGroupItem `json:"appliesToGroups"` + ConnectivityTopology ConnectivityTopology `json:"connectivityTopology"` + DeleteExistingPeering *DeleteExistingPeering `json:"deleteExistingPeering,omitempty"` + Description *string `json:"description,omitempty"` + Hubs *[]Hub `json:"hubs,omitempty"` + IsGlobal *IsGlobal `json:"isGlobal,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_connectivitygroupitem.go b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_connectivitygroupitem.go new file mode 100644 index 00000000000..d034adb388c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_connectivitygroupitem.go @@ -0,0 +1,11 @@ +package networkmanagereffectiveconnectivityconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectivityGroupItem struct { + GroupConnectivity GroupConnectivity `json:"groupConnectivity"` + IsGlobal *IsGlobal `json:"isGlobal,omitempty"` + NetworkGroupId string `json:"networkGroupId"` + UseHubGateway *UseHubGateway `json:"useHubGateway,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_effectiveconnectivityconfiguration.go b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_effectiveconnectivityconfiguration.go new file mode 100644 index 00000000000..ace2b882974 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_effectiveconnectivityconfiguration.go @@ -0,0 +1,10 @@ +package networkmanagereffectiveconnectivityconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type EffectiveConnectivityConfiguration struct { + ConfigurationGroups *[]ConfigurationGroup `json:"configurationGroups,omitempty"` + Id *string `json:"id,omitempty"` + Properties *ConnectivityConfigurationProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_hub.go b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_hub.go new file mode 100644 index 00000000000..5564a1b1595 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_hub.go @@ -0,0 +1,9 @@ +package networkmanagereffectiveconnectivityconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Hub struct { + ResourceId *string `json:"resourceId,omitempty"` + ResourceType *string `json:"resourceType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_networkgroupproperties.go b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_networkgroupproperties.go new file mode 100644 index 00000000000..ae331bfec1d --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_networkgroupproperties.go @@ -0,0 +1,10 @@ +package networkmanagereffectiveconnectivityconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkGroupProperties struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_networkmanagereffectiveconnectivityconfigurationlistresult.go b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_networkmanagereffectiveconnectivityconfigurationlistresult.go new file mode 100644 index 00000000000..566b11872ea --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_networkmanagereffectiveconnectivityconfigurationlistresult.go @@ -0,0 +1,9 @@ +package networkmanagereffectiveconnectivityconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManagerEffectiveConnectivityConfigurationListResult struct { + SkipToken *string `json:"skipToken,omitempty"` + Value *[]EffectiveConnectivityConfiguration `json:"value,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_queryrequestoptions.go b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_queryrequestoptions.go new file mode 100644 index 00000000000..b861fc62fb3 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/model_queryrequestoptions.go @@ -0,0 +1,8 @@ +package networkmanagereffectiveconnectivityconfiguration + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type QueryRequestOptions struct { + SkipToken *string `json:"skipToken,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/version.go b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/version.go new file mode 100644 index 00000000000..9bd89dc5db9 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectiveconnectivityconfiguration/version.go @@ -0,0 +1,12 @@ +package networkmanagereffectiveconnectivityconfiguration + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/networkmanagereffectiveconnectivityconfiguration/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/README.md b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/README.md new file mode 100644 index 00000000000..cc7b8bfef80 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/README.md @@ -0,0 +1,42 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules` Documentation + +The `networkmanagereffectivesecurityadminrules` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules" +``` + + +### Client Initialization + +```go +client := networkmanagereffectivesecurityadminrules.NewNetworkManagerEffectiveSecurityAdminRulesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `NetworkManagerEffectiveSecurityAdminRulesClient.ListNetworkManagerEffectiveSecurityAdminRules` + +```go +ctx := context.TODO() +id := commonids.NewVirtualNetworkID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkValue") + +payload := networkmanagereffectivesecurityadminrules.QueryRequestOptions{ + // ... +} + + +read, err := client.ListNetworkManagerEffectiveSecurityAdminRules(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/client.go b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/client.go new file mode 100644 index 00000000000..c83126c132c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/client.go @@ -0,0 +1,26 @@ +package networkmanagereffectivesecurityadminrules + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManagerEffectiveSecurityAdminRulesClient struct { + Client *resourcemanager.Client +} + +func NewNetworkManagerEffectiveSecurityAdminRulesClientWithBaseURI(sdkApi sdkEnv.Api) (*NetworkManagerEffectiveSecurityAdminRulesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "networkmanagereffectivesecurityadminrules", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating NetworkManagerEffectiveSecurityAdminRulesClient: %+v", err) + } + + return &NetworkManagerEffectiveSecurityAdminRulesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/constants.go b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/constants.go new file mode 100644 index 00000000000..280bd1bc97d --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/constants.go @@ -0,0 +1,277 @@ +package networkmanagereffectivesecurityadminrules + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AddressPrefixType string + +const ( + AddressPrefixTypeIPPrefix AddressPrefixType = "IPPrefix" + AddressPrefixTypeServiceTag AddressPrefixType = "ServiceTag" +) + +func PossibleValuesForAddressPrefixType() []string { + return []string{ + string(AddressPrefixTypeIPPrefix), + string(AddressPrefixTypeServiceTag), + } +} + +func (s *AddressPrefixType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAddressPrefixType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAddressPrefixType(input string) (*AddressPrefixType, error) { + vals := map[string]AddressPrefixType{ + "ipprefix": AddressPrefixTypeIPPrefix, + "servicetag": AddressPrefixTypeServiceTag, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := AddressPrefixType(input) + return &out, nil +} + +type EffectiveAdminRuleKind string + +const ( + EffectiveAdminRuleKindCustom EffectiveAdminRuleKind = "Custom" + EffectiveAdminRuleKindDefault EffectiveAdminRuleKind = "Default" +) + +func PossibleValuesForEffectiveAdminRuleKind() []string { + return []string{ + string(EffectiveAdminRuleKindCustom), + string(EffectiveAdminRuleKindDefault), + } +} + +func (s *EffectiveAdminRuleKind) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseEffectiveAdminRuleKind(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseEffectiveAdminRuleKind(input string) (*EffectiveAdminRuleKind, error) { + vals := map[string]EffectiveAdminRuleKind{ + "custom": EffectiveAdminRuleKindCustom, + "default": EffectiveAdminRuleKindDefault, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := EffectiveAdminRuleKind(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type SecurityConfigurationRuleAccess string + +const ( + SecurityConfigurationRuleAccessAllow SecurityConfigurationRuleAccess = "Allow" + SecurityConfigurationRuleAccessAlwaysAllow SecurityConfigurationRuleAccess = "AlwaysAllow" + SecurityConfigurationRuleAccessDeny SecurityConfigurationRuleAccess = "Deny" +) + +func PossibleValuesForSecurityConfigurationRuleAccess() []string { + return []string{ + string(SecurityConfigurationRuleAccessAllow), + string(SecurityConfigurationRuleAccessAlwaysAllow), + string(SecurityConfigurationRuleAccessDeny), + } +} + +func (s *SecurityConfigurationRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityConfigurationRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityConfigurationRuleAccess(input string) (*SecurityConfigurationRuleAccess, error) { + vals := map[string]SecurityConfigurationRuleAccess{ + "allow": SecurityConfigurationRuleAccessAllow, + "alwaysallow": SecurityConfigurationRuleAccessAlwaysAllow, + "deny": SecurityConfigurationRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityConfigurationRuleAccess(input) + return &out, nil +} + +type SecurityConfigurationRuleDirection string + +const ( + SecurityConfigurationRuleDirectionInbound SecurityConfigurationRuleDirection = "Inbound" + SecurityConfigurationRuleDirectionOutbound SecurityConfigurationRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityConfigurationRuleDirection() []string { + return []string{ + string(SecurityConfigurationRuleDirectionInbound), + string(SecurityConfigurationRuleDirectionOutbound), + } +} + +func (s *SecurityConfigurationRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityConfigurationRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityConfigurationRuleDirection(input string) (*SecurityConfigurationRuleDirection, error) { + vals := map[string]SecurityConfigurationRuleDirection{ + "inbound": SecurityConfigurationRuleDirectionInbound, + "outbound": SecurityConfigurationRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityConfigurationRuleDirection(input) + return &out, nil +} + +type SecurityConfigurationRuleProtocol string + +const ( + SecurityConfigurationRuleProtocolAh SecurityConfigurationRuleProtocol = "Ah" + SecurityConfigurationRuleProtocolAny SecurityConfigurationRuleProtocol = "Any" + SecurityConfigurationRuleProtocolEsp SecurityConfigurationRuleProtocol = "Esp" + SecurityConfigurationRuleProtocolIcmp SecurityConfigurationRuleProtocol = "Icmp" + SecurityConfigurationRuleProtocolTcp SecurityConfigurationRuleProtocol = "Tcp" + SecurityConfigurationRuleProtocolUdp SecurityConfigurationRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityConfigurationRuleProtocol() []string { + return []string{ + string(SecurityConfigurationRuleProtocolAh), + string(SecurityConfigurationRuleProtocolAny), + string(SecurityConfigurationRuleProtocolEsp), + string(SecurityConfigurationRuleProtocolIcmp), + string(SecurityConfigurationRuleProtocolTcp), + string(SecurityConfigurationRuleProtocolUdp), + } +} + +func (s *SecurityConfigurationRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityConfigurationRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityConfigurationRuleProtocol(input string) (*SecurityConfigurationRuleProtocol, error) { + vals := map[string]SecurityConfigurationRuleProtocol{ + "ah": SecurityConfigurationRuleProtocolAh, + "any": SecurityConfigurationRuleProtocolAny, + "esp": SecurityConfigurationRuleProtocolEsp, + "icmp": SecurityConfigurationRuleProtocolIcmp, + "tcp": SecurityConfigurationRuleProtocolTcp, + "udp": SecurityConfigurationRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityConfigurationRuleProtocol(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/method_listnetworkmanagereffectivesecurityadminrules.go b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/method_listnetworkmanagereffectivesecurityadminrules.go new file mode 100644 index 00000000000..a69d081c810 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/method_listnetworkmanagereffectivesecurityadminrules.go @@ -0,0 +1,60 @@ +package networkmanagereffectivesecurityadminrules + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListNetworkManagerEffectiveSecurityAdminRulesOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkManagerEffectiveSecurityAdminRulesListResult +} + +// ListNetworkManagerEffectiveSecurityAdminRules ... +func (c NetworkManagerEffectiveSecurityAdminRulesClient) ListNetworkManagerEffectiveSecurityAdminRules(ctx context.Context, id commonids.VirtualNetworkId, input QueryRequestOptions) (result ListNetworkManagerEffectiveSecurityAdminRulesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/listNetworkManagerEffectiveSecurityAdminRules", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkManagerEffectiveSecurityAdminRulesListResult + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_addressprefixitem.go b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_addressprefixitem.go new file mode 100644 index 00000000000..36a40aa2b75 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_addressprefixitem.go @@ -0,0 +1,9 @@ +package networkmanagereffectivesecurityadminrules + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AddressPrefixItem struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixType *AddressPrefixType `json:"addressPrefixType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_adminpropertiesformat.go b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_adminpropertiesformat.go new file mode 100644 index 00000000000..bc26b08e48e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_adminpropertiesformat.go @@ -0,0 +1,18 @@ +package networkmanagereffectivesecurityadminrules + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AdminPropertiesFormat struct { + Access SecurityConfigurationRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Destinations *[]AddressPrefixItem `json:"destinations,omitempty"` + Direction SecurityConfigurationRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityConfigurationRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` + Sources *[]AddressPrefixItem `json:"sources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_configurationgroup.go b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_configurationgroup.go new file mode 100644 index 00000000000..bfc45b0ab70 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_configurationgroup.go @@ -0,0 +1,9 @@ +package networkmanagereffectivesecurityadminrules + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConfigurationGroup struct { + Id *string `json:"id,omitempty"` + Properties *NetworkGroupProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_defaultadminpropertiesformat.go b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_defaultadminpropertiesformat.go new file mode 100644 index 00000000000..1b0e64dbae7 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_defaultadminpropertiesformat.go @@ -0,0 +1,19 @@ +package networkmanagereffectivesecurityadminrules + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DefaultAdminPropertiesFormat struct { + Access *SecurityConfigurationRuleAccess `json:"access,omitempty"` + Description *string `json:"description,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Destinations *[]AddressPrefixItem `json:"destinations,omitempty"` + Direction *SecurityConfigurationRuleDirection `json:"direction,omitempty"` + Flag *string `json:"flag,omitempty"` + Priority *int64 `json:"priority,omitempty"` + Protocol *SecurityConfigurationRuleProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` + Sources *[]AddressPrefixItem `json:"sources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_effectivebasesecurityadminrule.go b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_effectivebasesecurityadminrule.go new file mode 100644 index 00000000000..9ef5715f8e4 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_effectivebasesecurityadminrule.go @@ -0,0 +1,61 @@ +package networkmanagereffectivesecurityadminrules + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type EffectiveBaseSecurityAdminRule interface { +} + +// RawEffectiveBaseSecurityAdminRuleImpl is returned when the Discriminated Value +// doesn't match any of the defined types +// NOTE: this should only be used when a type isn't defined for this type of Object (as a workaround) +// and is used only for Deserialization (e.g. this cannot be used as a Request Payload). +type RawEffectiveBaseSecurityAdminRuleImpl struct { + Type string + Values map[string]interface{} +} + +func unmarshalEffectiveBaseSecurityAdminRuleImplementation(input []byte) (EffectiveBaseSecurityAdminRule, error) { + if input == nil { + return nil, nil + } + + var temp map[string]interface{} + if err := json.Unmarshal(input, &temp); err != nil { + return nil, fmt.Errorf("unmarshaling EffectiveBaseSecurityAdminRule into map[string]interface: %+v", err) + } + + value, ok := temp["kind"].(string) + if !ok { + return nil, nil + } + + if strings.EqualFold(value, "Default") { + var out EffectiveDefaultSecurityAdminRule + if err := json.Unmarshal(input, &out); err != nil { + return nil, fmt.Errorf("unmarshaling into EffectiveDefaultSecurityAdminRule: %+v", err) + } + return out, nil + } + + if strings.EqualFold(value, "Custom") { + var out EffectiveSecurityAdminRule + if err := json.Unmarshal(input, &out); err != nil { + return nil, fmt.Errorf("unmarshaling into EffectiveSecurityAdminRule: %+v", err) + } + return out, nil + } + + out := RawEffectiveBaseSecurityAdminRuleImpl{ + Type: value, + Values: temp, + } + return out, nil + +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_effectivedefaultsecurityadminrule.go b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_effectivedefaultsecurityadminrule.go new file mode 100644 index 00000000000..17d5e7fdeb7 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_effectivedefaultsecurityadminrule.go @@ -0,0 +1,46 @@ +package networkmanagereffectivesecurityadminrules + +import ( + "encoding/json" + "fmt" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ EffectiveBaseSecurityAdminRule = EffectiveDefaultSecurityAdminRule{} + +type EffectiveDefaultSecurityAdminRule struct { + Properties *DefaultAdminPropertiesFormat `json:"properties,omitempty"` + + // Fields inherited from EffectiveBaseSecurityAdminRule + ConfigurationDescription *string `json:"configurationDescription,omitempty"` + Id *string `json:"id,omitempty"` + RuleCollectionAppliesToGroups *[]NetworkManagerSecurityGroupItem `json:"ruleCollectionAppliesToGroups,omitempty"` + RuleCollectionDescription *string `json:"ruleCollectionDescription,omitempty"` + RuleGroups *[]ConfigurationGroup `json:"ruleGroups,omitempty"` +} + +var _ json.Marshaler = EffectiveDefaultSecurityAdminRule{} + +func (s EffectiveDefaultSecurityAdminRule) MarshalJSON() ([]byte, error) { + type wrapper EffectiveDefaultSecurityAdminRule + wrapped := wrapper(s) + encoded, err := json.Marshal(wrapped) + if err != nil { + return nil, fmt.Errorf("marshaling EffectiveDefaultSecurityAdminRule: %+v", err) + } + + var decoded map[string]interface{} + if err := json.Unmarshal(encoded, &decoded); err != nil { + return nil, fmt.Errorf("unmarshaling EffectiveDefaultSecurityAdminRule: %+v", err) + } + decoded["kind"] = "Default" + + encoded, err = json.Marshal(decoded) + if err != nil { + return nil, fmt.Errorf("re-marshaling EffectiveDefaultSecurityAdminRule: %+v", err) + } + + return encoded, nil +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_effectivesecurityadminrule.go b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_effectivesecurityadminrule.go new file mode 100644 index 00000000000..ae90f9154f9 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_effectivesecurityadminrule.go @@ -0,0 +1,46 @@ +package networkmanagereffectivesecurityadminrules + +import ( + "encoding/json" + "fmt" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ EffectiveBaseSecurityAdminRule = EffectiveSecurityAdminRule{} + +type EffectiveSecurityAdminRule struct { + Properties *AdminPropertiesFormat `json:"properties,omitempty"` + + // Fields inherited from EffectiveBaseSecurityAdminRule + ConfigurationDescription *string `json:"configurationDescription,omitempty"` + Id *string `json:"id,omitempty"` + RuleCollectionAppliesToGroups *[]NetworkManagerSecurityGroupItem `json:"ruleCollectionAppliesToGroups,omitempty"` + RuleCollectionDescription *string `json:"ruleCollectionDescription,omitempty"` + RuleGroups *[]ConfigurationGroup `json:"ruleGroups,omitempty"` +} + +var _ json.Marshaler = EffectiveSecurityAdminRule{} + +func (s EffectiveSecurityAdminRule) MarshalJSON() ([]byte, error) { + type wrapper EffectiveSecurityAdminRule + wrapped := wrapper(s) + encoded, err := json.Marshal(wrapped) + if err != nil { + return nil, fmt.Errorf("marshaling EffectiveSecurityAdminRule: %+v", err) + } + + var decoded map[string]interface{} + if err := json.Unmarshal(encoded, &decoded); err != nil { + return nil, fmt.Errorf("unmarshaling EffectiveSecurityAdminRule: %+v", err) + } + decoded["kind"] = "Custom" + + encoded, err = json.Marshal(decoded) + if err != nil { + return nil, fmt.Errorf("re-marshaling EffectiveSecurityAdminRule: %+v", err) + } + + return encoded, nil +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_networkgroupproperties.go b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_networkgroupproperties.go new file mode 100644 index 00000000000..5890d573ff4 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_networkgroupproperties.go @@ -0,0 +1,10 @@ +package networkmanagereffectivesecurityadminrules + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkGroupProperties struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_networkmanagereffectivesecurityadminruleslistresult.go b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_networkmanagereffectivesecurityadminruleslistresult.go new file mode 100644 index 00000000000..941c8a93ed6 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_networkmanagereffectivesecurityadminruleslistresult.go @@ -0,0 +1,49 @@ +package networkmanagereffectivesecurityadminrules + +import ( + "encoding/json" + "fmt" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManagerEffectiveSecurityAdminRulesListResult struct { + SkipToken *string `json:"skipToken,omitempty"` + Value *[]EffectiveBaseSecurityAdminRule `json:"value,omitempty"` +} + +var _ json.Unmarshaler = &NetworkManagerEffectiveSecurityAdminRulesListResult{} + +func (s *NetworkManagerEffectiveSecurityAdminRulesListResult) UnmarshalJSON(bytes []byte) error { + type alias NetworkManagerEffectiveSecurityAdminRulesListResult + var decoded alias + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling into NetworkManagerEffectiveSecurityAdminRulesListResult: %+v", err) + } + + s.SkipToken = decoded.SkipToken + + var temp map[string]json.RawMessage + if err := json.Unmarshal(bytes, &temp); err != nil { + return fmt.Errorf("unmarshaling NetworkManagerEffectiveSecurityAdminRulesListResult into map[string]json.RawMessage: %+v", err) + } + + if v, ok := temp["value"]; ok { + var listTemp []json.RawMessage + if err := json.Unmarshal(v, &listTemp); err != nil { + return fmt.Errorf("unmarshaling Value into list []json.RawMessage: %+v", err) + } + + output := make([]EffectiveBaseSecurityAdminRule, 0) + for i, val := range listTemp { + impl, err := unmarshalEffectiveBaseSecurityAdminRuleImplementation(val) + if err != nil { + return fmt.Errorf("unmarshaling index %d field 'Value' for 'NetworkManagerEffectiveSecurityAdminRulesListResult': %+v", i, err) + } + output = append(output, impl) + } + s.Value = &output + } + return nil +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_networkmanagersecuritygroupitem.go b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_networkmanagersecuritygroupitem.go new file mode 100644 index 00000000000..47b6055e402 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_networkmanagersecuritygroupitem.go @@ -0,0 +1,8 @@ +package networkmanagereffectivesecurityadminrules + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManagerSecurityGroupItem struct { + NetworkGroupId string `json:"networkGroupId"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_queryrequestoptions.go b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_queryrequestoptions.go new file mode 100644 index 00000000000..21a08175183 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/model_queryrequestoptions.go @@ -0,0 +1,8 @@ +package networkmanagereffectivesecurityadminrules + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type QueryRequestOptions struct { + SkipToken *string `json:"skipToken,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/version.go b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/version.go new file mode 100644 index 00000000000..a6c43dcdff8 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagereffectivesecurityadminrules/version.go @@ -0,0 +1,12 @@ +package networkmanagereffectivesecurityadminrules + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/networkmanagereffectivesecurityadminrules/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/networkmanagers/README.md b/resource-manager/network/2024-01-01/networkmanagers/README.md new file mode 100644 index 00000000000..cb2009d85e4 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/README.md @@ -0,0 +1,163 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkmanagers` Documentation + +The `networkmanagers` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkmanagers" +``` + + +### Client Initialization + +```go +client := networkmanagers.NewNetworkManagersClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `NetworkManagersClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := networkmanagers.NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue") + +payload := networkmanagers.NetworkManager{ + // ... +} + + +read, err := client.CreateOrUpdate(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkManagersClient.Delete` + +```go +ctx := context.TODO() +id := networkmanagers.NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue") + +if err := client.DeleteThenPoll(ctx, id, networkmanagers.DefaultDeleteOperationOptions()); err != nil { + // handle the error +} +``` + + +### Example Usage: `NetworkManagersClient.Get` + +```go +ctx := context.TODO() +id := networkmanagers.NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkManagersClient.List` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.List(ctx, id, networkmanagers.DefaultListOperationOptions())` can be used to do batched pagination +items, err := client.ListComplete(ctx, id, networkmanagers.DefaultListOperationOptions()) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `NetworkManagersClient.ListBySubscription` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.ListBySubscription(ctx, id, networkmanagers.DefaultListBySubscriptionOperationOptions())` can be used to do batched pagination +items, err := client.ListBySubscriptionComplete(ctx, id, networkmanagers.DefaultListBySubscriptionOperationOptions()) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `NetworkManagersClient.NetworkManagerCommitsPost` + +```go +ctx := context.TODO() +id := networkmanagers.NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue") + +payload := networkmanagers.NetworkManagerCommit{ + // ... +} + + +if err := client.NetworkManagerCommitsPostThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `NetworkManagersClient.NetworkManagerDeploymentStatusList` + +```go +ctx := context.TODO() +id := networkmanagers.NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue") + +payload := networkmanagers.NetworkManagerDeploymentStatusParameter{ + // ... +} + + +read, err := client.NetworkManagerDeploymentStatusList(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkManagersClient.Patch` + +```go +ctx := context.TODO() +id := networkmanagers.NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue") + +payload := networkmanagers.PatchObject{ + // ... +} + + +read, err := client.Patch(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/networkmanagers/client.go b/resource-manager/network/2024-01-01/networkmanagers/client.go new file mode 100644 index 00000000000..b27df28e126 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/client.go @@ -0,0 +1,26 @@ +package networkmanagers + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManagersClient struct { + Client *resourcemanager.Client +} + +func NewNetworkManagersClientWithBaseURI(sdkApi sdkEnv.Api) (*NetworkManagersClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "networkmanagers", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating NetworkManagersClient: %+v", err) + } + + return &NetworkManagersClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/networkmanagers/constants.go b/resource-manager/network/2024-01-01/networkmanagers/constants.go new file mode 100644 index 00000000000..2aa86ac1963 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/constants.go @@ -0,0 +1,145 @@ +package networkmanagers + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConfigurationType string + +const ( + ConfigurationTypeConnectivity ConfigurationType = "Connectivity" + ConfigurationTypeSecurityAdmin ConfigurationType = "SecurityAdmin" +) + +func PossibleValuesForConfigurationType() []string { + return []string{ + string(ConfigurationTypeConnectivity), + string(ConfigurationTypeSecurityAdmin), + } +} + +func (s *ConfigurationType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseConfigurationType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseConfigurationType(input string) (*ConfigurationType, error) { + vals := map[string]ConfigurationType{ + "connectivity": ConfigurationTypeConnectivity, + "securityadmin": ConfigurationTypeSecurityAdmin, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ConfigurationType(input) + return &out, nil +} + +type DeploymentStatus string + +const ( + DeploymentStatusDeployed DeploymentStatus = "Deployed" + DeploymentStatusDeploying DeploymentStatus = "Deploying" + DeploymentStatusFailed DeploymentStatus = "Failed" + DeploymentStatusNotStarted DeploymentStatus = "NotStarted" +) + +func PossibleValuesForDeploymentStatus() []string { + return []string{ + string(DeploymentStatusDeployed), + string(DeploymentStatusDeploying), + string(DeploymentStatusFailed), + string(DeploymentStatusNotStarted), + } +} + +func (s *DeploymentStatus) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeploymentStatus(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeploymentStatus(input string) (*DeploymentStatus, error) { + vals := map[string]DeploymentStatus{ + "deployed": DeploymentStatusDeployed, + "deploying": DeploymentStatusDeploying, + "failed": DeploymentStatusFailed, + "notstarted": DeploymentStatusNotStarted, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeploymentStatus(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/networkmanagers/id_networkmanager.go b/resource-manager/network/2024-01-01/networkmanagers/id_networkmanager.go new file mode 100644 index 00000000000..63481203294 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/id_networkmanager.go @@ -0,0 +1,130 @@ +package networkmanagers + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NetworkManagerId{}) +} + +var _ resourceids.ResourceId = &NetworkManagerId{} + +// NetworkManagerId is a struct representing the Resource ID for a Network Manager +type NetworkManagerId struct { + SubscriptionId string + ResourceGroupName string + NetworkManagerName string +} + +// NewNetworkManagerID returns a new NetworkManagerId struct +func NewNetworkManagerID(subscriptionId string, resourceGroupName string, networkManagerName string) NetworkManagerId { + return NetworkManagerId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkManagerName: networkManagerName, + } +} + +// ParseNetworkManagerID parses 'input' into a NetworkManagerId +func ParseNetworkManagerID(input string) (*NetworkManagerId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkManagerId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkManagerId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNetworkManagerIDInsensitively parses 'input' case-insensitively into a NetworkManagerId +// note: this method should only be used for API response data and not user input +func ParseNetworkManagerIDInsensitively(input string) (*NetworkManagerId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkManagerId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkManagerId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NetworkManagerId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkManagerName, ok = input.Parsed["networkManagerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkManagerName", input) + } + + return nil +} + +// ValidateNetworkManagerID checks that 'input' can be parsed as a Network Manager ID +func ValidateNetworkManagerID(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 := ParseNetworkManagerID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Network Manager ID +func (id NetworkManagerId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkManagers/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkManagerName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Network Manager ID +func (id NetworkManagerId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkManagers", "networkManagers", "networkManagers"), + resourceids.UserSpecifiedSegment("networkManagerName", "networkManagerValue"), + } +} + +// String returns a human-readable description of this Network Manager ID +func (id NetworkManagerId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Manager Name: %q", id.NetworkManagerName), + } + return fmt.Sprintf("Network Manager (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/networkmanagers/id_networkmanager_test.go b/resource-manager/network/2024-01-01/networkmanagers/id_networkmanager_test.go new file mode 100644 index 00000000000..0feea61327e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/id_networkmanager_test.go @@ -0,0 +1,282 @@ +package networkmanagers + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NetworkManagerId{} + +func TestNewNetworkManagerID(t *testing.T) { + id := NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkManagerName != "networkManagerValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkManagerName'", id.NetworkManagerName, "networkManagerValue") + } +} + +func TestFormatNetworkManagerID(t *testing.T) { + actual := NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNetworkManagerID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkManagerId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Expected: &NetworkManagerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkManagerID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + } +} + +func TestParseNetworkManagerIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkManagerId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Expected: &NetworkManagerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe", + Expected: &NetworkManagerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkManagerName: "nEtWoRkMaNaGeRvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkManagerIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + } +} + +func TestSegmentsForNetworkManagerId(t *testing.T) { + segments := NetworkManagerId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NetworkManagerId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/networkmanagers/method_createorupdate.go b/resource-manager/network/2024-01-01/networkmanagers/method_createorupdate.go new file mode 100644 index 00000000000..5fb5c949cd6 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/method_createorupdate.go @@ -0,0 +1,59 @@ +package networkmanagers + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkManager +} + +// CreateOrUpdate ... +func (c NetworkManagersClient) CreateOrUpdate(ctx context.Context, id NetworkManagerId, input NetworkManager) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkManager + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkmanagers/method_delete.go b/resource-manager/network/2024-01-01/networkmanagers/method_delete.go new file mode 100644 index 00000000000..ec825f20cb1 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/method_delete.go @@ -0,0 +1,99 @@ +package networkmanagers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +type DeleteOperationOptions struct { + Force *bool +} + +func DefaultDeleteOperationOptions() DeleteOperationOptions { + return DeleteOperationOptions{} +} + +func (o DeleteOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o DeleteOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o DeleteOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Force != nil { + out.Append("force", fmt.Sprintf("%v", *o.Force)) + } + return &out +} + +// Delete ... +func (c NetworkManagersClient) Delete(ctx context.Context, id NetworkManagerId, options DeleteOperationOptions) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c NetworkManagersClient) DeleteThenPoll(ctx context.Context, id NetworkManagerId, options DeleteOperationOptions) error { + result, err := c.Delete(ctx, id, options) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkmanagers/method_get.go b/resource-manager/network/2024-01-01/networkmanagers/method_get.go new file mode 100644 index 00000000000..c9f3acddeae --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/method_get.go @@ -0,0 +1,54 @@ +package networkmanagers + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkManager +} + +// Get ... +func (c NetworkManagersClient) Get(ctx context.Context, id NetworkManagerId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkManager + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkmanagers/method_list.go b/resource-manager/network/2024-01-01/networkmanagers/method_list.go new file mode 100644 index 00000000000..18cca161414 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/method_list.go @@ -0,0 +1,121 @@ +package networkmanagers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NetworkManager +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []NetworkManager +} + +type ListOperationOptions struct { + Top *int64 +} + +func DefaultListOperationOptions() ListOperationOptions { + return ListOperationOptions{} +} + +func (o ListOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o ListOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o ListOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Top != nil { + out.Append("$top", fmt.Sprintf("%v", *o.Top)) + } + return &out +} + +// List ... +func (c NetworkManagersClient) List(ctx context.Context, id commonids.ResourceGroupId, options ListOperationOptions) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/networkManagers", id.ID()), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NetworkManager `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c NetworkManagersClient) ListComplete(ctx context.Context, id commonids.ResourceGroupId, options ListOperationOptions) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, options, NetworkManagerOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c NetworkManagersClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, options ListOperationOptions, predicate NetworkManagerOperationPredicate) (result ListCompleteResult, err error) { + items := make([]NetworkManager, 0) + + resp, err := c.List(ctx, id, options) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/networkmanagers/method_listbysubscription.go b/resource-manager/network/2024-01-01/networkmanagers/method_listbysubscription.go new file mode 100644 index 00000000000..5faa4fab8b1 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/method_listbysubscription.go @@ -0,0 +1,121 @@ +package networkmanagers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListBySubscriptionOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NetworkManager +} + +type ListBySubscriptionCompleteResult struct { + LatestHttpResponse *http.Response + Items []NetworkManager +} + +type ListBySubscriptionOperationOptions struct { + Top *int64 +} + +func DefaultListBySubscriptionOperationOptions() ListBySubscriptionOperationOptions { + return ListBySubscriptionOperationOptions{} +} + +func (o ListBySubscriptionOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o ListBySubscriptionOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o ListBySubscriptionOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Top != nil { + out.Append("$top", fmt.Sprintf("%v", *o.Top)) + } + return &out +} + +// ListBySubscription ... +func (c NetworkManagersClient) ListBySubscription(ctx context.Context, id commonids.SubscriptionId, options ListBySubscriptionOperationOptions) (result ListBySubscriptionOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/networkManagers", id.ID()), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NetworkManager `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListBySubscriptionComplete retrieves all the results into a single object +func (c NetworkManagersClient) ListBySubscriptionComplete(ctx context.Context, id commonids.SubscriptionId, options ListBySubscriptionOperationOptions) (ListBySubscriptionCompleteResult, error) { + return c.ListBySubscriptionCompleteMatchingPredicate(ctx, id, options, NetworkManagerOperationPredicate{}) +} + +// ListBySubscriptionCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c NetworkManagersClient) ListBySubscriptionCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, options ListBySubscriptionOperationOptions, predicate NetworkManagerOperationPredicate) (result ListBySubscriptionCompleteResult, err error) { + items := make([]NetworkManager, 0) + + resp, err := c.ListBySubscription(ctx, id, options) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListBySubscriptionCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/networkmanagers/method_networkmanagercommitspost.go b/resource-manager/network/2024-01-01/networkmanagers/method_networkmanagercommitspost.go new file mode 100644 index 00000000000..6d93c0512d6 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/method_networkmanagercommitspost.go @@ -0,0 +1,75 @@ +package networkmanagers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManagerCommitsPostOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *NetworkManagerCommit +} + +// NetworkManagerCommitsPost ... +func (c NetworkManagersClient) NetworkManagerCommitsPost(ctx context.Context, id NetworkManagerId, input NetworkManagerCommit) (result NetworkManagerCommitsPostOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/commit", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// NetworkManagerCommitsPostThenPoll performs NetworkManagerCommitsPost then polls until it's completed +func (c NetworkManagersClient) NetworkManagerCommitsPostThenPoll(ctx context.Context, id NetworkManagerId, input NetworkManagerCommit) error { + result, err := c.NetworkManagerCommitsPost(ctx, id, input) + if err != nil { + return fmt.Errorf("performing NetworkManagerCommitsPost: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after NetworkManagerCommitsPost: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkmanagers/method_networkmanagerdeploymentstatuslist.go b/resource-manager/network/2024-01-01/networkmanagers/method_networkmanagerdeploymentstatuslist.go new file mode 100644 index 00000000000..f9a88725d0f --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/method_networkmanagerdeploymentstatuslist.go @@ -0,0 +1,59 @@ +package networkmanagers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManagerDeploymentStatusListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkManagerDeploymentStatusListResult +} + +// NetworkManagerDeploymentStatusList ... +func (c NetworkManagersClient) NetworkManagerDeploymentStatusList(ctx context.Context, id NetworkManagerId, input NetworkManagerDeploymentStatusParameter) (result NetworkManagerDeploymentStatusListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/listDeploymentStatus", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkManagerDeploymentStatusListResult + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkmanagers/method_patch.go b/resource-manager/network/2024-01-01/networkmanagers/method_patch.go new file mode 100644 index 00000000000..e3810b6e4b4 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/method_patch.go @@ -0,0 +1,58 @@ +package networkmanagers + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PatchOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkManager +} + +// Patch ... +func (c NetworkManagersClient) Patch(ctx context.Context, id NetworkManagerId, input PatchObject) (result PatchOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkManager + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkmanagers/model_crosstenantscopes.go b/resource-manager/network/2024-01-01/networkmanagers/model_crosstenantscopes.go new file mode 100644 index 00000000000..537d9c70d4a --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/model_crosstenantscopes.go @@ -0,0 +1,10 @@ +package networkmanagers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CrossTenantScopes struct { + ManagementGroups *[]string `json:"managementGroups,omitempty"` + Subscriptions *[]string `json:"subscriptions,omitempty"` + TenantId *string `json:"tenantId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagers/model_networkmanager.go b/resource-manager/network/2024-01-01/networkmanagers/model_networkmanager.go new file mode 100644 index 00000000000..8f98dec3ed2 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/model_networkmanager.go @@ -0,0 +1,19 @@ +package networkmanagers + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/systemdata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManager struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkManagerProperties `json:"properties,omitempty"` + SystemData *systemdata.SystemData `json:"systemData,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagers/model_networkmanagercommit.go b/resource-manager/network/2024-01-01/networkmanagers/model_networkmanagercommit.go new file mode 100644 index 00000000000..8649d0c0da8 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/model_networkmanagercommit.go @@ -0,0 +1,11 @@ +package networkmanagers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManagerCommit struct { + CommitId *string `json:"commitId,omitempty"` + CommitType ConfigurationType `json:"commitType"` + ConfigurationIds *[]string `json:"configurationIds,omitempty"` + TargetLocations []string `json:"targetLocations"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagers/model_networkmanagerdeploymentstatus.go b/resource-manager/network/2024-01-01/networkmanagers/model_networkmanagerdeploymentstatus.go new file mode 100644 index 00000000000..5727d45e848 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/model_networkmanagerdeploymentstatus.go @@ -0,0 +1,31 @@ +package networkmanagers + +import ( + "time" + + "github.com/hashicorp/go-azure-helpers/lang/dates" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManagerDeploymentStatus struct { + CommitTime *string `json:"commitTime,omitempty"` + ConfigurationIds *[]string `json:"configurationIds,omitempty"` + DeploymentStatus *DeploymentStatus `json:"deploymentStatus,omitempty"` + DeploymentType *ConfigurationType `json:"deploymentType,omitempty"` + ErrorMessage *string `json:"errorMessage,omitempty"` + Region *string `json:"region,omitempty"` +} + +func (o *NetworkManagerDeploymentStatus) GetCommitTimeAsTime() (*time.Time, error) { + if o.CommitTime == nil { + return nil, nil + } + return dates.ParseAsFormat(o.CommitTime, "2006-01-02T15:04:05Z07:00") +} + +func (o *NetworkManagerDeploymentStatus) SetCommitTimeAsTime(input time.Time) { + formatted := input.Format("2006-01-02T15:04:05Z07:00") + o.CommitTime = &formatted +} diff --git a/resource-manager/network/2024-01-01/networkmanagers/model_networkmanagerdeploymentstatuslistresult.go b/resource-manager/network/2024-01-01/networkmanagers/model_networkmanagerdeploymentstatuslistresult.go new file mode 100644 index 00000000000..26a44c297a2 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/model_networkmanagerdeploymentstatuslistresult.go @@ -0,0 +1,9 @@ +package networkmanagers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManagerDeploymentStatusListResult struct { + SkipToken *string `json:"skipToken,omitempty"` + Value *[]NetworkManagerDeploymentStatus `json:"value,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagers/model_networkmanagerdeploymentstatusparameter.go b/resource-manager/network/2024-01-01/networkmanagers/model_networkmanagerdeploymentstatusparameter.go new file mode 100644 index 00000000000..1eb70a07ac3 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/model_networkmanagerdeploymentstatusparameter.go @@ -0,0 +1,10 @@ +package networkmanagers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManagerDeploymentStatusParameter struct { + DeploymentTypes *[]ConfigurationType `json:"deploymentTypes,omitempty"` + Regions *[]string `json:"regions,omitempty"` + SkipToken *string `json:"skipToken,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagers/model_networkmanagerproperties.go b/resource-manager/network/2024-01-01/networkmanagers/model_networkmanagerproperties.go new file mode 100644 index 00000000000..46dc5161ee2 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/model_networkmanagerproperties.go @@ -0,0 +1,12 @@ +package networkmanagers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManagerProperties struct { + Description *string `json:"description,omitempty"` + NetworkManagerScopeAccesses []ConfigurationType `json:"networkManagerScopeAccesses"` + NetworkManagerScopes NetworkManagerPropertiesNetworkManagerScopes `json:"networkManagerScopes"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagers/model_networkmanagerpropertiesnetworkmanagerscopes.go b/resource-manager/network/2024-01-01/networkmanagers/model_networkmanagerpropertiesnetworkmanagerscopes.go new file mode 100644 index 00000000000..2a91fc5b601 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/model_networkmanagerpropertiesnetworkmanagerscopes.go @@ -0,0 +1,10 @@ +package networkmanagers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManagerPropertiesNetworkManagerScopes struct { + CrossTenantScopes *[]CrossTenantScopes `json:"crossTenantScopes,omitempty"` + ManagementGroups *[]string `json:"managementGroups,omitempty"` + Subscriptions *[]string `json:"subscriptions,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagers/model_patchobject.go b/resource-manager/network/2024-01-01/networkmanagers/model_patchobject.go new file mode 100644 index 00000000000..775ef598685 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/model_patchobject.go @@ -0,0 +1,8 @@ +package networkmanagers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PatchObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkmanagers/predicates.go b/resource-manager/network/2024-01-01/networkmanagers/predicates.go new file mode 100644 index 00000000000..7c1597c2666 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/predicates.go @@ -0,0 +1,37 @@ +package networkmanagers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkManagerOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p NetworkManagerOperationPredicate) Matches(input NetworkManager) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/networkmanagers/version.go b/resource-manager/network/2024-01-01/networkmanagers/version.go new file mode 100644 index 00000000000..b41ce9634c1 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkmanagers/version.go @@ -0,0 +1,12 @@ +package networkmanagers + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/networkmanagers/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/README.md b/resource-manager/network/2024-01-01/networkprofiles/README.md new file mode 100644 index 00000000000..30033ffbec0 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/README.md @@ -0,0 +1,125 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkprofiles` Documentation + +The `networkprofiles` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkprofiles" +``` + + +### Client Initialization + +```go +client := networkprofiles.NewNetworkProfilesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `NetworkProfilesClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := networkprofiles.NewNetworkProfileID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkProfileValue") + +payload := networkprofiles.NetworkProfile{ + // ... +} + + +read, err := client.CreateOrUpdate(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkProfilesClient.Delete` + +```go +ctx := context.TODO() +id := networkprofiles.NewNetworkProfileID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkProfileValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `NetworkProfilesClient.Get` + +```go +ctx := context.TODO() +id := networkprofiles.NewNetworkProfileID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkProfileValue") + +read, err := client.Get(ctx, id, networkprofiles.DefaultGetOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkProfilesClient.List` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `NetworkProfilesClient.ListAll` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.ListAll(ctx, id)` can be used to do batched pagination +items, err := client.ListAllComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `NetworkProfilesClient.UpdateTags` + +```go +ctx := context.TODO() +id := networkprofiles.NewNetworkProfileID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkProfileValue") + +payload := networkprofiles.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/networkprofiles/client.go b/resource-manager/network/2024-01-01/networkprofiles/client.go new file mode 100644 index 00000000000..17b4bf31068 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/client.go @@ -0,0 +1,26 @@ +package networkprofiles + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkProfilesClient struct { + Client *resourcemanager.Client +} + +func NewNetworkProfilesClientWithBaseURI(sdkApi sdkEnv.Api) (*NetworkProfilesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "networkprofiles", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating NetworkProfilesClient: %+v", err) + } + + return &NetworkProfilesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/constants.go b/resource-manager/network/2024-01-01/networkprofiles/constants.go new file mode 100644 index 00000000000..d3159767fb9 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/constants.go @@ -0,0 +1,1198 @@ +package networkprofiles + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettingsProtectionMode string + +const ( + DdosSettingsProtectionModeDisabled DdosSettingsProtectionMode = "Disabled" + DdosSettingsProtectionModeEnabled DdosSettingsProtectionMode = "Enabled" + DdosSettingsProtectionModeVirtualNetworkInherited DdosSettingsProtectionMode = "VirtualNetworkInherited" +) + +func PossibleValuesForDdosSettingsProtectionMode() []string { + return []string{ + string(DdosSettingsProtectionModeDisabled), + string(DdosSettingsProtectionModeEnabled), + string(DdosSettingsProtectionModeVirtualNetworkInherited), + } +} + +func (s *DdosSettingsProtectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDdosSettingsProtectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDdosSettingsProtectionMode(input string) (*DdosSettingsProtectionMode, error) { + vals := map[string]DdosSettingsProtectionMode{ + "disabled": DdosSettingsProtectionModeDisabled, + "enabled": DdosSettingsProtectionModeEnabled, + "virtualnetworkinherited": DdosSettingsProtectionModeVirtualNetworkInherited, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DdosSettingsProtectionMode(input) + return &out, nil +} + +type DeleteOptions string + +const ( + DeleteOptionsDelete DeleteOptions = "Delete" + DeleteOptionsDetach DeleteOptions = "Detach" +) + +func PossibleValuesForDeleteOptions() []string { + return []string{ + string(DeleteOptionsDelete), + string(DeleteOptionsDetach), + } +} + +func (s *DeleteOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteOptions(input string) (*DeleteOptions, error) { + vals := map[string]DeleteOptions{ + "delete": DeleteOptionsDelete, + "detach": DeleteOptionsDetach, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteOptions(input) + return &out, nil +} + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelInterfaceType string + +const ( + GatewayLoadBalancerTunnelInterfaceTypeExternal GatewayLoadBalancerTunnelInterfaceType = "External" + GatewayLoadBalancerTunnelInterfaceTypeInternal GatewayLoadBalancerTunnelInterfaceType = "Internal" + GatewayLoadBalancerTunnelInterfaceTypeNone GatewayLoadBalancerTunnelInterfaceType = "None" +) + +func PossibleValuesForGatewayLoadBalancerTunnelInterfaceType() []string { + return []string{ + string(GatewayLoadBalancerTunnelInterfaceTypeExternal), + string(GatewayLoadBalancerTunnelInterfaceTypeInternal), + string(GatewayLoadBalancerTunnelInterfaceTypeNone), + } +} + +func (s *GatewayLoadBalancerTunnelInterfaceType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelInterfaceType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelInterfaceType(input string) (*GatewayLoadBalancerTunnelInterfaceType, error) { + vals := map[string]GatewayLoadBalancerTunnelInterfaceType{ + "external": GatewayLoadBalancerTunnelInterfaceTypeExternal, + "internal": GatewayLoadBalancerTunnelInterfaceTypeInternal, + "none": GatewayLoadBalancerTunnelInterfaceTypeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelInterfaceType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelProtocol string + +const ( + GatewayLoadBalancerTunnelProtocolNative GatewayLoadBalancerTunnelProtocol = "Native" + GatewayLoadBalancerTunnelProtocolNone GatewayLoadBalancerTunnelProtocol = "None" + GatewayLoadBalancerTunnelProtocolVXLAN GatewayLoadBalancerTunnelProtocol = "VXLAN" +) + +func PossibleValuesForGatewayLoadBalancerTunnelProtocol() []string { + return []string{ + string(GatewayLoadBalancerTunnelProtocolNative), + string(GatewayLoadBalancerTunnelProtocolNone), + string(GatewayLoadBalancerTunnelProtocolVXLAN), + } +} + +func (s *GatewayLoadBalancerTunnelProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelProtocol(input string) (*GatewayLoadBalancerTunnelProtocol, error) { + vals := map[string]GatewayLoadBalancerTunnelProtocol{ + "native": GatewayLoadBalancerTunnelProtocolNative, + "none": GatewayLoadBalancerTunnelProtocolNone, + "vxlan": GatewayLoadBalancerTunnelProtocolVXLAN, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelProtocol(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} + +type LoadBalancerBackendAddressAdminState string + +const ( + LoadBalancerBackendAddressAdminStateDown LoadBalancerBackendAddressAdminState = "Down" + LoadBalancerBackendAddressAdminStateNone LoadBalancerBackendAddressAdminState = "None" + LoadBalancerBackendAddressAdminStateUp LoadBalancerBackendAddressAdminState = "Up" +) + +func PossibleValuesForLoadBalancerBackendAddressAdminState() []string { + return []string{ + string(LoadBalancerBackendAddressAdminStateDown), + string(LoadBalancerBackendAddressAdminStateNone), + string(LoadBalancerBackendAddressAdminStateUp), + } +} + +func (s *LoadBalancerBackendAddressAdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerBackendAddressAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerBackendAddressAdminState(input string) (*LoadBalancerBackendAddressAdminState, error) { + vals := map[string]LoadBalancerBackendAddressAdminState{ + "down": LoadBalancerBackendAddressAdminStateDown, + "none": LoadBalancerBackendAddressAdminStateNone, + "up": LoadBalancerBackendAddressAdminStateUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerBackendAddressAdminState(input) + return &out, nil +} + +type NatGatewaySkuName string + +const ( + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +func PossibleValuesForNatGatewaySkuName() []string { + return []string{ + string(NatGatewaySkuNameStandard), + } +} + +func (s *NatGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNatGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNatGatewaySkuName(input string) (*NatGatewaySkuName, error) { + vals := map[string]NatGatewaySkuName{ + "standard": NatGatewaySkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NatGatewaySkuName(input) + return &out, nil +} + +type NetworkInterfaceAuxiliaryMode string + +const ( + NetworkInterfaceAuxiliaryModeAcceleratedConnections NetworkInterfaceAuxiliaryMode = "AcceleratedConnections" + NetworkInterfaceAuxiliaryModeFloating NetworkInterfaceAuxiliaryMode = "Floating" + NetworkInterfaceAuxiliaryModeMaxConnections NetworkInterfaceAuxiliaryMode = "MaxConnections" + NetworkInterfaceAuxiliaryModeNone NetworkInterfaceAuxiliaryMode = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliaryMode() []string { + return []string{ + string(NetworkInterfaceAuxiliaryModeAcceleratedConnections), + string(NetworkInterfaceAuxiliaryModeFloating), + string(NetworkInterfaceAuxiliaryModeMaxConnections), + string(NetworkInterfaceAuxiliaryModeNone), + } +} + +func (s *NetworkInterfaceAuxiliaryMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliaryMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliaryMode(input string) (*NetworkInterfaceAuxiliaryMode, error) { + vals := map[string]NetworkInterfaceAuxiliaryMode{ + "acceleratedconnections": NetworkInterfaceAuxiliaryModeAcceleratedConnections, + "floating": NetworkInterfaceAuxiliaryModeFloating, + "maxconnections": NetworkInterfaceAuxiliaryModeMaxConnections, + "none": NetworkInterfaceAuxiliaryModeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliaryMode(input) + return &out, nil +} + +type NetworkInterfaceAuxiliarySku string + +const ( + NetworkInterfaceAuxiliarySkuAEight NetworkInterfaceAuxiliarySku = "A8" + NetworkInterfaceAuxiliarySkuAFour NetworkInterfaceAuxiliarySku = "A4" + NetworkInterfaceAuxiliarySkuAOne NetworkInterfaceAuxiliarySku = "A1" + NetworkInterfaceAuxiliarySkuATwo NetworkInterfaceAuxiliarySku = "A2" + NetworkInterfaceAuxiliarySkuNone NetworkInterfaceAuxiliarySku = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliarySku() []string { + return []string{ + string(NetworkInterfaceAuxiliarySkuAEight), + string(NetworkInterfaceAuxiliarySkuAFour), + string(NetworkInterfaceAuxiliarySkuAOne), + string(NetworkInterfaceAuxiliarySkuATwo), + string(NetworkInterfaceAuxiliarySkuNone), + } +} + +func (s *NetworkInterfaceAuxiliarySku) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliarySku(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliarySku(input string) (*NetworkInterfaceAuxiliarySku, error) { + vals := map[string]NetworkInterfaceAuxiliarySku{ + "a8": NetworkInterfaceAuxiliarySkuAEight, + "a4": NetworkInterfaceAuxiliarySkuAFour, + "a1": NetworkInterfaceAuxiliarySkuAOne, + "a2": NetworkInterfaceAuxiliarySkuATwo, + "none": NetworkInterfaceAuxiliarySkuNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliarySku(input) + return &out, nil +} + +type NetworkInterfaceMigrationPhase string + +const ( + NetworkInterfaceMigrationPhaseAbort NetworkInterfaceMigrationPhase = "Abort" + NetworkInterfaceMigrationPhaseCommit NetworkInterfaceMigrationPhase = "Commit" + NetworkInterfaceMigrationPhaseCommitted NetworkInterfaceMigrationPhase = "Committed" + NetworkInterfaceMigrationPhaseNone NetworkInterfaceMigrationPhase = "None" + NetworkInterfaceMigrationPhasePrepare NetworkInterfaceMigrationPhase = "Prepare" +) + +func PossibleValuesForNetworkInterfaceMigrationPhase() []string { + return []string{ + string(NetworkInterfaceMigrationPhaseAbort), + string(NetworkInterfaceMigrationPhaseCommit), + string(NetworkInterfaceMigrationPhaseCommitted), + string(NetworkInterfaceMigrationPhaseNone), + string(NetworkInterfaceMigrationPhasePrepare), + } +} + +func (s *NetworkInterfaceMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceMigrationPhase(input string) (*NetworkInterfaceMigrationPhase, error) { + vals := map[string]NetworkInterfaceMigrationPhase{ + "abort": NetworkInterfaceMigrationPhaseAbort, + "commit": NetworkInterfaceMigrationPhaseCommit, + "committed": NetworkInterfaceMigrationPhaseCommitted, + "none": NetworkInterfaceMigrationPhaseNone, + "prepare": NetworkInterfaceMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceMigrationPhase(input) + return &out, nil +} + +type NetworkInterfaceNicType string + +const ( + NetworkInterfaceNicTypeElastic NetworkInterfaceNicType = "Elastic" + NetworkInterfaceNicTypeStandard NetworkInterfaceNicType = "Standard" +) + +func PossibleValuesForNetworkInterfaceNicType() []string { + return []string{ + string(NetworkInterfaceNicTypeElastic), + string(NetworkInterfaceNicTypeStandard), + } +} + +func (s *NetworkInterfaceNicType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceNicType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceNicType(input string) (*NetworkInterfaceNicType, error) { + vals := map[string]NetworkInterfaceNicType{ + "elastic": NetworkInterfaceNicTypeElastic, + "standard": NetworkInterfaceNicTypeStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceNicType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type PublicIPAddressDnsSettingsDomainNameLabelScope string + +const ( + PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "NoReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "ResourceGroupReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "SubscriptionReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "TenantReuse" +) + +func PossibleValuesForPublicIPAddressDnsSettingsDomainNameLabelScope() []string { + return []string{ + string(PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse), + } +} + +func (s *PublicIPAddressDnsSettingsDomainNameLabelScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressDnsSettingsDomainNameLabelScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressDnsSettingsDomainNameLabelScope(input string) (*PublicIPAddressDnsSettingsDomainNameLabelScope, error) { + vals := map[string]PublicIPAddressDnsSettingsDomainNameLabelScope{ + "noreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse, + "resourcegroupreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse, + "subscriptionreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse, + "tenantreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressDnsSettingsDomainNameLabelScope(input) + return &out, nil +} + +type PublicIPAddressMigrationPhase string + +const ( + PublicIPAddressMigrationPhaseAbort PublicIPAddressMigrationPhase = "Abort" + PublicIPAddressMigrationPhaseCommit PublicIPAddressMigrationPhase = "Commit" + PublicIPAddressMigrationPhaseCommitted PublicIPAddressMigrationPhase = "Committed" + PublicIPAddressMigrationPhaseNone PublicIPAddressMigrationPhase = "None" + PublicIPAddressMigrationPhasePrepare PublicIPAddressMigrationPhase = "Prepare" +) + +func PossibleValuesForPublicIPAddressMigrationPhase() []string { + return []string{ + string(PublicIPAddressMigrationPhaseAbort), + string(PublicIPAddressMigrationPhaseCommit), + string(PublicIPAddressMigrationPhaseCommitted), + string(PublicIPAddressMigrationPhaseNone), + string(PublicIPAddressMigrationPhasePrepare), + } +} + +func (s *PublicIPAddressMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressMigrationPhase(input string) (*PublicIPAddressMigrationPhase, error) { + vals := map[string]PublicIPAddressMigrationPhase{ + "abort": PublicIPAddressMigrationPhaseAbort, + "commit": PublicIPAddressMigrationPhaseCommit, + "committed": PublicIPAddressMigrationPhaseCommitted, + "none": PublicIPAddressMigrationPhaseNone, + "prepare": PublicIPAddressMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressMigrationPhase(input) + return &out, nil +} + +type PublicIPAddressSkuName string + +const ( + PublicIPAddressSkuNameBasic PublicIPAddressSkuName = "Basic" + PublicIPAddressSkuNameStandard PublicIPAddressSkuName = "Standard" +) + +func PossibleValuesForPublicIPAddressSkuName() []string { + return []string{ + string(PublicIPAddressSkuNameBasic), + string(PublicIPAddressSkuNameStandard), + } +} + +func (s *PublicIPAddressSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuName(input string) (*PublicIPAddressSkuName, error) { + vals := map[string]PublicIPAddressSkuName{ + "basic": PublicIPAddressSkuNameBasic, + "standard": PublicIPAddressSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuName(input) + return &out, nil +} + +type PublicIPAddressSkuTier string + +const ( + PublicIPAddressSkuTierGlobal PublicIPAddressSkuTier = "Global" + PublicIPAddressSkuTierRegional PublicIPAddressSkuTier = "Regional" +) + +func PossibleValuesForPublicIPAddressSkuTier() []string { + return []string{ + string(PublicIPAddressSkuTierGlobal), + string(PublicIPAddressSkuTierRegional), + } +} + +func (s *PublicIPAddressSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuTier(input string) (*PublicIPAddressSkuTier, error) { + vals := map[string]PublicIPAddressSkuTier{ + "global": PublicIPAddressSkuTierGlobal, + "regional": PublicIPAddressSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuTier(input) + return &out, nil +} + +type RouteNextHopType string + +const ( + RouteNextHopTypeInternet RouteNextHopType = "Internet" + RouteNextHopTypeNone RouteNextHopType = "None" + RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" + RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" + RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" +) + +func PossibleValuesForRouteNextHopType() []string { + return []string{ + string(RouteNextHopTypeInternet), + string(RouteNextHopTypeNone), + string(RouteNextHopTypeVirtualAppliance), + string(RouteNextHopTypeVirtualNetworkGateway), + string(RouteNextHopTypeVnetLocal), + } +} + +func (s *RouteNextHopType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteNextHopType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteNextHopType(input string) (*RouteNextHopType, error) { + vals := map[string]RouteNextHopType{ + "internet": RouteNextHopTypeInternet, + "none": RouteNextHopTypeNone, + "virtualappliance": RouteNextHopTypeVirtualAppliance, + "virtualnetworkgateway": RouteNextHopTypeVirtualNetworkGateway, + "vnetlocal": RouteNextHopTypeVnetLocal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteNextHopType(input) + return &out, nil +} + +type SecurityRuleAccess string + +const ( + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +func PossibleValuesForSecurityRuleAccess() []string { + return []string{ + string(SecurityRuleAccessAllow), + string(SecurityRuleAccessDeny), + } +} + +func (s *SecurityRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleAccess(input string) (*SecurityRuleAccess, error) { + vals := map[string]SecurityRuleAccess{ + "allow": SecurityRuleAccessAllow, + "deny": SecurityRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleAccess(input) + return &out, nil +} + +type SecurityRuleDirection string + +const ( + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityRuleDirection() []string { + return []string{ + string(SecurityRuleDirectionInbound), + string(SecurityRuleDirectionOutbound), + } +} + +func (s *SecurityRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleDirection(input string) (*SecurityRuleDirection, error) { + vals := map[string]SecurityRuleDirection{ + "inbound": SecurityRuleDirectionInbound, + "outbound": SecurityRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleDirection(input) + return &out, nil +} + +type SecurityRuleProtocol string + +const ( + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + SecurityRuleProtocolAny SecurityRuleProtocol = "*" + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + SecurityRuleProtocolTcp SecurityRuleProtocol = "Tcp" + SecurityRuleProtocolUdp SecurityRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityRuleProtocol() []string { + return []string{ + string(SecurityRuleProtocolAh), + string(SecurityRuleProtocolAny), + string(SecurityRuleProtocolEsp), + string(SecurityRuleProtocolIcmp), + string(SecurityRuleProtocolTcp), + string(SecurityRuleProtocolUdp), + } +} + +func (s *SecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleProtocol(input string) (*SecurityRuleProtocol, error) { + vals := map[string]SecurityRuleProtocol{ + "ah": SecurityRuleProtocolAh, + "*": SecurityRuleProtocolAny, + "esp": SecurityRuleProtocolEsp, + "icmp": SecurityRuleProtocolIcmp, + "tcp": SecurityRuleProtocolTcp, + "udp": SecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleProtocol(input) + return &out, nil +} + +type SharingScope string + +const ( + SharingScopeDelegatedServices SharingScope = "DelegatedServices" + SharingScopeTenant SharingScope = "Tenant" +) + +func PossibleValuesForSharingScope() []string { + return []string{ + string(SharingScopeDelegatedServices), + string(SharingScopeTenant), + } +} + +func (s *SharingScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSharingScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSharingScope(input string) (*SharingScope, error) { + vals := map[string]SharingScope{ + "delegatedservices": SharingScopeDelegatedServices, + "tenant": SharingScopeTenant, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SharingScope(input) + return &out, nil +} + +type SyncMode string + +const ( + SyncModeAutomatic SyncMode = "Automatic" + SyncModeManual SyncMode = "Manual" +) + +func PossibleValuesForSyncMode() []string { + return []string{ + string(SyncModeAutomatic), + string(SyncModeManual), + } +} + +func (s *SyncMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSyncMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSyncMode(input string) (*SyncMode, error) { + vals := map[string]SyncMode{ + "automatic": SyncModeAutomatic, + "manual": SyncModeManual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SyncMode(input) + return &out, nil +} + +type TransportProtocol string + +const ( + TransportProtocolAll TransportProtocol = "All" + TransportProtocolTcp TransportProtocol = "Tcp" + TransportProtocolUdp TransportProtocol = "Udp" +) + +func PossibleValuesForTransportProtocol() []string { + return []string{ + string(TransportProtocolAll), + string(TransportProtocolTcp), + string(TransportProtocolUdp), + } +} + +func (s *TransportProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseTransportProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseTransportProtocol(input string) (*TransportProtocol, error) { + vals := map[string]TransportProtocol{ + "all": TransportProtocolAll, + "tcp": TransportProtocolTcp, + "udp": TransportProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := TransportProtocol(input) + return &out, nil +} + +type VirtualNetworkPrivateEndpointNetworkPolicies string + +const ( + VirtualNetworkPrivateEndpointNetworkPoliciesDisabled VirtualNetworkPrivateEndpointNetworkPolicies = "Disabled" + VirtualNetworkPrivateEndpointNetworkPoliciesEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "Enabled" + VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "NetworkSecurityGroupEnabled" + VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "RouteTableEnabled" +) + +func PossibleValuesForVirtualNetworkPrivateEndpointNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateEndpointNetworkPoliciesDisabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled), + } +} + +func (s *VirtualNetworkPrivateEndpointNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateEndpointNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateEndpointNetworkPolicies(input string) (*VirtualNetworkPrivateEndpointNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateEndpointNetworkPolicies{ + "disabled": VirtualNetworkPrivateEndpointNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateEndpointNetworkPoliciesEnabled, + "networksecuritygroupenabled": VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled, + "routetableenabled": VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateEndpointNetworkPolicies(input) + return &out, nil +} + +type VirtualNetworkPrivateLinkServiceNetworkPolicies string + +const ( + VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Disabled" + VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Enabled" +) + +func PossibleValuesForVirtualNetworkPrivateLinkServiceNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled), + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled), + } +} + +func (s *VirtualNetworkPrivateLinkServiceNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateLinkServiceNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateLinkServiceNetworkPolicies(input string) (*VirtualNetworkPrivateLinkServiceNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateLinkServiceNetworkPolicies{ + "disabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateLinkServiceNetworkPolicies(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/id_networkprofile.go b/resource-manager/network/2024-01-01/networkprofiles/id_networkprofile.go new file mode 100644 index 00000000000..b1bbf9c9343 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/id_networkprofile.go @@ -0,0 +1,130 @@ +package networkprofiles + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NetworkProfileId{}) +} + +var _ resourceids.ResourceId = &NetworkProfileId{} + +// NetworkProfileId is a struct representing the Resource ID for a Network Profile +type NetworkProfileId struct { + SubscriptionId string + ResourceGroupName string + NetworkProfileName string +} + +// NewNetworkProfileID returns a new NetworkProfileId struct +func NewNetworkProfileID(subscriptionId string, resourceGroupName string, networkProfileName string) NetworkProfileId { + return NetworkProfileId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkProfileName: networkProfileName, + } +} + +// ParseNetworkProfileID parses 'input' into a NetworkProfileId +func ParseNetworkProfileID(input string) (*NetworkProfileId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkProfileId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkProfileId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNetworkProfileIDInsensitively parses 'input' case-insensitively into a NetworkProfileId +// note: this method should only be used for API response data and not user input +func ParseNetworkProfileIDInsensitively(input string) (*NetworkProfileId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkProfileId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkProfileId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NetworkProfileId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkProfileName, ok = input.Parsed["networkProfileName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkProfileName", input) + } + + return nil +} + +// ValidateNetworkProfileID checks that 'input' can be parsed as a Network Profile ID +func ValidateNetworkProfileID(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 := ParseNetworkProfileID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Network Profile ID +func (id NetworkProfileId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkProfiles/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkProfileName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Network Profile ID +func (id NetworkProfileId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkProfiles", "networkProfiles", "networkProfiles"), + resourceids.UserSpecifiedSegment("networkProfileName", "networkProfileValue"), + } +} + +// String returns a human-readable description of this Network Profile ID +func (id NetworkProfileId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Profile Name: %q", id.NetworkProfileName), + } + return fmt.Sprintf("Network Profile (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/id_networkprofile_test.go b/resource-manager/network/2024-01-01/networkprofiles/id_networkprofile_test.go new file mode 100644 index 00000000000..934223e4aee --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/id_networkprofile_test.go @@ -0,0 +1,282 @@ +package networkprofiles + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NetworkProfileId{} + +func TestNewNetworkProfileID(t *testing.T) { + id := NewNetworkProfileID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkProfileValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkProfileName != "networkProfileValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkProfileName'", id.NetworkProfileName, "networkProfileValue") + } +} + +func TestFormatNetworkProfileID(t *testing.T) { + actual := NewNetworkProfileID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkProfileValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkProfiles/networkProfileValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNetworkProfileID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkProfileId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkProfiles", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkProfiles/networkProfileValue", + Expected: &NetworkProfileId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkProfileName: "networkProfileValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkProfiles/networkProfileValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkProfileID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkProfileName != v.Expected.NetworkProfileName { + t.Fatalf("Expected %q but got %q for NetworkProfileName", v.Expected.NetworkProfileName, actual.NetworkProfileName) + } + + } +} + +func TestParseNetworkProfileIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkProfileId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkProfiles", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkPrOfIlEs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkProfiles/networkProfileValue", + Expected: &NetworkProfileId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkProfileName: "networkProfileValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkProfiles/networkProfileValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkPrOfIlEs/nEtWoRkPrOfIlEvAlUe", + Expected: &NetworkProfileId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkProfileName: "nEtWoRkPrOfIlEvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkPrOfIlEs/nEtWoRkPrOfIlEvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkProfileIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkProfileName != v.Expected.NetworkProfileName { + t.Fatalf("Expected %q but got %q for NetworkProfileName", v.Expected.NetworkProfileName, actual.NetworkProfileName) + } + + } +} + +func TestSegmentsForNetworkProfileId(t *testing.T) { + segments := NetworkProfileId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NetworkProfileId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/method_createorupdate.go b/resource-manager/network/2024-01-01/networkprofiles/method_createorupdate.go new file mode 100644 index 00000000000..94d3a856780 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/method_createorupdate.go @@ -0,0 +1,59 @@ +package networkprofiles + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkProfile +} + +// CreateOrUpdate ... +func (c NetworkProfilesClient) CreateOrUpdate(ctx context.Context, id NetworkProfileId, input NetworkProfile) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkProfile + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/method_delete.go b/resource-manager/network/2024-01-01/networkprofiles/method_delete.go new file mode 100644 index 00000000000..c5564f89c85 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/method_delete.go @@ -0,0 +1,71 @@ +package networkprofiles + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c NetworkProfilesClient) Delete(ctx context.Context, id NetworkProfileId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c NetworkProfilesClient) DeleteThenPoll(ctx context.Context, id NetworkProfileId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/method_get.go b/resource-manager/network/2024-01-01/networkprofiles/method_get.go new file mode 100644 index 00000000000..3b462d08204 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/method_get.go @@ -0,0 +1,83 @@ +package networkprofiles + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkProfile +} + +type GetOperationOptions struct { + Expand *string +} + +func DefaultGetOperationOptions() GetOperationOptions { + return GetOperationOptions{} +} + +func (o GetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// Get ... +func (c NetworkProfilesClient) Get(ctx context.Context, id NetworkProfileId, options GetOperationOptions) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkProfile + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/method_list.go b/resource-manager/network/2024-01-01/networkprofiles/method_list.go new file mode 100644 index 00000000000..4adcbe6c116 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/method_list.go @@ -0,0 +1,93 @@ +package networkprofiles + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NetworkProfile +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []NetworkProfile +} + +// List ... +func (c NetworkProfilesClient) List(ctx context.Context, id commonids.ResourceGroupId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/networkProfiles", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NetworkProfile `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c NetworkProfilesClient) ListComplete(ctx context.Context, id commonids.ResourceGroupId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, NetworkProfileOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c NetworkProfilesClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate NetworkProfileOperationPredicate) (result ListCompleteResult, err error) { + items := make([]NetworkProfile, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/method_listall.go b/resource-manager/network/2024-01-01/networkprofiles/method_listall.go new file mode 100644 index 00000000000..8d27928489b --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/method_listall.go @@ -0,0 +1,93 @@ +package networkprofiles + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAllOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NetworkProfile +} + +type ListAllCompleteResult struct { + LatestHttpResponse *http.Response + Items []NetworkProfile +} + +// ListAll ... +func (c NetworkProfilesClient) ListAll(ctx context.Context, id commonids.SubscriptionId) (result ListAllOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/networkProfiles", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NetworkProfile `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListAllComplete retrieves all the results into a single object +func (c NetworkProfilesClient) ListAllComplete(ctx context.Context, id commonids.SubscriptionId) (ListAllCompleteResult, error) { + return c.ListAllCompleteMatchingPredicate(ctx, id, NetworkProfileOperationPredicate{}) +} + +// ListAllCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c NetworkProfilesClient) ListAllCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate NetworkProfileOperationPredicate) (result ListAllCompleteResult, err error) { + items := make([]NetworkProfile, 0) + + resp, err := c.ListAll(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListAllCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/method_updatetags.go b/resource-manager/network/2024-01-01/networkprofiles/method_updatetags.go new file mode 100644 index 00000000000..f0bfb2f14f7 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/method_updatetags.go @@ -0,0 +1,58 @@ +package networkprofiles + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkProfile +} + +// UpdateTags ... +func (c NetworkProfilesClient) UpdateTags(ctx context.Context, id NetworkProfileId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkProfile + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_applicationgatewaybackendaddress.go b/resource-manager/network/2024-01-01/networkprofiles/model_applicationgatewaybackendaddress.go new file mode 100644 index 00000000000..0452928be63 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_applicationgatewaybackendaddress.go @@ -0,0 +1,9 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddress struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_applicationgatewaybackendaddresspool.go b/resource-manager/network/2024-01-01/networkprofiles/model_applicationgatewaybackendaddresspool.go new file mode 100644 index 00000000000..03bee9ad4ae --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_applicationgatewaybackendaddresspool.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_applicationgatewaybackendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_applicationgatewaybackendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..7a1eea7761a --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_applicationgatewaybackendaddresspoolpropertiesformat.go @@ -0,0 +1,10 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPoolPropertiesFormat struct { + BackendAddresses *[]ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"` + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_applicationgatewayipconfiguration.go b/resource-manager/network/2024-01-01/networkprofiles/model_applicationgatewayipconfiguration.go new file mode 100644 index 00000000000..4e9c7a30701 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_applicationgatewayipconfiguration.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_applicationgatewayipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_applicationgatewayipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..b3a527e5678 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_applicationgatewayipconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/networkprofiles/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..a3c9e8c4026 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..962d80f7a83 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_backendaddresspool.go b/resource-manager/network/2024-01-01/networkprofiles/model_backendaddresspool.go new file mode 100644 index 00000000000..b7491b172ed --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_backendaddresspool.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_backendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_backendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..d1e4d94bf27 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_backendaddresspoolpropertiesformat.go @@ -0,0 +1,19 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPoolPropertiesFormat struct { + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + DrainPeriodInSeconds *int64 `json:"drainPeriodInSeconds,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancerBackendAddresses *[]LoadBalancerBackendAddress `json:"loadBalancerBackendAddresses,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + Location *string `json:"location,omitempty"` + OutboundRule *SubResource `json:"outboundRule,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SyncMode *SyncMode `json:"syncMode,omitempty"` + TunnelInterfaces *[]GatewayLoadBalancerTunnelInterface `json:"tunnelInterfaces,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_containernetworkinterface.go b/resource-manager/network/2024-01-01/networkprofiles/model_containernetworkinterface.go new file mode 100644 index 00000000000..8319fdf7442 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_containernetworkinterface.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ContainerNetworkInterface struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ContainerNetworkInterfacePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_containernetworkinterfaceconfiguration.go b/resource-manager/network/2024-01-01/networkprofiles/model_containernetworkinterfaceconfiguration.go new file mode 100644 index 00000000000..1d0f89e15b4 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_containernetworkinterfaceconfiguration.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ContainerNetworkInterfaceConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ContainerNetworkInterfaceConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_containernetworkinterfaceconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_containernetworkinterfaceconfigurationpropertiesformat.go new file mode 100644 index 00000000000..1e85f54153a --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_containernetworkinterfaceconfigurationpropertiesformat.go @@ -0,0 +1,10 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ContainerNetworkInterfaceConfigurationPropertiesFormat struct { + ContainerNetworkInterfaces *[]SubResource `json:"containerNetworkInterfaces,omitempty"` + IPConfigurations *[]IPConfigurationProfile `json:"ipConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_containernetworkinterfaceipconfiguration.go b/resource-manager/network/2024-01-01/networkprofiles/model_containernetworkinterfaceipconfiguration.go new file mode 100644 index 00000000000..e74b8c6d59e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_containernetworkinterfaceipconfiguration.go @@ -0,0 +1,11 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ContainerNetworkInterfaceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ContainerNetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_containernetworkinterfaceipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_containernetworkinterfaceipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..07db6c62c7a --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_containernetworkinterfaceipconfigurationpropertiesformat.go @@ -0,0 +1,8 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ContainerNetworkInterfaceIPConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_containernetworkinterfacepropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_containernetworkinterfacepropertiesformat.go new file mode 100644 index 00000000000..1c1efc89484 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_containernetworkinterfacepropertiesformat.go @@ -0,0 +1,11 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ContainerNetworkInterfacePropertiesFormat struct { + Container *SubResource `json:"container,omitempty"` + ContainerNetworkInterfaceConfiguration *ContainerNetworkInterfaceConfiguration `json:"containerNetworkInterfaceConfiguration,omitempty"` + IPConfigurations *[]ContainerNetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_customdnsconfigpropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_customdnsconfigpropertiesformat.go new file mode 100644 index 00000000000..4860aa0e2f3 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_customdnsconfigpropertiesformat.go @@ -0,0 +1,9 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomDnsConfigPropertiesFormat struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_ddossettings.go b/resource-manager/network/2024-01-01/networkprofiles/model_ddossettings.go new file mode 100644 index 00000000000..c5dc78bcc06 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_ddossettings.go @@ -0,0 +1,9 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettings struct { + DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"` + ProtectionMode *DdosSettingsProtectionMode `json:"protectionMode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_delegation.go b/resource-manager/network/2024-01-01/networkprofiles/model_delegation.go new file mode 100644 index 00000000000..0195b7d30c3 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_delegation.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Delegation struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceDelegationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_flowlog.go b/resource-manager/network/2024-01-01/networkprofiles/model_flowlog.go new file mode 100644 index 00000000000..44e961c1ca2 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_flowlog.go @@ -0,0 +1,19 @@ +package networkprofiles + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLog struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FlowLogPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/networkprofiles/model_flowlogformatparameters.go new file mode 100644 index 00000000000..b92557232ff --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_flowlogpropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_flowlogpropertiesformat.go new file mode 100644 index 00000000000..adaaab9bc0c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_flowlogpropertiesformat.go @@ -0,0 +1,15 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogPropertiesFormat struct { + Enabled *bool `json:"enabled,omitempty"` + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` + TargetResourceGuid *string `json:"targetResourceGuid,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_frontendipconfiguration.go b/resource-manager/network/2024-01-01/networkprofiles/model_frontendipconfiguration.go new file mode 100644 index 00000000000..db5d6938998 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_frontendipconfiguration.go @@ -0,0 +1,17 @@ +package networkprofiles + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_frontendipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_frontendipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..82aea183299 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_frontendipconfigurationpropertiesformat.go @@ -0,0 +1,19 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfigurationPropertiesFormat struct { + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + InboundNatPools *[]SubResource `json:"inboundNatPools,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_gatewayloadbalancertunnelinterface.go b/resource-manager/network/2024-01-01/networkprofiles/model_gatewayloadbalancertunnelinterface.go new file mode 100644 index 00000000000..cb7a2956f0e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_gatewayloadbalancertunnelinterface.go @@ -0,0 +1,11 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayLoadBalancerTunnelInterface struct { + Identifier *int64 `json:"identifier,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *GatewayLoadBalancerTunnelProtocol `json:"protocol,omitempty"` + Type *GatewayLoadBalancerTunnelInterfaceType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_inboundnatrule.go b/resource-manager/network/2024-01-01/networkprofiles/model_inboundnatrule.go new file mode 100644 index 00000000000..6b089d6c65c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_inboundnatrule.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundNatRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_inboundnatrulepropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_inboundnatrulepropertiesformat.go new file mode 100644 index 00000000000..0a3a0779932 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_inboundnatrulepropertiesformat.go @@ -0,0 +1,19 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendIPConfiguration *NetworkInterfaceIPConfiguration `json:"backendIPConfiguration,omitempty"` + BackendPort *int64 `json:"backendPort,omitempty"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + FrontendPortRangeEnd *int64 `json:"frontendPortRangeEnd,omitempty"` + FrontendPortRangeStart *int64 `json:"frontendPortRangeStart,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol *TransportProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_ipconfiguration.go b/resource-manager/network/2024-01-01/networkprofiles/model_ipconfiguration.go new file mode 100644 index 00000000000..940760b2c92 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_ipconfiguration.go @@ -0,0 +1,11 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_ipconfigurationprofile.go b/resource-manager/network/2024-01-01/networkprofiles/model_ipconfigurationprofile.go new file mode 100644 index 00000000000..373777029b1 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_ipconfigurationprofile.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationProfilePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_ipconfigurationprofilepropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_ipconfigurationprofilepropertiesformat.go new file mode 100644 index 00000000000..ad8fa03c4f4 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_ipconfigurationprofilepropertiesformat.go @@ -0,0 +1,9 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfilePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_ipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_ipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..b90aa191e92 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_ipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_iptag.go b/resource-manager/network/2024-01-01/networkprofiles/model_iptag.go new file mode 100644 index 00000000000..2e45e454060 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_iptag.go @@ -0,0 +1,9 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPTag struct { + IPTagType *string `json:"ipTagType,omitempty"` + Tag *string `json:"tag,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_loadbalancerbackendaddress.go b/resource-manager/network/2024-01-01/networkprofiles/model_loadbalancerbackendaddress.go new file mode 100644 index 00000000000..4484795804f --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_loadbalancerbackendaddress.go @@ -0,0 +1,9 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddress struct { + Name *string `json:"name,omitempty"` + Properties *LoadBalancerBackendAddressPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_loadbalancerbackendaddresspropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_loadbalancerbackendaddresspropertiesformat.go new file mode 100644 index 00000000000..203a8fab13e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_loadbalancerbackendaddresspropertiesformat.go @@ -0,0 +1,14 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPropertiesFormat struct { + AdminState *LoadBalancerBackendAddressAdminState `json:"adminState,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + InboundNatRulesPortMapping *[]NatRulePortMapping `json:"inboundNatRulesPortMapping,omitempty"` + LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIPConfiguration,omitempty"` + NetworkInterfaceIPConfiguration *SubResource `json:"networkInterfaceIPConfiguration,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_natgateway.go b/resource-manager/network/2024-01-01/networkprofiles/model_natgateway.go new file mode 100644 index 00000000000..6197c623763 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_natgateway.go @@ -0,0 +1,20 @@ +package networkprofiles + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"` + Sku *NatGatewaySku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_natgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_natgatewaypropertiesformat.go new file mode 100644 index 00000000000..1c1b918fa25 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_natgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayPropertiesFormat struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]SubResource `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_natgatewaysku.go b/resource-manager/network/2024-01-01/networkprofiles/model_natgatewaysku.go new file mode 100644 index 00000000000..c3c91d290f2 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_natgatewaysku.go @@ -0,0 +1,8 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySku struct { + Name *NatGatewaySkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_natruleportmapping.go b/resource-manager/network/2024-01-01/networkprofiles/model_natruleportmapping.go new file mode 100644 index 00000000000..033011c8a8b --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_natruleportmapping.go @@ -0,0 +1,10 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulePortMapping struct { + BackendPort *int64 `json:"backendPort,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + InboundNatRuleName *string `json:"inboundNatRuleName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_networkinterface.go b/resource-manager/network/2024-01-01/networkprofiles/model_networkinterface.go new file mode 100644 index 00000000000..68e610eeff9 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_networkinterface.go @@ -0,0 +1,19 @@ +package networkprofiles + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterface struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfacePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_networkinterfacednssettings.go b/resource-manager/network/2024-01-01/networkprofiles/model_networkinterfacednssettings.go new file mode 100644 index 00000000000..8451913a32f --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_networkinterfacednssettings.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceDnsSettings struct { + AppliedDnsServers *[]string `json:"appliedDnsServers,omitempty"` + DnsServers *[]string `json:"dnsServers,omitempty"` + InternalDnsNameLabel *string `json:"internalDnsNameLabel,omitempty"` + InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty"` + InternalFqdn *string `json:"internalFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_networkinterfaceipconfiguration.go b/resource-manager/network/2024-01-01/networkprofiles/model_networkinterfaceipconfiguration.go new file mode 100644 index 00000000000..139342da931 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_networkinterfaceipconfiguration.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go b/resource-manager/network/2024-01-01/networkprofiles/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go new file mode 100644 index 00000000000..2456f55b927 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go @@ -0,0 +1,10 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties struct { + Fqdns *[]string `json:"fqdns,omitempty"` + GroupId *string `json:"groupId,omitempty"` + RequiredMemberName *string `json:"requiredMemberName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_networkinterfaceipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_networkinterfaceipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..34110f0cec5 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_networkinterfaceipconfigurationpropertiesformat.go @@ -0,0 +1,22 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPropertiesFormat struct { + ApplicationGatewayBackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"applicationGatewayBackendAddressPools,omitempty"` + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + LoadBalancerBackendAddressPools *[]BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"` + LoadBalancerInboundNatRules *[]InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressPrefixLength *int64 `json:"privateIPAddressPrefixLength,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + PrivateLinkConnectionProperties *NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties `json:"privateLinkConnectionProperties,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` + VirtualNetworkTaps *[]VirtualNetworkTap `json:"virtualNetworkTaps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_networkinterfacepropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_networkinterfacepropertiesformat.go new file mode 100644 index 00000000000..8e4c0b29d33 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_networkinterfacepropertiesformat.go @@ -0,0 +1,29 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfacePropertiesFormat struct { + AuxiliaryMode *NetworkInterfaceAuxiliaryMode `json:"auxiliaryMode,omitempty"` + AuxiliarySku *NetworkInterfaceAuxiliarySku `json:"auxiliarySku,omitempty"` + DisableTcpStateTracking *bool `json:"disableTcpStateTracking,omitempty"` + DnsSettings *NetworkInterfaceDnsSettings `json:"dnsSettings,omitempty"` + DscpConfiguration *SubResource `json:"dscpConfiguration,omitempty"` + EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"` + EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"` + HostedWorkloads *[]string `json:"hostedWorkloads,omitempty"` + IPConfigurations *[]NetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + MacAddress *string `json:"macAddress,omitempty"` + MigrationPhase *NetworkInterfaceMigrationPhase `json:"migrationPhase,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + NicType *NetworkInterfaceNicType `json:"nicType,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkService *PrivateLinkService `json:"privateLinkService,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + TapConfigurations *[]NetworkInterfaceTapConfiguration `json:"tapConfigurations,omitempty"` + VirtualMachine *SubResource `json:"virtualMachine,omitempty"` + VnetEncryptionSupported *bool `json:"vnetEncryptionSupported,omitempty"` + WorkloadType *string `json:"workloadType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_networkinterfacetapconfiguration.go b/resource-manager/network/2024-01-01/networkprofiles/model_networkinterfacetapconfiguration.go new file mode 100644 index 00000000000..daf580431c6 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_networkinterfacetapconfiguration.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceTapConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_networkinterfacetapconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_networkinterfacetapconfigurationpropertiesformat.go new file mode 100644 index 00000000000..8a7e2121888 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_networkinterfacetapconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualNetworkTap *VirtualNetworkTap `json:"virtualNetworkTap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_networkprofile.go b/resource-manager/network/2024-01-01/networkprofiles/model_networkprofile.go new file mode 100644 index 00000000000..b11865bfdd6 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_networkprofile.go @@ -0,0 +1,14 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkProfilePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_networkprofilepropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_networkprofilepropertiesformat.go new file mode 100644 index 00000000000..cf66d34892c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_networkprofilepropertiesformat.go @@ -0,0 +1,11 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkProfilePropertiesFormat struct { + ContainerNetworkInterfaceConfigurations *[]ContainerNetworkInterfaceConfiguration `json:"containerNetworkInterfaceConfigurations,omitempty"` + ContainerNetworkInterfaces *[]ContainerNetworkInterface `json:"containerNetworkInterfaces,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_networksecuritygroup.go b/resource-manager/network/2024-01-01/networkprofiles/model_networksecuritygroup.go new file mode 100644 index 00000000000..b24d89a9bdf --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_networksecuritygroup.go @@ -0,0 +1,14 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_networksecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_networksecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..4a7e6641883 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_networksecuritygrouppropertiesformat.go @@ -0,0 +1,15 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupPropertiesFormat struct { + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + FlowLogs *[]FlowLog `json:"flowLogs,omitempty"` + FlushConnection *bool `json:"flushConnection,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_privateendpoint.go b/resource-manager/network/2024-01-01/networkprofiles/model_privateendpoint.go new file mode 100644 index 00000000000..5fcc4823c22 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_privateendpoint.go @@ -0,0 +1,19 @@ +package networkprofiles + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpoint struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_privateendpointconnection.go b/resource-manager/network/2024-01-01/networkprofiles/model_privateendpointconnection.go new file mode 100644 index 00000000000..5ef26aa759d --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_privateendpointconnection.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_privateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/networkprofiles/model_privateendpointconnectionproperties.go new file mode 100644 index 00000000000..ae03a204241 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_privateendpointconnectionproperties.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateEndpointLocation *string `json:"privateEndpointLocation,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_privateendpointipconfiguration.go b/resource-manager/network/2024-01-01/networkprofiles/model_privateendpointipconfiguration.go new file mode 100644 index 00000000000..eb56313d0fe --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_privateendpointipconfiguration.go @@ -0,0 +1,11 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_privateendpointipconfigurationproperties.go b/resource-manager/network/2024-01-01/networkprofiles/model_privateendpointipconfigurationproperties.go new file mode 100644 index 00000000000..c252cc443f7 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_privateendpointipconfigurationproperties.go @@ -0,0 +1,10 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfigurationProperties struct { + GroupId *string `json:"groupId,omitempty"` + MemberName *string `json:"memberName,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_privateendpointproperties.go b/resource-manager/network/2024-01-01/networkprofiles/model_privateendpointproperties.go new file mode 100644 index 00000000000..d63068a30ea --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_privateendpointproperties.go @@ -0,0 +1,16 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointProperties struct { + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + CustomDnsConfigs *[]CustomDnsConfigPropertiesFormat `json:"customDnsConfigs,omitempty"` + CustomNetworkInterfaceName *string `json:"customNetworkInterfaceName,omitempty"` + IPConfigurations *[]PrivateEndpointIPConfiguration `json:"ipConfigurations,omitempty"` + ManualPrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"manualPrivateLinkServiceConnections,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"privateLinkServiceConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_privatelinkservice.go b/resource-manager/network/2024-01-01/networkprofiles/model_privatelinkservice.go new file mode 100644 index 00000000000..13e1f313103 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_privatelinkservice.go @@ -0,0 +1,19 @@ +package networkprofiles + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkService struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_privatelinkserviceconnection.go b/resource-manager/network/2024-01-01/networkprofiles/model_privatelinkserviceconnection.go new file mode 100644 index 00000000000..f7c7b981511 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_privatelinkserviceconnection.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_privatelinkserviceconnectionproperties.go b/resource-manager/network/2024-01-01/networkprofiles/model_privatelinkserviceconnectionproperties.go new file mode 100644 index 00000000000..36ba1ab614d --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_privatelinkserviceconnectionproperties.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionProperties struct { + GroupIds *[]string `json:"groupIds,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + PrivateLinkServiceId *string `json:"privateLinkServiceId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestMessage *string `json:"requestMessage,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_privatelinkserviceconnectionstate.go b/resource-manager/network/2024-01-01/networkprofiles/model_privatelinkserviceconnectionstate.go new file mode 100644 index 00000000000..6c4d7083fb9 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_privatelinkserviceconnectionstate.go @@ -0,0 +1,10 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionState struct { + ActionsRequired *string `json:"actionsRequired,omitempty"` + Description *string `json:"description,omitempty"` + Status *string `json:"status,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_privatelinkserviceipconfiguration.go b/resource-manager/network/2024-01-01/networkprofiles/model_privatelinkserviceipconfiguration.go new file mode 100644 index 00000000000..556206b6040 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_privatelinkserviceipconfiguration.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_privatelinkserviceipconfigurationproperties.go b/resource-manager/network/2024-01-01/networkprofiles/model_privatelinkserviceipconfigurationproperties.go new file mode 100644 index 00000000000..7cdb9347d51 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_privatelinkserviceipconfigurationproperties.go @@ -0,0 +1,13 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_privatelinkserviceproperties.go b/resource-manager/network/2024-01-01/networkprofiles/model_privatelinkserviceproperties.go new file mode 100644 index 00000000000..bc001bea3c0 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_privatelinkserviceproperties.go @@ -0,0 +1,17 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceProperties struct { + Alias *string `json:"alias,omitempty"` + AutoApproval *ResourceSet `json:"autoApproval,omitempty"` + EnableProxyProtocol *bool `json:"enableProxyProtocol,omitempty"` + Fqdns *[]string `json:"fqdns,omitempty"` + IPConfigurations *[]PrivateLinkServiceIPConfiguration `json:"ipConfigurations,omitempty"` + LoadBalancerFrontendIPConfigurations *[]FrontendIPConfiguration `json:"loadBalancerFrontendIpConfigurations,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Visibility *ResourceSet `json:"visibility,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_publicipaddress.go b/resource-manager/network/2024-01-01/networkprofiles/model_publicipaddress.go new file mode 100644 index 00000000000..040a0bb56e8 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_publicipaddress.go @@ -0,0 +1,22 @@ +package networkprofiles + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddress struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PublicIPAddressPropertiesFormat `json:"properties,omitempty"` + Sku *PublicIPAddressSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_publicipaddressdnssettings.go b/resource-manager/network/2024-01-01/networkprofiles/model_publicipaddressdnssettings.go new file mode 100644 index 00000000000..3172667a9f8 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_publicipaddressdnssettings.go @@ -0,0 +1,11 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressDnsSettings struct { + DomainNameLabel *string `json:"domainNameLabel,omitempty"` + DomainNameLabelScope *PublicIPAddressDnsSettingsDomainNameLabelScope `json:"domainNameLabelScope,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + ReverseFqdn *string `json:"reverseFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_publicipaddresspropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_publicipaddresspropertiesformat.go new file mode 100644 index 00000000000..9e8c3ce846b --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_publicipaddresspropertiesformat.go @@ -0,0 +1,23 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressPropertiesFormat struct { + DdosSettings *DdosSettings `json:"ddosSettings,omitempty"` + DeleteOption *DeleteOptions `json:"deleteOption,omitempty"` + DnsSettings *PublicIPAddressDnsSettings `json:"dnsSettings,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty"` + IPTags *[]IPTag `json:"ipTags,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + LinkedPublicIPAddress *PublicIPAddress `json:"linkedPublicIPAddress,omitempty"` + MigrationPhase *PublicIPAddressMigrationPhase `json:"migrationPhase,omitempty"` + NatGateway *NatGateway `json:"natGateway,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"` + PublicIPAllocationMethod *IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServicePublicIPAddress *PublicIPAddress `json:"servicePublicIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_publicipaddresssku.go b/resource-manager/network/2024-01-01/networkprofiles/model_publicipaddresssku.go new file mode 100644 index 00000000000..af7b63fcdc5 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_publicipaddresssku.go @@ -0,0 +1,9 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressSku struct { + Name *PublicIPAddressSkuName `json:"name,omitempty"` + Tier *PublicIPAddressSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_resourcenavigationlink.go b/resource-manager/network/2024-01-01/networkprofiles/model_resourcenavigationlink.go new file mode 100644 index 00000000000..d8706b6bc4d --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_resourcenavigationlink.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ResourceNavigationLinkFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_resourcenavigationlinkformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_resourcenavigationlinkformat.go new file mode 100644 index 00000000000..b9a518cd2ae --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_resourcenavigationlinkformat.go @@ -0,0 +1,10 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLinkFormat struct { + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_resourceset.go b/resource-manager/network/2024-01-01/networkprofiles/model_resourceset.go new file mode 100644 index 00000000000..028384b4467 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_resourceset.go @@ -0,0 +1,8 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceSet struct { + Subscriptions *[]string `json:"subscriptions,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/networkprofiles/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..a39da241fee --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_route.go b/resource-manager/network/2024-01-01/networkprofiles/model_route.go new file mode 100644 index 00000000000..01d1b1aee3b --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_route.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Route struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RoutePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_routepropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_routepropertiesformat.go new file mode 100644 index 00000000000..a0fba15da36 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_routepropertiesformat.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutePropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + HasBgpOverride *bool `json:"hasBgpOverride,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + NextHopType RouteNextHopType `json:"nextHopType"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_routetable.go b/resource-manager/network/2024-01-01/networkprofiles/model_routetable.go new file mode 100644 index 00000000000..e98510e4a99 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_routetable.go @@ -0,0 +1,14 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTable struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteTablePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_routetablepropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_routetablepropertiesformat.go new file mode 100644 index 00000000000..d3d001ea19c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_routetablepropertiesformat.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTablePropertiesFormat struct { + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Routes *[]Route `json:"routes,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_securityrule.go b/resource-manager/network/2024-01-01/networkprofiles/model_securityrule.go new file mode 100644 index 00000000000..d3a303b69a8 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_securityrule.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_securityrulepropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_securityrulepropertiesformat.go new file mode 100644 index 00000000000..5a6f0550760 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_securityrulepropertiesformat.go @@ -0,0 +1,23 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulePropertiesFormat struct { + Access SecurityRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction SecurityRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_serviceassociationlink.go b/resource-manager/network/2024-01-01/networkprofiles/model_serviceassociationlink.go new file mode 100644 index 00000000000..185baa31acb --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_serviceassociationlink.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceAssociationLinkPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_serviceassociationlinkpropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_serviceassociationlinkpropertiesformat.go new file mode 100644 index 00000000000..a8ddcda5b29 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_serviceassociationlinkpropertiesformat.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLinkPropertiesFormat struct { + AllowDelete *bool `json:"allowDelete,omitempty"` + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + Locations *[]string `json:"locations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_servicedelegationpropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_servicedelegationpropertiesformat.go new file mode 100644 index 00000000000..bbe89cb1074 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_servicedelegationpropertiesformat.go @@ -0,0 +1,10 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceDelegationPropertiesFormat struct { + Actions *[]string `json:"actions,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_serviceendpointpolicy.go b/resource-manager/network/2024-01-01/networkprofiles/model_serviceendpointpolicy.go new file mode 100644 index 00000000000..fc7682e49f7 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_serviceendpointpolicy.go @@ -0,0 +1,15 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Kind *string `json:"kind,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_serviceendpointpolicydefinition.go b/resource-manager/network/2024-01-01/networkprofiles/model_serviceendpointpolicydefinition.go new file mode 100644 index 00000000000..49d3abcfdf1 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_serviceendpointpolicydefinition.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinition struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_serviceendpointpolicydefinitionpropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_serviceendpointpolicydefinitionpropertiesformat.go new file mode 100644 index 00000000000..59c9a98a4df --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_serviceendpointpolicydefinitionpropertiesformat.go @@ -0,0 +1,11 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionPropertiesFormat struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` + ServiceResources *[]string `json:"serviceResources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_serviceendpointpolicypropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_serviceendpointpolicypropertiesformat.go new file mode 100644 index 00000000000..c41bd5c801b --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_serviceendpointpolicypropertiesformat.go @@ -0,0 +1,13 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyPropertiesFormat struct { + ContextualServiceEndpointPolicies *[]string `json:"contextualServiceEndpointPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServiceAlias *string `json:"serviceAlias,omitempty"` + ServiceEndpointPolicyDefinitions *[]ServiceEndpointPolicyDefinition `json:"serviceEndpointPolicyDefinitions,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_serviceendpointpropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_serviceendpointpropertiesformat.go new file mode 100644 index 00000000000..b96cc0a7ddc --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_serviceendpointpropertiesformat.go @@ -0,0 +1,11 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPropertiesFormat struct { + Locations *[]string `json:"locations,omitempty"` + NetworkIdentifier *SubResource `json:"networkIdentifier,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_subnet.go b/resource-manager/network/2024-01-01/networkprofiles/model_subnet.go new file mode 100644 index 00000000000..92e0d90839e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_subnet.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Subnet struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SubnetPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_subnetpropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_subnetpropertiesformat.go new file mode 100644 index 00000000000..1e4d43ddb3d --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_subnetpropertiesformat.go @@ -0,0 +1,28 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + ApplicationGatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"applicationGatewayIPConfigurations,omitempty"` + DefaultOutboundAccess *bool `json:"defaultOutboundAccess,omitempty"` + Delegations *[]Delegation `json:"delegations,omitempty"` + IPAllocations *[]SubResource `json:"ipAllocations,omitempty"` + IPConfigurationProfiles *[]IPConfigurationProfile `json:"ipConfigurationProfiles,omitempty"` + IPConfigurations *[]IPConfiguration `json:"ipConfigurations,omitempty"` + NatGateway *SubResource `json:"natGateway,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + PrivateEndpointNetworkPolicies *VirtualNetworkPrivateEndpointNetworkPolicies `json:"privateEndpointNetworkPolicies,omitempty"` + PrivateEndpoints *[]PrivateEndpoint `json:"privateEndpoints,omitempty"` + PrivateLinkServiceNetworkPolicies *VirtualNetworkPrivateLinkServiceNetworkPolicies `json:"privateLinkServiceNetworkPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Purpose *string `json:"purpose,omitempty"` + ResourceNavigationLinks *[]ResourceNavigationLink `json:"resourceNavigationLinks,omitempty"` + RouteTable *RouteTable `json:"routeTable,omitempty"` + ServiceAssociationLinks *[]ServiceAssociationLink `json:"serviceAssociationLinks,omitempty"` + ServiceEndpointPolicies *[]ServiceEndpointPolicy `json:"serviceEndpointPolicies,omitempty"` + ServiceEndpoints *[]ServiceEndpointPropertiesFormat `json:"serviceEndpoints,omitempty"` + SharingScope *SharingScope `json:"sharingScope,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_subresource.go b/resource-manager/network/2024-01-01/networkprofiles/model_subresource.go new file mode 100644 index 00000000000..e7710003aae --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_subresource.go @@ -0,0 +1,8 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_tagsobject.go b/resource-manager/network/2024-01-01/networkprofiles/model_tagsobject.go new file mode 100644 index 00000000000..4b300699106 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_tagsobject.go @@ -0,0 +1,8 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/networkprofiles/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..43e8bd0f29a --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/networkprofiles/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..67da0952e73 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_virtualnetworktap.go b/resource-manager/network/2024-01-01/networkprofiles/model_virtualnetworktap.go new file mode 100644 index 00000000000..21bb960f571 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_virtualnetworktap.go @@ -0,0 +1,14 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkTapPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/model_virtualnetworktappropertiesformat.go b/resource-manager/network/2024-01-01/networkprofiles/model_virtualnetworktappropertiesformat.go new file mode 100644 index 00000000000..3e8521e5beb --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/model_virtualnetworktappropertiesformat.go @@ -0,0 +1,13 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapPropertiesFormat struct { + DestinationLoadBalancerFrontEndIPConfiguration *FrontendIPConfiguration `json:"destinationLoadBalancerFrontEndIPConfiguration,omitempty"` + DestinationNetworkInterfaceIPConfiguration *NetworkInterfaceIPConfiguration `json:"destinationNetworkInterfaceIPConfiguration,omitempty"` + DestinationPort *int64 `json:"destinationPort,omitempty"` + NetworkInterfaceTapConfigurations *[]NetworkInterfaceTapConfiguration `json:"networkInterfaceTapConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/predicates.go b/resource-manager/network/2024-01-01/networkprofiles/predicates.go new file mode 100644 index 00000000000..c8b72ff46b2 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/predicates.go @@ -0,0 +1,37 @@ +package networkprofiles + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkProfileOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p NetworkProfileOperationPredicate) Matches(input NetworkProfile) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/networkprofiles/version.go b/resource-manager/network/2024-01-01/networkprofiles/version.go new file mode 100644 index 00000000000..7589fda470c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkprofiles/version.go @@ -0,0 +1,12 @@ +package networkprofiles + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/networkprofiles/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/README.md b/resource-manager/network/2024-01-01/networksecuritygroups/README.md new file mode 100644 index 00000000000..6fed77450e0 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/README.md @@ -0,0 +1,121 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networksecuritygroups` Documentation + +The `networksecuritygroups` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networksecuritygroups" +``` + + +### Client Initialization + +```go +client := networksecuritygroups.NewNetworkSecurityGroupsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `NetworkSecurityGroupsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := networksecuritygroups.NewNetworkSecurityGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkSecurityGroupValue") + +payload := networksecuritygroups.NetworkSecurityGroup{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `NetworkSecurityGroupsClient.Delete` + +```go +ctx := context.TODO() +id := networksecuritygroups.NewNetworkSecurityGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkSecurityGroupValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `NetworkSecurityGroupsClient.Get` + +```go +ctx := context.TODO() +id := networksecuritygroups.NewNetworkSecurityGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkSecurityGroupValue") + +read, err := client.Get(ctx, id, networksecuritygroups.DefaultGetOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkSecurityGroupsClient.List` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `NetworkSecurityGroupsClient.ListAll` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.ListAll(ctx, id)` can be used to do batched pagination +items, err := client.ListAllComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `NetworkSecurityGroupsClient.UpdateTags` + +```go +ctx := context.TODO() +id := networksecuritygroups.NewNetworkSecurityGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkSecurityGroupValue") + +payload := networksecuritygroups.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/client.go b/resource-manager/network/2024-01-01/networksecuritygroups/client.go new file mode 100644 index 00000000000..a8d26110c7c --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/client.go @@ -0,0 +1,26 @@ +package networksecuritygroups + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupsClient struct { + Client *resourcemanager.Client +} + +func NewNetworkSecurityGroupsClientWithBaseURI(sdkApi sdkEnv.Api) (*NetworkSecurityGroupsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "networksecuritygroups", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating NetworkSecurityGroupsClient: %+v", err) + } + + return &NetworkSecurityGroupsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/constants.go b/resource-manager/network/2024-01-01/networksecuritygroups/constants.go new file mode 100644 index 00000000000..5a93db64332 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/constants.go @@ -0,0 +1,1198 @@ +package networksecuritygroups + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettingsProtectionMode string + +const ( + DdosSettingsProtectionModeDisabled DdosSettingsProtectionMode = "Disabled" + DdosSettingsProtectionModeEnabled DdosSettingsProtectionMode = "Enabled" + DdosSettingsProtectionModeVirtualNetworkInherited DdosSettingsProtectionMode = "VirtualNetworkInherited" +) + +func PossibleValuesForDdosSettingsProtectionMode() []string { + return []string{ + string(DdosSettingsProtectionModeDisabled), + string(DdosSettingsProtectionModeEnabled), + string(DdosSettingsProtectionModeVirtualNetworkInherited), + } +} + +func (s *DdosSettingsProtectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDdosSettingsProtectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDdosSettingsProtectionMode(input string) (*DdosSettingsProtectionMode, error) { + vals := map[string]DdosSettingsProtectionMode{ + "disabled": DdosSettingsProtectionModeDisabled, + "enabled": DdosSettingsProtectionModeEnabled, + "virtualnetworkinherited": DdosSettingsProtectionModeVirtualNetworkInherited, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DdosSettingsProtectionMode(input) + return &out, nil +} + +type DeleteOptions string + +const ( + DeleteOptionsDelete DeleteOptions = "Delete" + DeleteOptionsDetach DeleteOptions = "Detach" +) + +func PossibleValuesForDeleteOptions() []string { + return []string{ + string(DeleteOptionsDelete), + string(DeleteOptionsDetach), + } +} + +func (s *DeleteOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteOptions(input string) (*DeleteOptions, error) { + vals := map[string]DeleteOptions{ + "delete": DeleteOptionsDelete, + "detach": DeleteOptionsDetach, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteOptions(input) + return &out, nil +} + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelInterfaceType string + +const ( + GatewayLoadBalancerTunnelInterfaceTypeExternal GatewayLoadBalancerTunnelInterfaceType = "External" + GatewayLoadBalancerTunnelInterfaceTypeInternal GatewayLoadBalancerTunnelInterfaceType = "Internal" + GatewayLoadBalancerTunnelInterfaceTypeNone GatewayLoadBalancerTunnelInterfaceType = "None" +) + +func PossibleValuesForGatewayLoadBalancerTunnelInterfaceType() []string { + return []string{ + string(GatewayLoadBalancerTunnelInterfaceTypeExternal), + string(GatewayLoadBalancerTunnelInterfaceTypeInternal), + string(GatewayLoadBalancerTunnelInterfaceTypeNone), + } +} + +func (s *GatewayLoadBalancerTunnelInterfaceType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelInterfaceType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelInterfaceType(input string) (*GatewayLoadBalancerTunnelInterfaceType, error) { + vals := map[string]GatewayLoadBalancerTunnelInterfaceType{ + "external": GatewayLoadBalancerTunnelInterfaceTypeExternal, + "internal": GatewayLoadBalancerTunnelInterfaceTypeInternal, + "none": GatewayLoadBalancerTunnelInterfaceTypeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelInterfaceType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelProtocol string + +const ( + GatewayLoadBalancerTunnelProtocolNative GatewayLoadBalancerTunnelProtocol = "Native" + GatewayLoadBalancerTunnelProtocolNone GatewayLoadBalancerTunnelProtocol = "None" + GatewayLoadBalancerTunnelProtocolVXLAN GatewayLoadBalancerTunnelProtocol = "VXLAN" +) + +func PossibleValuesForGatewayLoadBalancerTunnelProtocol() []string { + return []string{ + string(GatewayLoadBalancerTunnelProtocolNative), + string(GatewayLoadBalancerTunnelProtocolNone), + string(GatewayLoadBalancerTunnelProtocolVXLAN), + } +} + +func (s *GatewayLoadBalancerTunnelProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelProtocol(input string) (*GatewayLoadBalancerTunnelProtocol, error) { + vals := map[string]GatewayLoadBalancerTunnelProtocol{ + "native": GatewayLoadBalancerTunnelProtocolNative, + "none": GatewayLoadBalancerTunnelProtocolNone, + "vxlan": GatewayLoadBalancerTunnelProtocolVXLAN, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelProtocol(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} + +type LoadBalancerBackendAddressAdminState string + +const ( + LoadBalancerBackendAddressAdminStateDown LoadBalancerBackendAddressAdminState = "Down" + LoadBalancerBackendAddressAdminStateNone LoadBalancerBackendAddressAdminState = "None" + LoadBalancerBackendAddressAdminStateUp LoadBalancerBackendAddressAdminState = "Up" +) + +func PossibleValuesForLoadBalancerBackendAddressAdminState() []string { + return []string{ + string(LoadBalancerBackendAddressAdminStateDown), + string(LoadBalancerBackendAddressAdminStateNone), + string(LoadBalancerBackendAddressAdminStateUp), + } +} + +func (s *LoadBalancerBackendAddressAdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerBackendAddressAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerBackendAddressAdminState(input string) (*LoadBalancerBackendAddressAdminState, error) { + vals := map[string]LoadBalancerBackendAddressAdminState{ + "down": LoadBalancerBackendAddressAdminStateDown, + "none": LoadBalancerBackendAddressAdminStateNone, + "up": LoadBalancerBackendAddressAdminStateUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerBackendAddressAdminState(input) + return &out, nil +} + +type NatGatewaySkuName string + +const ( + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +func PossibleValuesForNatGatewaySkuName() []string { + return []string{ + string(NatGatewaySkuNameStandard), + } +} + +func (s *NatGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNatGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNatGatewaySkuName(input string) (*NatGatewaySkuName, error) { + vals := map[string]NatGatewaySkuName{ + "standard": NatGatewaySkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NatGatewaySkuName(input) + return &out, nil +} + +type NetworkInterfaceAuxiliaryMode string + +const ( + NetworkInterfaceAuxiliaryModeAcceleratedConnections NetworkInterfaceAuxiliaryMode = "AcceleratedConnections" + NetworkInterfaceAuxiliaryModeFloating NetworkInterfaceAuxiliaryMode = "Floating" + NetworkInterfaceAuxiliaryModeMaxConnections NetworkInterfaceAuxiliaryMode = "MaxConnections" + NetworkInterfaceAuxiliaryModeNone NetworkInterfaceAuxiliaryMode = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliaryMode() []string { + return []string{ + string(NetworkInterfaceAuxiliaryModeAcceleratedConnections), + string(NetworkInterfaceAuxiliaryModeFloating), + string(NetworkInterfaceAuxiliaryModeMaxConnections), + string(NetworkInterfaceAuxiliaryModeNone), + } +} + +func (s *NetworkInterfaceAuxiliaryMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliaryMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliaryMode(input string) (*NetworkInterfaceAuxiliaryMode, error) { + vals := map[string]NetworkInterfaceAuxiliaryMode{ + "acceleratedconnections": NetworkInterfaceAuxiliaryModeAcceleratedConnections, + "floating": NetworkInterfaceAuxiliaryModeFloating, + "maxconnections": NetworkInterfaceAuxiliaryModeMaxConnections, + "none": NetworkInterfaceAuxiliaryModeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliaryMode(input) + return &out, nil +} + +type NetworkInterfaceAuxiliarySku string + +const ( + NetworkInterfaceAuxiliarySkuAEight NetworkInterfaceAuxiliarySku = "A8" + NetworkInterfaceAuxiliarySkuAFour NetworkInterfaceAuxiliarySku = "A4" + NetworkInterfaceAuxiliarySkuAOne NetworkInterfaceAuxiliarySku = "A1" + NetworkInterfaceAuxiliarySkuATwo NetworkInterfaceAuxiliarySku = "A2" + NetworkInterfaceAuxiliarySkuNone NetworkInterfaceAuxiliarySku = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliarySku() []string { + return []string{ + string(NetworkInterfaceAuxiliarySkuAEight), + string(NetworkInterfaceAuxiliarySkuAFour), + string(NetworkInterfaceAuxiliarySkuAOne), + string(NetworkInterfaceAuxiliarySkuATwo), + string(NetworkInterfaceAuxiliarySkuNone), + } +} + +func (s *NetworkInterfaceAuxiliarySku) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliarySku(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliarySku(input string) (*NetworkInterfaceAuxiliarySku, error) { + vals := map[string]NetworkInterfaceAuxiliarySku{ + "a8": NetworkInterfaceAuxiliarySkuAEight, + "a4": NetworkInterfaceAuxiliarySkuAFour, + "a1": NetworkInterfaceAuxiliarySkuAOne, + "a2": NetworkInterfaceAuxiliarySkuATwo, + "none": NetworkInterfaceAuxiliarySkuNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliarySku(input) + return &out, nil +} + +type NetworkInterfaceMigrationPhase string + +const ( + NetworkInterfaceMigrationPhaseAbort NetworkInterfaceMigrationPhase = "Abort" + NetworkInterfaceMigrationPhaseCommit NetworkInterfaceMigrationPhase = "Commit" + NetworkInterfaceMigrationPhaseCommitted NetworkInterfaceMigrationPhase = "Committed" + NetworkInterfaceMigrationPhaseNone NetworkInterfaceMigrationPhase = "None" + NetworkInterfaceMigrationPhasePrepare NetworkInterfaceMigrationPhase = "Prepare" +) + +func PossibleValuesForNetworkInterfaceMigrationPhase() []string { + return []string{ + string(NetworkInterfaceMigrationPhaseAbort), + string(NetworkInterfaceMigrationPhaseCommit), + string(NetworkInterfaceMigrationPhaseCommitted), + string(NetworkInterfaceMigrationPhaseNone), + string(NetworkInterfaceMigrationPhasePrepare), + } +} + +func (s *NetworkInterfaceMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceMigrationPhase(input string) (*NetworkInterfaceMigrationPhase, error) { + vals := map[string]NetworkInterfaceMigrationPhase{ + "abort": NetworkInterfaceMigrationPhaseAbort, + "commit": NetworkInterfaceMigrationPhaseCommit, + "committed": NetworkInterfaceMigrationPhaseCommitted, + "none": NetworkInterfaceMigrationPhaseNone, + "prepare": NetworkInterfaceMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceMigrationPhase(input) + return &out, nil +} + +type NetworkInterfaceNicType string + +const ( + NetworkInterfaceNicTypeElastic NetworkInterfaceNicType = "Elastic" + NetworkInterfaceNicTypeStandard NetworkInterfaceNicType = "Standard" +) + +func PossibleValuesForNetworkInterfaceNicType() []string { + return []string{ + string(NetworkInterfaceNicTypeElastic), + string(NetworkInterfaceNicTypeStandard), + } +} + +func (s *NetworkInterfaceNicType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceNicType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceNicType(input string) (*NetworkInterfaceNicType, error) { + vals := map[string]NetworkInterfaceNicType{ + "elastic": NetworkInterfaceNicTypeElastic, + "standard": NetworkInterfaceNicTypeStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceNicType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type PublicIPAddressDnsSettingsDomainNameLabelScope string + +const ( + PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "NoReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "ResourceGroupReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "SubscriptionReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "TenantReuse" +) + +func PossibleValuesForPublicIPAddressDnsSettingsDomainNameLabelScope() []string { + return []string{ + string(PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse), + } +} + +func (s *PublicIPAddressDnsSettingsDomainNameLabelScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressDnsSettingsDomainNameLabelScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressDnsSettingsDomainNameLabelScope(input string) (*PublicIPAddressDnsSettingsDomainNameLabelScope, error) { + vals := map[string]PublicIPAddressDnsSettingsDomainNameLabelScope{ + "noreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse, + "resourcegroupreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse, + "subscriptionreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse, + "tenantreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressDnsSettingsDomainNameLabelScope(input) + return &out, nil +} + +type PublicIPAddressMigrationPhase string + +const ( + PublicIPAddressMigrationPhaseAbort PublicIPAddressMigrationPhase = "Abort" + PublicIPAddressMigrationPhaseCommit PublicIPAddressMigrationPhase = "Commit" + PublicIPAddressMigrationPhaseCommitted PublicIPAddressMigrationPhase = "Committed" + PublicIPAddressMigrationPhaseNone PublicIPAddressMigrationPhase = "None" + PublicIPAddressMigrationPhasePrepare PublicIPAddressMigrationPhase = "Prepare" +) + +func PossibleValuesForPublicIPAddressMigrationPhase() []string { + return []string{ + string(PublicIPAddressMigrationPhaseAbort), + string(PublicIPAddressMigrationPhaseCommit), + string(PublicIPAddressMigrationPhaseCommitted), + string(PublicIPAddressMigrationPhaseNone), + string(PublicIPAddressMigrationPhasePrepare), + } +} + +func (s *PublicIPAddressMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressMigrationPhase(input string) (*PublicIPAddressMigrationPhase, error) { + vals := map[string]PublicIPAddressMigrationPhase{ + "abort": PublicIPAddressMigrationPhaseAbort, + "commit": PublicIPAddressMigrationPhaseCommit, + "committed": PublicIPAddressMigrationPhaseCommitted, + "none": PublicIPAddressMigrationPhaseNone, + "prepare": PublicIPAddressMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressMigrationPhase(input) + return &out, nil +} + +type PublicIPAddressSkuName string + +const ( + PublicIPAddressSkuNameBasic PublicIPAddressSkuName = "Basic" + PublicIPAddressSkuNameStandard PublicIPAddressSkuName = "Standard" +) + +func PossibleValuesForPublicIPAddressSkuName() []string { + return []string{ + string(PublicIPAddressSkuNameBasic), + string(PublicIPAddressSkuNameStandard), + } +} + +func (s *PublicIPAddressSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuName(input string) (*PublicIPAddressSkuName, error) { + vals := map[string]PublicIPAddressSkuName{ + "basic": PublicIPAddressSkuNameBasic, + "standard": PublicIPAddressSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuName(input) + return &out, nil +} + +type PublicIPAddressSkuTier string + +const ( + PublicIPAddressSkuTierGlobal PublicIPAddressSkuTier = "Global" + PublicIPAddressSkuTierRegional PublicIPAddressSkuTier = "Regional" +) + +func PossibleValuesForPublicIPAddressSkuTier() []string { + return []string{ + string(PublicIPAddressSkuTierGlobal), + string(PublicIPAddressSkuTierRegional), + } +} + +func (s *PublicIPAddressSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuTier(input string) (*PublicIPAddressSkuTier, error) { + vals := map[string]PublicIPAddressSkuTier{ + "global": PublicIPAddressSkuTierGlobal, + "regional": PublicIPAddressSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuTier(input) + return &out, nil +} + +type RouteNextHopType string + +const ( + RouteNextHopTypeInternet RouteNextHopType = "Internet" + RouteNextHopTypeNone RouteNextHopType = "None" + RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" + RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" + RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" +) + +func PossibleValuesForRouteNextHopType() []string { + return []string{ + string(RouteNextHopTypeInternet), + string(RouteNextHopTypeNone), + string(RouteNextHopTypeVirtualAppliance), + string(RouteNextHopTypeVirtualNetworkGateway), + string(RouteNextHopTypeVnetLocal), + } +} + +func (s *RouteNextHopType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteNextHopType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteNextHopType(input string) (*RouteNextHopType, error) { + vals := map[string]RouteNextHopType{ + "internet": RouteNextHopTypeInternet, + "none": RouteNextHopTypeNone, + "virtualappliance": RouteNextHopTypeVirtualAppliance, + "virtualnetworkgateway": RouteNextHopTypeVirtualNetworkGateway, + "vnetlocal": RouteNextHopTypeVnetLocal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteNextHopType(input) + return &out, nil +} + +type SecurityRuleAccess string + +const ( + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +func PossibleValuesForSecurityRuleAccess() []string { + return []string{ + string(SecurityRuleAccessAllow), + string(SecurityRuleAccessDeny), + } +} + +func (s *SecurityRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleAccess(input string) (*SecurityRuleAccess, error) { + vals := map[string]SecurityRuleAccess{ + "allow": SecurityRuleAccessAllow, + "deny": SecurityRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleAccess(input) + return &out, nil +} + +type SecurityRuleDirection string + +const ( + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityRuleDirection() []string { + return []string{ + string(SecurityRuleDirectionInbound), + string(SecurityRuleDirectionOutbound), + } +} + +func (s *SecurityRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleDirection(input string) (*SecurityRuleDirection, error) { + vals := map[string]SecurityRuleDirection{ + "inbound": SecurityRuleDirectionInbound, + "outbound": SecurityRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleDirection(input) + return &out, nil +} + +type SecurityRuleProtocol string + +const ( + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + SecurityRuleProtocolAny SecurityRuleProtocol = "*" + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + SecurityRuleProtocolTcp SecurityRuleProtocol = "Tcp" + SecurityRuleProtocolUdp SecurityRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityRuleProtocol() []string { + return []string{ + string(SecurityRuleProtocolAh), + string(SecurityRuleProtocolAny), + string(SecurityRuleProtocolEsp), + string(SecurityRuleProtocolIcmp), + string(SecurityRuleProtocolTcp), + string(SecurityRuleProtocolUdp), + } +} + +func (s *SecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleProtocol(input string) (*SecurityRuleProtocol, error) { + vals := map[string]SecurityRuleProtocol{ + "ah": SecurityRuleProtocolAh, + "*": SecurityRuleProtocolAny, + "esp": SecurityRuleProtocolEsp, + "icmp": SecurityRuleProtocolIcmp, + "tcp": SecurityRuleProtocolTcp, + "udp": SecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleProtocol(input) + return &out, nil +} + +type SharingScope string + +const ( + SharingScopeDelegatedServices SharingScope = "DelegatedServices" + SharingScopeTenant SharingScope = "Tenant" +) + +func PossibleValuesForSharingScope() []string { + return []string{ + string(SharingScopeDelegatedServices), + string(SharingScopeTenant), + } +} + +func (s *SharingScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSharingScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSharingScope(input string) (*SharingScope, error) { + vals := map[string]SharingScope{ + "delegatedservices": SharingScopeDelegatedServices, + "tenant": SharingScopeTenant, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SharingScope(input) + return &out, nil +} + +type SyncMode string + +const ( + SyncModeAutomatic SyncMode = "Automatic" + SyncModeManual SyncMode = "Manual" +) + +func PossibleValuesForSyncMode() []string { + return []string{ + string(SyncModeAutomatic), + string(SyncModeManual), + } +} + +func (s *SyncMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSyncMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSyncMode(input string) (*SyncMode, error) { + vals := map[string]SyncMode{ + "automatic": SyncModeAutomatic, + "manual": SyncModeManual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SyncMode(input) + return &out, nil +} + +type TransportProtocol string + +const ( + TransportProtocolAll TransportProtocol = "All" + TransportProtocolTcp TransportProtocol = "Tcp" + TransportProtocolUdp TransportProtocol = "Udp" +) + +func PossibleValuesForTransportProtocol() []string { + return []string{ + string(TransportProtocolAll), + string(TransportProtocolTcp), + string(TransportProtocolUdp), + } +} + +func (s *TransportProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseTransportProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseTransportProtocol(input string) (*TransportProtocol, error) { + vals := map[string]TransportProtocol{ + "all": TransportProtocolAll, + "tcp": TransportProtocolTcp, + "udp": TransportProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := TransportProtocol(input) + return &out, nil +} + +type VirtualNetworkPrivateEndpointNetworkPolicies string + +const ( + VirtualNetworkPrivateEndpointNetworkPoliciesDisabled VirtualNetworkPrivateEndpointNetworkPolicies = "Disabled" + VirtualNetworkPrivateEndpointNetworkPoliciesEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "Enabled" + VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "NetworkSecurityGroupEnabled" + VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "RouteTableEnabled" +) + +func PossibleValuesForVirtualNetworkPrivateEndpointNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateEndpointNetworkPoliciesDisabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled), + } +} + +func (s *VirtualNetworkPrivateEndpointNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateEndpointNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateEndpointNetworkPolicies(input string) (*VirtualNetworkPrivateEndpointNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateEndpointNetworkPolicies{ + "disabled": VirtualNetworkPrivateEndpointNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateEndpointNetworkPoliciesEnabled, + "networksecuritygroupenabled": VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled, + "routetableenabled": VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateEndpointNetworkPolicies(input) + return &out, nil +} + +type VirtualNetworkPrivateLinkServiceNetworkPolicies string + +const ( + VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Disabled" + VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Enabled" +) + +func PossibleValuesForVirtualNetworkPrivateLinkServiceNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled), + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled), + } +} + +func (s *VirtualNetworkPrivateLinkServiceNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateLinkServiceNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateLinkServiceNetworkPolicies(input string) (*VirtualNetworkPrivateLinkServiceNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateLinkServiceNetworkPolicies{ + "disabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateLinkServiceNetworkPolicies(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/id_networksecuritygroup.go b/resource-manager/network/2024-01-01/networksecuritygroups/id_networksecuritygroup.go new file mode 100644 index 00000000000..4ab431d74a9 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/id_networksecuritygroup.go @@ -0,0 +1,130 @@ +package networksecuritygroups + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NetworkSecurityGroupId{}) +} + +var _ resourceids.ResourceId = &NetworkSecurityGroupId{} + +// NetworkSecurityGroupId is a struct representing the Resource ID for a Network Security Group +type NetworkSecurityGroupId struct { + SubscriptionId string + ResourceGroupName string + NetworkSecurityGroupName string +} + +// NewNetworkSecurityGroupID returns a new NetworkSecurityGroupId struct +func NewNetworkSecurityGroupID(subscriptionId string, resourceGroupName string, networkSecurityGroupName string) NetworkSecurityGroupId { + return NetworkSecurityGroupId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkSecurityGroupName: networkSecurityGroupName, + } +} + +// ParseNetworkSecurityGroupID parses 'input' into a NetworkSecurityGroupId +func ParseNetworkSecurityGroupID(input string) (*NetworkSecurityGroupId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkSecurityGroupId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkSecurityGroupId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNetworkSecurityGroupIDInsensitively parses 'input' case-insensitively into a NetworkSecurityGroupId +// note: this method should only be used for API response data and not user input +func ParseNetworkSecurityGroupIDInsensitively(input string) (*NetworkSecurityGroupId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkSecurityGroupId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkSecurityGroupId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NetworkSecurityGroupId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkSecurityGroupName, ok = input.Parsed["networkSecurityGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkSecurityGroupName", input) + } + + return nil +} + +// ValidateNetworkSecurityGroupID checks that 'input' can be parsed as a Network Security Group ID +func ValidateNetworkSecurityGroupID(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 := ParseNetworkSecurityGroupID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Network Security Group ID +func (id NetworkSecurityGroupId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkSecurityGroups/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkSecurityGroupName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Network Security Group ID +func (id NetworkSecurityGroupId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkSecurityGroups", "networkSecurityGroups", "networkSecurityGroups"), + resourceids.UserSpecifiedSegment("networkSecurityGroupName", "networkSecurityGroupValue"), + } +} + +// String returns a human-readable description of this Network Security Group ID +func (id NetworkSecurityGroupId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Security Group Name: %q", id.NetworkSecurityGroupName), + } + return fmt.Sprintf("Network Security Group (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/id_networksecuritygroup_test.go b/resource-manager/network/2024-01-01/networksecuritygroups/id_networksecuritygroup_test.go new file mode 100644 index 00000000000..87524f03d0e --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/id_networksecuritygroup_test.go @@ -0,0 +1,282 @@ +package networksecuritygroups + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NetworkSecurityGroupId{} + +func TestNewNetworkSecurityGroupID(t *testing.T) { + id := NewNetworkSecurityGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkSecurityGroupValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkSecurityGroupName != "networkSecurityGroupValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkSecurityGroupName'", id.NetworkSecurityGroupName, "networkSecurityGroupValue") + } +} + +func TestFormatNetworkSecurityGroupID(t *testing.T) { + actual := NewNetworkSecurityGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkSecurityGroupValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNetworkSecurityGroupID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkSecurityGroupId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue", + Expected: &NetworkSecurityGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkSecurityGroupName: "networkSecurityGroupValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkSecurityGroupID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkSecurityGroupName != v.Expected.NetworkSecurityGroupName { + t.Fatalf("Expected %q but got %q for NetworkSecurityGroupName", v.Expected.NetworkSecurityGroupName, actual.NetworkSecurityGroupName) + } + + } +} + +func TestParseNetworkSecurityGroupIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkSecurityGroupId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkSeCuRiTyGrOuPs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue", + Expected: &NetworkSecurityGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkSecurityGroupName: "networkSecurityGroupValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkSeCuRiTyGrOuPs/nEtWoRkSeCuRiTyGrOuPvAlUe", + Expected: &NetworkSecurityGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkSecurityGroupName: "nEtWoRkSeCuRiTyGrOuPvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkSeCuRiTyGrOuPs/nEtWoRkSeCuRiTyGrOuPvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkSecurityGroupIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkSecurityGroupName != v.Expected.NetworkSecurityGroupName { + t.Fatalf("Expected %q but got %q for NetworkSecurityGroupName", v.Expected.NetworkSecurityGroupName, actual.NetworkSecurityGroupName) + } + + } +} + +func TestSegmentsForNetworkSecurityGroupId(t *testing.T) { + segments := NetworkSecurityGroupId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NetworkSecurityGroupId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/method_createorupdate.go b/resource-manager/network/2024-01-01/networksecuritygroups/method_createorupdate.go new file mode 100644 index 00000000000..cb77896aae4 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/method_createorupdate.go @@ -0,0 +1,75 @@ +package networksecuritygroups + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *NetworkSecurityGroup +} + +// CreateOrUpdate ... +func (c NetworkSecurityGroupsClient) CreateOrUpdate(ctx context.Context, id NetworkSecurityGroupId, input NetworkSecurityGroup) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c NetworkSecurityGroupsClient) CreateOrUpdateThenPoll(ctx context.Context, id NetworkSecurityGroupId, input NetworkSecurityGroup) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/method_delete.go b/resource-manager/network/2024-01-01/networksecuritygroups/method_delete.go new file mode 100644 index 00000000000..103ca330a5b --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/method_delete.go @@ -0,0 +1,71 @@ +package networksecuritygroups + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c NetworkSecurityGroupsClient) Delete(ctx context.Context, id NetworkSecurityGroupId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c NetworkSecurityGroupsClient) DeleteThenPoll(ctx context.Context, id NetworkSecurityGroupId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/method_get.go b/resource-manager/network/2024-01-01/networksecuritygroups/method_get.go new file mode 100644 index 00000000000..debc457321c --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/method_get.go @@ -0,0 +1,83 @@ +package networksecuritygroups + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkSecurityGroup +} + +type GetOperationOptions struct { + Expand *string +} + +func DefaultGetOperationOptions() GetOperationOptions { + return GetOperationOptions{} +} + +func (o GetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// Get ... +func (c NetworkSecurityGroupsClient) Get(ctx context.Context, id NetworkSecurityGroupId, options GetOperationOptions) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkSecurityGroup + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/method_list.go b/resource-manager/network/2024-01-01/networksecuritygroups/method_list.go new file mode 100644 index 00000000000..fb32dd8a5e9 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/method_list.go @@ -0,0 +1,93 @@ +package networksecuritygroups + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NetworkSecurityGroup +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []NetworkSecurityGroup +} + +// List ... +func (c NetworkSecurityGroupsClient) List(ctx context.Context, id commonids.ResourceGroupId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/networkSecurityGroups", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NetworkSecurityGroup `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c NetworkSecurityGroupsClient) ListComplete(ctx context.Context, id commonids.ResourceGroupId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, NetworkSecurityGroupOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c NetworkSecurityGroupsClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate NetworkSecurityGroupOperationPredicate) (result ListCompleteResult, err error) { + items := make([]NetworkSecurityGroup, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/method_listall.go b/resource-manager/network/2024-01-01/networksecuritygroups/method_listall.go new file mode 100644 index 00000000000..6e7c1adf74e --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/method_listall.go @@ -0,0 +1,93 @@ +package networksecuritygroups + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAllOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NetworkSecurityGroup +} + +type ListAllCompleteResult struct { + LatestHttpResponse *http.Response + Items []NetworkSecurityGroup +} + +// ListAll ... +func (c NetworkSecurityGroupsClient) ListAll(ctx context.Context, id commonids.SubscriptionId) (result ListAllOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/networkSecurityGroups", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NetworkSecurityGroup `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListAllComplete retrieves all the results into a single object +func (c NetworkSecurityGroupsClient) ListAllComplete(ctx context.Context, id commonids.SubscriptionId) (ListAllCompleteResult, error) { + return c.ListAllCompleteMatchingPredicate(ctx, id, NetworkSecurityGroupOperationPredicate{}) +} + +// ListAllCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c NetworkSecurityGroupsClient) ListAllCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate NetworkSecurityGroupOperationPredicate) (result ListAllCompleteResult, err error) { + items := make([]NetworkSecurityGroup, 0) + + resp, err := c.ListAll(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListAllCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/method_updatetags.go b/resource-manager/network/2024-01-01/networksecuritygroups/method_updatetags.go new file mode 100644 index 00000000000..362cad00c7d --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/method_updatetags.go @@ -0,0 +1,58 @@ +package networksecuritygroups + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkSecurityGroup +} + +// UpdateTags ... +func (c NetworkSecurityGroupsClient) UpdateTags(ctx context.Context, id NetworkSecurityGroupId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkSecurityGroup + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_applicationgatewaybackendaddress.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_applicationgatewaybackendaddress.go new file mode 100644 index 00000000000..62c1c3109c0 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_applicationgatewaybackendaddress.go @@ -0,0 +1,9 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddress struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_applicationgatewaybackendaddresspool.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_applicationgatewaybackendaddresspool.go new file mode 100644 index 00000000000..17bf1792be8 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_applicationgatewaybackendaddresspool.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_applicationgatewaybackendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_applicationgatewaybackendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..d96a3011a25 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_applicationgatewaybackendaddresspoolpropertiesformat.go @@ -0,0 +1,10 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPoolPropertiesFormat struct { + BackendAddresses *[]ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"` + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_applicationgatewayipconfiguration.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_applicationgatewayipconfiguration.go new file mode 100644 index 00000000000..ebf65a382d3 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_applicationgatewayipconfiguration.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_applicationgatewayipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_applicationgatewayipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..e6f11b94c01 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_applicationgatewayipconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..50a0b0f53a7 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..5443c32837a --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_backendaddresspool.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_backendaddresspool.go new file mode 100644 index 00000000000..0a216964329 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_backendaddresspool.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_backendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_backendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..80cdae2e912 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_backendaddresspoolpropertiesformat.go @@ -0,0 +1,19 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPoolPropertiesFormat struct { + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + DrainPeriodInSeconds *int64 `json:"drainPeriodInSeconds,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancerBackendAddresses *[]LoadBalancerBackendAddress `json:"loadBalancerBackendAddresses,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + Location *string `json:"location,omitempty"` + OutboundRule *SubResource `json:"outboundRule,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SyncMode *SyncMode `json:"syncMode,omitempty"` + TunnelInterfaces *[]GatewayLoadBalancerTunnelInterface `json:"tunnelInterfaces,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_customdnsconfigpropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_customdnsconfigpropertiesformat.go new file mode 100644 index 00000000000..d6dd55786fc --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_customdnsconfigpropertiesformat.go @@ -0,0 +1,9 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomDnsConfigPropertiesFormat struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_ddossettings.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_ddossettings.go new file mode 100644 index 00000000000..4b0d4e3dc9b --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_ddossettings.go @@ -0,0 +1,9 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettings struct { + DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"` + ProtectionMode *DdosSettingsProtectionMode `json:"protectionMode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_delegation.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_delegation.go new file mode 100644 index 00000000000..42805b01ada --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_delegation.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Delegation struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceDelegationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_flowlog.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_flowlog.go new file mode 100644 index 00000000000..88e95b6c2a4 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_flowlog.go @@ -0,0 +1,19 @@ +package networksecuritygroups + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLog struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FlowLogPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_flowlogformatparameters.go new file mode 100644 index 00000000000..fdad354f6b8 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_flowlogpropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_flowlogpropertiesformat.go new file mode 100644 index 00000000000..bab4d923b54 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_flowlogpropertiesformat.go @@ -0,0 +1,15 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogPropertiesFormat struct { + Enabled *bool `json:"enabled,omitempty"` + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` + TargetResourceGuid *string `json:"targetResourceGuid,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_frontendipconfiguration.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_frontendipconfiguration.go new file mode 100644 index 00000000000..24b23145d47 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_frontendipconfiguration.go @@ -0,0 +1,17 @@ +package networksecuritygroups + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_frontendipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_frontendipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..5322ea68f34 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_frontendipconfigurationpropertiesformat.go @@ -0,0 +1,19 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfigurationPropertiesFormat struct { + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + InboundNatPools *[]SubResource `json:"inboundNatPools,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_gatewayloadbalancertunnelinterface.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_gatewayloadbalancertunnelinterface.go new file mode 100644 index 00000000000..fff6be9708f --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_gatewayloadbalancertunnelinterface.go @@ -0,0 +1,11 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayLoadBalancerTunnelInterface struct { + Identifier *int64 `json:"identifier,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *GatewayLoadBalancerTunnelProtocol `json:"protocol,omitempty"` + Type *GatewayLoadBalancerTunnelInterfaceType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_inboundnatrule.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_inboundnatrule.go new file mode 100644 index 00000000000..6391fbf065c --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_inboundnatrule.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundNatRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_inboundnatrulepropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_inboundnatrulepropertiesformat.go new file mode 100644 index 00000000000..725fec85751 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_inboundnatrulepropertiesformat.go @@ -0,0 +1,19 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendIPConfiguration *NetworkInterfaceIPConfiguration `json:"backendIPConfiguration,omitempty"` + BackendPort *int64 `json:"backendPort,omitempty"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + FrontendPortRangeEnd *int64 `json:"frontendPortRangeEnd,omitempty"` + FrontendPortRangeStart *int64 `json:"frontendPortRangeStart,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol *TransportProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_ipconfiguration.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_ipconfiguration.go new file mode 100644 index 00000000000..b9eec53b855 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_ipconfiguration.go @@ -0,0 +1,11 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_ipconfigurationprofile.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_ipconfigurationprofile.go new file mode 100644 index 00000000000..4885926d9aa --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_ipconfigurationprofile.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationProfilePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_ipconfigurationprofilepropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_ipconfigurationprofilepropertiesformat.go new file mode 100644 index 00000000000..ec7f93c0f2b --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_ipconfigurationprofilepropertiesformat.go @@ -0,0 +1,9 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfilePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_ipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_ipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..ca12abb4992 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_ipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_iptag.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_iptag.go new file mode 100644 index 00000000000..3f5348f3776 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_iptag.go @@ -0,0 +1,9 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPTag struct { + IPTagType *string `json:"ipTagType,omitempty"` + Tag *string `json:"tag,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_loadbalancerbackendaddress.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_loadbalancerbackendaddress.go new file mode 100644 index 00000000000..8c8a91a5d1f --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_loadbalancerbackendaddress.go @@ -0,0 +1,9 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddress struct { + Name *string `json:"name,omitempty"` + Properties *LoadBalancerBackendAddressPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_loadbalancerbackendaddresspropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_loadbalancerbackendaddresspropertiesformat.go new file mode 100644 index 00000000000..1843fe9fb85 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_loadbalancerbackendaddresspropertiesformat.go @@ -0,0 +1,14 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPropertiesFormat struct { + AdminState *LoadBalancerBackendAddressAdminState `json:"adminState,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + InboundNatRulesPortMapping *[]NatRulePortMapping `json:"inboundNatRulesPortMapping,omitempty"` + LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIPConfiguration,omitempty"` + NetworkInterfaceIPConfiguration *SubResource `json:"networkInterfaceIPConfiguration,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_natgateway.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_natgateway.go new file mode 100644 index 00000000000..8d6ecb14bc5 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_natgateway.go @@ -0,0 +1,20 @@ +package networksecuritygroups + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"` + Sku *NatGatewaySku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_natgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_natgatewaypropertiesformat.go new file mode 100644 index 00000000000..389e752880f --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_natgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayPropertiesFormat struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]SubResource `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_natgatewaysku.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_natgatewaysku.go new file mode 100644 index 00000000000..5e842304f20 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_natgatewaysku.go @@ -0,0 +1,8 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySku struct { + Name *NatGatewaySkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_natruleportmapping.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_natruleportmapping.go new file mode 100644 index 00000000000..30f812c7c78 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_natruleportmapping.go @@ -0,0 +1,10 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulePortMapping struct { + BackendPort *int64 `json:"backendPort,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + InboundNatRuleName *string `json:"inboundNatRuleName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterface.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterface.go new file mode 100644 index 00000000000..a4a62c2d6ea --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterface.go @@ -0,0 +1,19 @@ +package networksecuritygroups + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterface struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfacePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterfacednssettings.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterfacednssettings.go new file mode 100644 index 00000000000..f3819f01474 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterfacednssettings.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceDnsSettings struct { + AppliedDnsServers *[]string `json:"appliedDnsServers,omitempty"` + DnsServers *[]string `json:"dnsServers,omitempty"` + InternalDnsNameLabel *string `json:"internalDnsNameLabel,omitempty"` + InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty"` + InternalFqdn *string `json:"internalFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterfaceipconfiguration.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterfaceipconfiguration.go new file mode 100644 index 00000000000..40cf733a9f0 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterfaceipconfiguration.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go new file mode 100644 index 00000000000..caa03f6e413 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go @@ -0,0 +1,10 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties struct { + Fqdns *[]string `json:"fqdns,omitempty"` + GroupId *string `json:"groupId,omitempty"` + RequiredMemberName *string `json:"requiredMemberName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterfaceipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterfaceipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..248c37ca51d --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterfaceipconfigurationpropertiesformat.go @@ -0,0 +1,22 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPropertiesFormat struct { + ApplicationGatewayBackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"applicationGatewayBackendAddressPools,omitempty"` + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + LoadBalancerBackendAddressPools *[]BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"` + LoadBalancerInboundNatRules *[]InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressPrefixLength *int64 `json:"privateIPAddressPrefixLength,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + PrivateLinkConnectionProperties *NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties `json:"privateLinkConnectionProperties,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` + VirtualNetworkTaps *[]VirtualNetworkTap `json:"virtualNetworkTaps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterfacepropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterfacepropertiesformat.go new file mode 100644 index 00000000000..95a8c67d71c --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterfacepropertiesformat.go @@ -0,0 +1,29 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfacePropertiesFormat struct { + AuxiliaryMode *NetworkInterfaceAuxiliaryMode `json:"auxiliaryMode,omitempty"` + AuxiliarySku *NetworkInterfaceAuxiliarySku `json:"auxiliarySku,omitempty"` + DisableTcpStateTracking *bool `json:"disableTcpStateTracking,omitempty"` + DnsSettings *NetworkInterfaceDnsSettings `json:"dnsSettings,omitempty"` + DscpConfiguration *SubResource `json:"dscpConfiguration,omitempty"` + EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"` + EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"` + HostedWorkloads *[]string `json:"hostedWorkloads,omitempty"` + IPConfigurations *[]NetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + MacAddress *string `json:"macAddress,omitempty"` + MigrationPhase *NetworkInterfaceMigrationPhase `json:"migrationPhase,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + NicType *NetworkInterfaceNicType `json:"nicType,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkService *PrivateLinkService `json:"privateLinkService,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + TapConfigurations *[]NetworkInterfaceTapConfiguration `json:"tapConfigurations,omitempty"` + VirtualMachine *SubResource `json:"virtualMachine,omitempty"` + VnetEncryptionSupported *bool `json:"vnetEncryptionSupported,omitempty"` + WorkloadType *string `json:"workloadType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterfacetapconfiguration.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterfacetapconfiguration.go new file mode 100644 index 00000000000..5e60c1bbfc4 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterfacetapconfiguration.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceTapConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterfacetapconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterfacetapconfigurationpropertiesformat.go new file mode 100644 index 00000000000..d110d193645 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_networkinterfacetapconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualNetworkTap *VirtualNetworkTap `json:"virtualNetworkTap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_networksecuritygroup.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_networksecuritygroup.go new file mode 100644 index 00000000000..dd84b3efc89 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_networksecuritygroup.go @@ -0,0 +1,14 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_networksecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_networksecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..704a86496f2 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_networksecuritygrouppropertiesformat.go @@ -0,0 +1,15 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupPropertiesFormat struct { + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + FlowLogs *[]FlowLog `json:"flowLogs,omitempty"` + FlushConnection *bool `json:"flushConnection,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_privateendpoint.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_privateendpoint.go new file mode 100644 index 00000000000..753cd13341b --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_privateendpoint.go @@ -0,0 +1,19 @@ +package networksecuritygroups + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpoint struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_privateendpointconnection.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_privateendpointconnection.go new file mode 100644 index 00000000000..b28eaa1a213 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_privateendpointconnection.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_privateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_privateendpointconnectionproperties.go new file mode 100644 index 00000000000..9649070d1a7 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_privateendpointconnectionproperties.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateEndpointLocation *string `json:"privateEndpointLocation,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_privateendpointipconfiguration.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_privateendpointipconfiguration.go new file mode 100644 index 00000000000..af86de8f897 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_privateendpointipconfiguration.go @@ -0,0 +1,11 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_privateendpointipconfigurationproperties.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_privateendpointipconfigurationproperties.go new file mode 100644 index 00000000000..550ef75ec1d --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_privateendpointipconfigurationproperties.go @@ -0,0 +1,10 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfigurationProperties struct { + GroupId *string `json:"groupId,omitempty"` + MemberName *string `json:"memberName,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_privateendpointproperties.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_privateendpointproperties.go new file mode 100644 index 00000000000..36ad3ca4ffb --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_privateendpointproperties.go @@ -0,0 +1,16 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointProperties struct { + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + CustomDnsConfigs *[]CustomDnsConfigPropertiesFormat `json:"customDnsConfigs,omitempty"` + CustomNetworkInterfaceName *string `json:"customNetworkInterfaceName,omitempty"` + IPConfigurations *[]PrivateEndpointIPConfiguration `json:"ipConfigurations,omitempty"` + ManualPrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"manualPrivateLinkServiceConnections,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"privateLinkServiceConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_privatelinkservice.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_privatelinkservice.go new file mode 100644 index 00000000000..f880da9d89d --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_privatelinkservice.go @@ -0,0 +1,19 @@ +package networksecuritygroups + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkService struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_privatelinkserviceconnection.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_privatelinkserviceconnection.go new file mode 100644 index 00000000000..3a721ae3637 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_privatelinkserviceconnection.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_privatelinkserviceconnectionproperties.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_privatelinkserviceconnectionproperties.go new file mode 100644 index 00000000000..50b8f7e352f --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_privatelinkserviceconnectionproperties.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionProperties struct { + GroupIds *[]string `json:"groupIds,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + PrivateLinkServiceId *string `json:"privateLinkServiceId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestMessage *string `json:"requestMessage,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_privatelinkserviceconnectionstate.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_privatelinkserviceconnectionstate.go new file mode 100644 index 00000000000..619e38d131d --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_privatelinkserviceconnectionstate.go @@ -0,0 +1,10 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionState struct { + ActionsRequired *string `json:"actionsRequired,omitempty"` + Description *string `json:"description,omitempty"` + Status *string `json:"status,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_privatelinkserviceipconfiguration.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_privatelinkserviceipconfiguration.go new file mode 100644 index 00000000000..dcbf418522b --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_privatelinkserviceipconfiguration.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_privatelinkserviceipconfigurationproperties.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_privatelinkserviceipconfigurationproperties.go new file mode 100644 index 00000000000..abc8d2f4904 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_privatelinkserviceipconfigurationproperties.go @@ -0,0 +1,13 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_privatelinkserviceproperties.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_privatelinkserviceproperties.go new file mode 100644 index 00000000000..5d51b182a49 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_privatelinkserviceproperties.go @@ -0,0 +1,17 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceProperties struct { + Alias *string `json:"alias,omitempty"` + AutoApproval *ResourceSet `json:"autoApproval,omitempty"` + EnableProxyProtocol *bool `json:"enableProxyProtocol,omitempty"` + Fqdns *[]string `json:"fqdns,omitempty"` + IPConfigurations *[]PrivateLinkServiceIPConfiguration `json:"ipConfigurations,omitempty"` + LoadBalancerFrontendIPConfigurations *[]FrontendIPConfiguration `json:"loadBalancerFrontendIpConfigurations,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Visibility *ResourceSet `json:"visibility,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_publicipaddress.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_publicipaddress.go new file mode 100644 index 00000000000..7b797b006f5 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_publicipaddress.go @@ -0,0 +1,22 @@ +package networksecuritygroups + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddress struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PublicIPAddressPropertiesFormat `json:"properties,omitempty"` + Sku *PublicIPAddressSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_publicipaddressdnssettings.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_publicipaddressdnssettings.go new file mode 100644 index 00000000000..2db9ef3f2c3 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_publicipaddressdnssettings.go @@ -0,0 +1,11 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressDnsSettings struct { + DomainNameLabel *string `json:"domainNameLabel,omitempty"` + DomainNameLabelScope *PublicIPAddressDnsSettingsDomainNameLabelScope `json:"domainNameLabelScope,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + ReverseFqdn *string `json:"reverseFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_publicipaddresspropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_publicipaddresspropertiesformat.go new file mode 100644 index 00000000000..cac3fce28ce --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_publicipaddresspropertiesformat.go @@ -0,0 +1,23 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressPropertiesFormat struct { + DdosSettings *DdosSettings `json:"ddosSettings,omitempty"` + DeleteOption *DeleteOptions `json:"deleteOption,omitempty"` + DnsSettings *PublicIPAddressDnsSettings `json:"dnsSettings,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty"` + IPTags *[]IPTag `json:"ipTags,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + LinkedPublicIPAddress *PublicIPAddress `json:"linkedPublicIPAddress,omitempty"` + MigrationPhase *PublicIPAddressMigrationPhase `json:"migrationPhase,omitempty"` + NatGateway *NatGateway `json:"natGateway,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"` + PublicIPAllocationMethod *IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServicePublicIPAddress *PublicIPAddress `json:"servicePublicIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_publicipaddresssku.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_publicipaddresssku.go new file mode 100644 index 00000000000..24fe5573abd --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_publicipaddresssku.go @@ -0,0 +1,9 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressSku struct { + Name *PublicIPAddressSkuName `json:"name,omitempty"` + Tier *PublicIPAddressSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_resourcenavigationlink.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_resourcenavigationlink.go new file mode 100644 index 00000000000..8d6ec604942 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_resourcenavigationlink.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ResourceNavigationLinkFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_resourcenavigationlinkformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_resourcenavigationlinkformat.go new file mode 100644 index 00000000000..0bf207481cb --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_resourcenavigationlinkformat.go @@ -0,0 +1,10 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLinkFormat struct { + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_resourceset.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_resourceset.go new file mode 100644 index 00000000000..751d06dd732 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_resourceset.go @@ -0,0 +1,8 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceSet struct { + Subscriptions *[]string `json:"subscriptions,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..b1e9035c2f8 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_route.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_route.go new file mode 100644 index 00000000000..9b712ab4e81 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_route.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Route struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RoutePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_routepropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_routepropertiesformat.go new file mode 100644 index 00000000000..3225a4673f2 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_routepropertiesformat.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutePropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + HasBgpOverride *bool `json:"hasBgpOverride,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + NextHopType RouteNextHopType `json:"nextHopType"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_routetable.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_routetable.go new file mode 100644 index 00000000000..9aff39efe9e --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_routetable.go @@ -0,0 +1,14 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTable struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteTablePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_routetablepropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_routetablepropertiesformat.go new file mode 100644 index 00000000000..5eee448b410 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_routetablepropertiesformat.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTablePropertiesFormat struct { + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Routes *[]Route `json:"routes,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_securityrule.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_securityrule.go new file mode 100644 index 00000000000..1119115e9eb --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_securityrule.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_securityrulepropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_securityrulepropertiesformat.go new file mode 100644 index 00000000000..01270911682 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_securityrulepropertiesformat.go @@ -0,0 +1,23 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulePropertiesFormat struct { + Access SecurityRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction SecurityRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_serviceassociationlink.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_serviceassociationlink.go new file mode 100644 index 00000000000..050ee6cb43f --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_serviceassociationlink.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceAssociationLinkPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_serviceassociationlinkpropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_serviceassociationlinkpropertiesformat.go new file mode 100644 index 00000000000..81a4ac35e4a --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_serviceassociationlinkpropertiesformat.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLinkPropertiesFormat struct { + AllowDelete *bool `json:"allowDelete,omitempty"` + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + Locations *[]string `json:"locations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_servicedelegationpropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_servicedelegationpropertiesformat.go new file mode 100644 index 00000000000..089e2e1dc0c --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_servicedelegationpropertiesformat.go @@ -0,0 +1,10 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceDelegationPropertiesFormat struct { + Actions *[]string `json:"actions,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_serviceendpointpolicy.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_serviceendpointpolicy.go new file mode 100644 index 00000000000..6ca2d4bff53 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_serviceendpointpolicy.go @@ -0,0 +1,15 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Kind *string `json:"kind,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_serviceendpointpolicydefinition.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_serviceendpointpolicydefinition.go new file mode 100644 index 00000000000..2a8648b7931 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_serviceendpointpolicydefinition.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinition struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_serviceendpointpolicydefinitionpropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_serviceendpointpolicydefinitionpropertiesformat.go new file mode 100644 index 00000000000..c70380704b7 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_serviceendpointpolicydefinitionpropertiesformat.go @@ -0,0 +1,11 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionPropertiesFormat struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` + ServiceResources *[]string `json:"serviceResources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_serviceendpointpolicypropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_serviceendpointpolicypropertiesformat.go new file mode 100644 index 00000000000..3000410cde3 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_serviceendpointpolicypropertiesformat.go @@ -0,0 +1,13 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyPropertiesFormat struct { + ContextualServiceEndpointPolicies *[]string `json:"contextualServiceEndpointPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServiceAlias *string `json:"serviceAlias,omitempty"` + ServiceEndpointPolicyDefinitions *[]ServiceEndpointPolicyDefinition `json:"serviceEndpointPolicyDefinitions,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_serviceendpointpropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_serviceendpointpropertiesformat.go new file mode 100644 index 00000000000..41b220c5194 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_serviceendpointpropertiesformat.go @@ -0,0 +1,11 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPropertiesFormat struct { + Locations *[]string `json:"locations,omitempty"` + NetworkIdentifier *SubResource `json:"networkIdentifier,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_subnet.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_subnet.go new file mode 100644 index 00000000000..499cc289ec3 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_subnet.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Subnet struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SubnetPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_subnetpropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_subnetpropertiesformat.go new file mode 100644 index 00000000000..1709c6e2bd1 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_subnetpropertiesformat.go @@ -0,0 +1,28 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + ApplicationGatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"applicationGatewayIPConfigurations,omitempty"` + DefaultOutboundAccess *bool `json:"defaultOutboundAccess,omitempty"` + Delegations *[]Delegation `json:"delegations,omitempty"` + IPAllocations *[]SubResource `json:"ipAllocations,omitempty"` + IPConfigurationProfiles *[]IPConfigurationProfile `json:"ipConfigurationProfiles,omitempty"` + IPConfigurations *[]IPConfiguration `json:"ipConfigurations,omitempty"` + NatGateway *SubResource `json:"natGateway,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + PrivateEndpointNetworkPolicies *VirtualNetworkPrivateEndpointNetworkPolicies `json:"privateEndpointNetworkPolicies,omitempty"` + PrivateEndpoints *[]PrivateEndpoint `json:"privateEndpoints,omitempty"` + PrivateLinkServiceNetworkPolicies *VirtualNetworkPrivateLinkServiceNetworkPolicies `json:"privateLinkServiceNetworkPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Purpose *string `json:"purpose,omitempty"` + ResourceNavigationLinks *[]ResourceNavigationLink `json:"resourceNavigationLinks,omitempty"` + RouteTable *RouteTable `json:"routeTable,omitempty"` + ServiceAssociationLinks *[]ServiceAssociationLink `json:"serviceAssociationLinks,omitempty"` + ServiceEndpointPolicies *[]ServiceEndpointPolicy `json:"serviceEndpointPolicies,omitempty"` + ServiceEndpoints *[]ServiceEndpointPropertiesFormat `json:"serviceEndpoints,omitempty"` + SharingScope *SharingScope `json:"sharingScope,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_subresource.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_subresource.go new file mode 100644 index 00000000000..8fa7fe6b59d --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_subresource.go @@ -0,0 +1,8 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_tagsobject.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_tagsobject.go new file mode 100644 index 00000000000..bb9ad0a6373 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_tagsobject.go @@ -0,0 +1,8 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..ddb354c4a7c --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..f74d8a12ecb --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_virtualnetworktap.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_virtualnetworktap.go new file mode 100644 index 00000000000..cfc1b073467 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_virtualnetworktap.go @@ -0,0 +1,14 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkTapPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/model_virtualnetworktappropertiesformat.go b/resource-manager/network/2024-01-01/networksecuritygroups/model_virtualnetworktappropertiesformat.go new file mode 100644 index 00000000000..01620fae8c8 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/model_virtualnetworktappropertiesformat.go @@ -0,0 +1,13 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapPropertiesFormat struct { + DestinationLoadBalancerFrontEndIPConfiguration *FrontendIPConfiguration `json:"destinationLoadBalancerFrontEndIPConfiguration,omitempty"` + DestinationNetworkInterfaceIPConfiguration *NetworkInterfaceIPConfiguration `json:"destinationNetworkInterfaceIPConfiguration,omitempty"` + DestinationPort *int64 `json:"destinationPort,omitempty"` + NetworkInterfaceTapConfigurations *[]NetworkInterfaceTapConfiguration `json:"networkInterfaceTapConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/predicates.go b/resource-manager/network/2024-01-01/networksecuritygroups/predicates.go new file mode 100644 index 00000000000..b9f6d3f3df5 --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/predicates.go @@ -0,0 +1,37 @@ +package networksecuritygroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p NetworkSecurityGroupOperationPredicate) Matches(input NetworkSecurityGroup) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/networksecuritygroups/version.go b/resource-manager/network/2024-01-01/networksecuritygroups/version.go new file mode 100644 index 00000000000..4ef631a254d --- /dev/null +++ b/resource-manager/network/2024-01-01/networksecuritygroups/version.go @@ -0,0 +1,12 @@ +package networksecuritygroups + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/networksecuritygroups/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/README.md b/resource-manager/network/2024-01-01/networkvirtualappliances/README.md new file mode 100644 index 00000000000..02c56e3ce80 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/README.md @@ -0,0 +1,171 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkvirtualappliances` Documentation + +The `networkvirtualappliances` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkvirtualappliances" +``` + + +### Client Initialization + +```go +client := networkvirtualappliances.NewNetworkVirtualAppliancesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `NetworkVirtualAppliancesClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := networkvirtualappliances.NewNetworkVirtualApplianceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue") + +payload := networkvirtualappliances.NetworkVirtualAppliance{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `NetworkVirtualAppliancesClient.Delete` + +```go +ctx := context.TODO() +id := networkvirtualappliances.NewNetworkVirtualApplianceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `NetworkVirtualAppliancesClient.Get` + +```go +ctx := context.TODO() +id := networkvirtualappliances.NewNetworkVirtualApplianceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue") + +read, err := client.Get(ctx, id, networkvirtualappliances.DefaultGetOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkVirtualAppliancesClient.InboundSecurityRuleCreateOrUpdate` + +```go +ctx := context.TODO() +id := networkvirtualappliances.NewInboundSecurityRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue", "inboundSecurityRuleValue") + +payload := networkvirtualappliances.InboundSecurityRule{ + // ... +} + + +if err := client.InboundSecurityRuleCreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `NetworkVirtualAppliancesClient.InboundSecurityRuleGet` + +```go +ctx := context.TODO() +id := networkvirtualappliances.NewInboundSecurityRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue", "inboundSecurityRuleValue") + +read, err := client.InboundSecurityRuleGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkVirtualAppliancesClient.List` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `NetworkVirtualAppliancesClient.ListByResourceGroup` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.ListByResourceGroup(ctx, id)` can be used to do batched pagination +items, err := client.ListByResourceGroupComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `NetworkVirtualAppliancesClient.Restart` + +```go +ctx := context.TODO() +id := networkvirtualappliances.NewNetworkVirtualApplianceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue") + +payload := networkvirtualappliances.NetworkVirtualApplianceInstanceIds{ + // ... +} + + +if err := client.RestartThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `NetworkVirtualAppliancesClient.UpdateTags` + +```go +ctx := context.TODO() +id := networkvirtualappliances.NewNetworkVirtualApplianceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue") + +payload := networkvirtualappliances.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/client.go b/resource-manager/network/2024-01-01/networkvirtualappliances/client.go new file mode 100644 index 00000000000..cfaeae574de --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/client.go @@ -0,0 +1,26 @@ +package networkvirtualappliances + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkVirtualAppliancesClient struct { + Client *resourcemanager.Client +} + +func NewNetworkVirtualAppliancesClientWithBaseURI(sdkApi sdkEnv.Api) (*NetworkVirtualAppliancesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "networkvirtualappliances", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating NetworkVirtualAppliancesClient: %+v", err) + } + + return &NetworkVirtualAppliancesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/constants.go b/resource-manager/network/2024-01-01/networkvirtualappliances/constants.go new file mode 100644 index 00000000000..a36e7b6985d --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/constants.go @@ -0,0 +1,224 @@ +package networkvirtualappliances + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundSecurityRuleType string + +const ( + InboundSecurityRuleTypeAutoExpire InboundSecurityRuleType = "AutoExpire" + InboundSecurityRuleTypePermanent InboundSecurityRuleType = "Permanent" +) + +func PossibleValuesForInboundSecurityRuleType() []string { + return []string{ + string(InboundSecurityRuleTypeAutoExpire), + string(InboundSecurityRuleTypePermanent), + } +} + +func (s *InboundSecurityRuleType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseInboundSecurityRuleType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseInboundSecurityRuleType(input string) (*InboundSecurityRuleType, error) { + vals := map[string]InboundSecurityRuleType{ + "autoexpire": InboundSecurityRuleTypeAutoExpire, + "permanent": InboundSecurityRuleTypePermanent, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := InboundSecurityRuleType(input) + return &out, nil +} + +type InboundSecurityRulesProtocol string + +const ( + InboundSecurityRulesProtocolTCP InboundSecurityRulesProtocol = "TCP" + InboundSecurityRulesProtocolUDP InboundSecurityRulesProtocol = "UDP" +) + +func PossibleValuesForInboundSecurityRulesProtocol() []string { + return []string{ + string(InboundSecurityRulesProtocolTCP), + string(InboundSecurityRulesProtocolUDP), + } +} + +func (s *InboundSecurityRulesProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseInboundSecurityRulesProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseInboundSecurityRulesProtocol(input string) (*InboundSecurityRulesProtocol, error) { + vals := map[string]InboundSecurityRulesProtocol{ + "tcp": InboundSecurityRulesProtocolTCP, + "udp": InboundSecurityRulesProtocolUDP, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := InboundSecurityRulesProtocol(input) + return &out, nil +} + +type NicTypeInRequest string + +const ( + NicTypeInRequestPrivateNic NicTypeInRequest = "PrivateNic" + NicTypeInRequestPublicNic NicTypeInRequest = "PublicNic" +) + +func PossibleValuesForNicTypeInRequest() []string { + return []string{ + string(NicTypeInRequestPrivateNic), + string(NicTypeInRequestPublicNic), + } +} + +func (s *NicTypeInRequest) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNicTypeInRequest(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNicTypeInRequest(input string) (*NicTypeInRequest, error) { + vals := map[string]NicTypeInRequest{ + "privatenic": NicTypeInRequestPrivateNic, + "publicnic": NicTypeInRequestPublicNic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NicTypeInRequest(input) + return &out, nil +} + +type NicTypeInResponse string + +const ( + NicTypeInResponseAdditionalNic NicTypeInResponse = "AdditionalNic" + NicTypeInResponsePrivateNic NicTypeInResponse = "PrivateNic" + NicTypeInResponsePublicNic NicTypeInResponse = "PublicNic" +) + +func PossibleValuesForNicTypeInResponse() []string { + return []string{ + string(NicTypeInResponseAdditionalNic), + string(NicTypeInResponsePrivateNic), + string(NicTypeInResponsePublicNic), + } +} + +func (s *NicTypeInResponse) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNicTypeInResponse(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNicTypeInResponse(input string) (*NicTypeInResponse, error) { + vals := map[string]NicTypeInResponse{ + "additionalnic": NicTypeInResponseAdditionalNic, + "privatenic": NicTypeInResponsePrivateNic, + "publicnic": NicTypeInResponsePublicNic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NicTypeInResponse(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/id_inboundsecurityrule.go b/resource-manager/network/2024-01-01/networkvirtualappliances/id_inboundsecurityrule.go new file mode 100644 index 00000000000..d920466b92f --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/id_inboundsecurityrule.go @@ -0,0 +1,139 @@ +package networkvirtualappliances + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&InboundSecurityRuleId{}) +} + +var _ resourceids.ResourceId = &InboundSecurityRuleId{} + +// InboundSecurityRuleId is a struct representing the Resource ID for a Inbound Security Rule +type InboundSecurityRuleId struct { + SubscriptionId string + ResourceGroupName string + NetworkVirtualApplianceName string + InboundSecurityRuleName string +} + +// NewInboundSecurityRuleID returns a new InboundSecurityRuleId struct +func NewInboundSecurityRuleID(subscriptionId string, resourceGroupName string, networkVirtualApplianceName string, inboundSecurityRuleName string) InboundSecurityRuleId { + return InboundSecurityRuleId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkVirtualApplianceName: networkVirtualApplianceName, + InboundSecurityRuleName: inboundSecurityRuleName, + } +} + +// ParseInboundSecurityRuleID parses 'input' into a InboundSecurityRuleId +func ParseInboundSecurityRuleID(input string) (*InboundSecurityRuleId, error) { + parser := resourceids.NewParserFromResourceIdType(&InboundSecurityRuleId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := InboundSecurityRuleId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseInboundSecurityRuleIDInsensitively parses 'input' case-insensitively into a InboundSecurityRuleId +// note: this method should only be used for API response data and not user input +func ParseInboundSecurityRuleIDInsensitively(input string) (*InboundSecurityRuleId, error) { + parser := resourceids.NewParserFromResourceIdType(&InboundSecurityRuleId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := InboundSecurityRuleId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *InboundSecurityRuleId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkVirtualApplianceName, ok = input.Parsed["networkVirtualApplianceName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkVirtualApplianceName", input) + } + + if id.InboundSecurityRuleName, ok = input.Parsed["inboundSecurityRuleName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "inboundSecurityRuleName", input) + } + + return nil +} + +// ValidateInboundSecurityRuleID checks that 'input' can be parsed as a Inbound Security Rule ID +func ValidateInboundSecurityRuleID(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 := ParseInboundSecurityRuleID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Inbound Security Rule ID +func (id InboundSecurityRuleId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkVirtualAppliances/%s/inboundSecurityRules/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkVirtualApplianceName, id.InboundSecurityRuleName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Inbound Security Rule ID +func (id InboundSecurityRuleId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkVirtualAppliances", "networkVirtualAppliances", "networkVirtualAppliances"), + resourceids.UserSpecifiedSegment("networkVirtualApplianceName", "networkVirtualApplianceValue"), + resourceids.StaticSegment("staticInboundSecurityRules", "inboundSecurityRules", "inboundSecurityRules"), + resourceids.UserSpecifiedSegment("inboundSecurityRuleName", "inboundSecurityRuleValue"), + } +} + +// String returns a human-readable description of this Inbound Security Rule ID +func (id InboundSecurityRuleId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Virtual Appliance Name: %q", id.NetworkVirtualApplianceName), + fmt.Sprintf("Inbound Security Rule Name: %q", id.InboundSecurityRuleName), + } + return fmt.Sprintf("Inbound Security Rule (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/id_inboundsecurityrule_test.go b/resource-manager/network/2024-01-01/networkvirtualappliances/id_inboundsecurityrule_test.go new file mode 100644 index 00000000000..af0ac85fdd5 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/id_inboundsecurityrule_test.go @@ -0,0 +1,327 @@ +package networkvirtualappliances + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &InboundSecurityRuleId{} + +func TestNewInboundSecurityRuleID(t *testing.T) { + id := NewInboundSecurityRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue", "inboundSecurityRuleValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkVirtualApplianceName != "networkVirtualApplianceValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkVirtualApplianceName'", id.NetworkVirtualApplianceName, "networkVirtualApplianceValue") + } + + if id.InboundSecurityRuleName != "inboundSecurityRuleValue" { + t.Fatalf("Expected %q but got %q for Segment 'InboundSecurityRuleName'", id.InboundSecurityRuleName, "inboundSecurityRuleValue") + } +} + +func TestFormatInboundSecurityRuleID(t *testing.T) { + actual := NewInboundSecurityRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue", "inboundSecurityRuleValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/inboundSecurityRules/inboundSecurityRuleValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseInboundSecurityRuleID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *InboundSecurityRuleId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/inboundSecurityRules", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/inboundSecurityRules/inboundSecurityRuleValue", + Expected: &InboundSecurityRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkVirtualApplianceName: "networkVirtualApplianceValue", + InboundSecurityRuleName: "inboundSecurityRuleValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/inboundSecurityRules/inboundSecurityRuleValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseInboundSecurityRuleID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkVirtualApplianceName != v.Expected.NetworkVirtualApplianceName { + t.Fatalf("Expected %q but got %q for NetworkVirtualApplianceName", v.Expected.NetworkVirtualApplianceName, actual.NetworkVirtualApplianceName) + } + + if actual.InboundSecurityRuleName != v.Expected.InboundSecurityRuleName { + t.Fatalf("Expected %q but got %q for InboundSecurityRuleName", v.Expected.InboundSecurityRuleName, actual.InboundSecurityRuleName) + } + + } +} + +func TestParseInboundSecurityRuleIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *InboundSecurityRuleId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS/nEtWoRkViRtUaLaPpLiAnCeVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/inboundSecurityRules", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS/nEtWoRkViRtUaLaPpLiAnCeVaLuE/iNbOuNdSeCuRiTyRuLeS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/inboundSecurityRules/inboundSecurityRuleValue", + Expected: &InboundSecurityRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkVirtualApplianceName: "networkVirtualApplianceValue", + InboundSecurityRuleName: "inboundSecurityRuleValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/inboundSecurityRules/inboundSecurityRuleValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS/nEtWoRkViRtUaLaPpLiAnCeVaLuE/iNbOuNdSeCuRiTyRuLeS/iNbOuNdSeCuRiTyRuLeVaLuE", + Expected: &InboundSecurityRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkVirtualApplianceName: "nEtWoRkViRtUaLaPpLiAnCeVaLuE", + InboundSecurityRuleName: "iNbOuNdSeCuRiTyRuLeVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS/nEtWoRkViRtUaLaPpLiAnCeVaLuE/iNbOuNdSeCuRiTyRuLeS/iNbOuNdSeCuRiTyRuLeVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseInboundSecurityRuleIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkVirtualApplianceName != v.Expected.NetworkVirtualApplianceName { + t.Fatalf("Expected %q but got %q for NetworkVirtualApplianceName", v.Expected.NetworkVirtualApplianceName, actual.NetworkVirtualApplianceName) + } + + if actual.InboundSecurityRuleName != v.Expected.InboundSecurityRuleName { + t.Fatalf("Expected %q but got %q for InboundSecurityRuleName", v.Expected.InboundSecurityRuleName, actual.InboundSecurityRuleName) + } + + } +} + +func TestSegmentsForInboundSecurityRuleId(t *testing.T) { + segments := InboundSecurityRuleId{}.Segments() + if len(segments) == 0 { + t.Fatalf("InboundSecurityRuleId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/id_networkvirtualappliance.go b/resource-manager/network/2024-01-01/networkvirtualappliances/id_networkvirtualappliance.go new file mode 100644 index 00000000000..f222e101e79 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/id_networkvirtualappliance.go @@ -0,0 +1,130 @@ +package networkvirtualappliances + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NetworkVirtualApplianceId{}) +} + +var _ resourceids.ResourceId = &NetworkVirtualApplianceId{} + +// NetworkVirtualApplianceId is a struct representing the Resource ID for a Network Virtual Appliance +type NetworkVirtualApplianceId struct { + SubscriptionId string + ResourceGroupName string + NetworkVirtualApplianceName string +} + +// NewNetworkVirtualApplianceID returns a new NetworkVirtualApplianceId struct +func NewNetworkVirtualApplianceID(subscriptionId string, resourceGroupName string, networkVirtualApplianceName string) NetworkVirtualApplianceId { + return NetworkVirtualApplianceId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkVirtualApplianceName: networkVirtualApplianceName, + } +} + +// ParseNetworkVirtualApplianceID parses 'input' into a NetworkVirtualApplianceId +func ParseNetworkVirtualApplianceID(input string) (*NetworkVirtualApplianceId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkVirtualApplianceId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkVirtualApplianceId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNetworkVirtualApplianceIDInsensitively parses 'input' case-insensitively into a NetworkVirtualApplianceId +// note: this method should only be used for API response data and not user input +func ParseNetworkVirtualApplianceIDInsensitively(input string) (*NetworkVirtualApplianceId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkVirtualApplianceId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkVirtualApplianceId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NetworkVirtualApplianceId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkVirtualApplianceName, ok = input.Parsed["networkVirtualApplianceName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkVirtualApplianceName", input) + } + + return nil +} + +// ValidateNetworkVirtualApplianceID checks that 'input' can be parsed as a Network Virtual Appliance ID +func ValidateNetworkVirtualApplianceID(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 := ParseNetworkVirtualApplianceID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Network Virtual Appliance ID +func (id NetworkVirtualApplianceId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkVirtualAppliances/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkVirtualApplianceName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Network Virtual Appliance ID +func (id NetworkVirtualApplianceId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkVirtualAppliances", "networkVirtualAppliances", "networkVirtualAppliances"), + resourceids.UserSpecifiedSegment("networkVirtualApplianceName", "networkVirtualApplianceValue"), + } +} + +// String returns a human-readable description of this Network Virtual Appliance ID +func (id NetworkVirtualApplianceId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Virtual Appliance Name: %q", id.NetworkVirtualApplianceName), + } + return fmt.Sprintf("Network Virtual Appliance (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/id_networkvirtualappliance_test.go b/resource-manager/network/2024-01-01/networkvirtualappliances/id_networkvirtualappliance_test.go new file mode 100644 index 00000000000..f7a054f6e8c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/id_networkvirtualappliance_test.go @@ -0,0 +1,282 @@ +package networkvirtualappliances + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NetworkVirtualApplianceId{} + +func TestNewNetworkVirtualApplianceID(t *testing.T) { + id := NewNetworkVirtualApplianceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkVirtualApplianceName != "networkVirtualApplianceValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkVirtualApplianceName'", id.NetworkVirtualApplianceName, "networkVirtualApplianceValue") + } +} + +func TestFormatNetworkVirtualApplianceID(t *testing.T) { + actual := NewNetworkVirtualApplianceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNetworkVirtualApplianceID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkVirtualApplianceId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue", + Expected: &NetworkVirtualApplianceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkVirtualApplianceName: "networkVirtualApplianceValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkVirtualApplianceID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkVirtualApplianceName != v.Expected.NetworkVirtualApplianceName { + t.Fatalf("Expected %q but got %q for NetworkVirtualApplianceName", v.Expected.NetworkVirtualApplianceName, actual.NetworkVirtualApplianceName) + } + + } +} + +func TestParseNetworkVirtualApplianceIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkVirtualApplianceId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue", + Expected: &NetworkVirtualApplianceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkVirtualApplianceName: "networkVirtualApplianceValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS/nEtWoRkViRtUaLaPpLiAnCeVaLuE", + Expected: &NetworkVirtualApplianceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkVirtualApplianceName: "nEtWoRkViRtUaLaPpLiAnCeVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS/nEtWoRkViRtUaLaPpLiAnCeVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkVirtualApplianceIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkVirtualApplianceName != v.Expected.NetworkVirtualApplianceName { + t.Fatalf("Expected %q but got %q for NetworkVirtualApplianceName", v.Expected.NetworkVirtualApplianceName, actual.NetworkVirtualApplianceName) + } + + } +} + +func TestSegmentsForNetworkVirtualApplianceId(t *testing.T) { + segments := NetworkVirtualApplianceId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NetworkVirtualApplianceId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/method_createorupdate.go b/resource-manager/network/2024-01-01/networkvirtualappliances/method_createorupdate.go new file mode 100644 index 00000000000..aa9b339951d --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/method_createorupdate.go @@ -0,0 +1,75 @@ +package networkvirtualappliances + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *NetworkVirtualAppliance +} + +// CreateOrUpdate ... +func (c NetworkVirtualAppliancesClient) CreateOrUpdate(ctx context.Context, id NetworkVirtualApplianceId, input NetworkVirtualAppliance) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c NetworkVirtualAppliancesClient) CreateOrUpdateThenPoll(ctx context.Context, id NetworkVirtualApplianceId, input NetworkVirtualAppliance) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/method_delete.go b/resource-manager/network/2024-01-01/networkvirtualappliances/method_delete.go new file mode 100644 index 00000000000..9eb9b6f13ac --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/method_delete.go @@ -0,0 +1,71 @@ +package networkvirtualappliances + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c NetworkVirtualAppliancesClient) Delete(ctx context.Context, id NetworkVirtualApplianceId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c NetworkVirtualAppliancesClient) DeleteThenPoll(ctx context.Context, id NetworkVirtualApplianceId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/method_get.go b/resource-manager/network/2024-01-01/networkvirtualappliances/method_get.go new file mode 100644 index 00000000000..ee11638f574 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/method_get.go @@ -0,0 +1,83 @@ +package networkvirtualappliances + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkVirtualAppliance +} + +type GetOperationOptions struct { + Expand *string +} + +func DefaultGetOperationOptions() GetOperationOptions { + return GetOperationOptions{} +} + +func (o GetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// Get ... +func (c NetworkVirtualAppliancesClient) Get(ctx context.Context, id NetworkVirtualApplianceId, options GetOperationOptions) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkVirtualAppliance + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/method_inboundsecurityrulecreateorupdate.go b/resource-manager/network/2024-01-01/networkvirtualappliances/method_inboundsecurityrulecreateorupdate.go new file mode 100644 index 00000000000..6c268a71480 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/method_inboundsecurityrulecreateorupdate.go @@ -0,0 +1,75 @@ +package networkvirtualappliances + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundSecurityRuleCreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *InboundSecurityRule +} + +// InboundSecurityRuleCreateOrUpdate ... +func (c NetworkVirtualAppliancesClient) InboundSecurityRuleCreateOrUpdate(ctx context.Context, id InboundSecurityRuleId, input InboundSecurityRule) (result InboundSecurityRuleCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// InboundSecurityRuleCreateOrUpdateThenPoll performs InboundSecurityRuleCreateOrUpdate then polls until it's completed +func (c NetworkVirtualAppliancesClient) InboundSecurityRuleCreateOrUpdateThenPoll(ctx context.Context, id InboundSecurityRuleId, input InboundSecurityRule) error { + result, err := c.InboundSecurityRuleCreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing InboundSecurityRuleCreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after InboundSecurityRuleCreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/method_inboundsecurityruleget.go b/resource-manager/network/2024-01-01/networkvirtualappliances/method_inboundsecurityruleget.go new file mode 100644 index 00000000000..4d8e9aa6337 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/method_inboundsecurityruleget.go @@ -0,0 +1,54 @@ +package networkvirtualappliances + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundSecurityRuleGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *InboundSecurityRule +} + +// InboundSecurityRuleGet ... +func (c NetworkVirtualAppliancesClient) InboundSecurityRuleGet(ctx context.Context, id InboundSecurityRuleId) (result InboundSecurityRuleGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model InboundSecurityRule + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/method_list.go b/resource-manager/network/2024-01-01/networkvirtualappliances/method_list.go new file mode 100644 index 00000000000..8797c5f9720 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/method_list.go @@ -0,0 +1,93 @@ +package networkvirtualappliances + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NetworkVirtualAppliance +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []NetworkVirtualAppliance +} + +// List ... +func (c NetworkVirtualAppliancesClient) List(ctx context.Context, id commonids.SubscriptionId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/networkVirtualAppliances", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NetworkVirtualAppliance `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c NetworkVirtualAppliancesClient) ListComplete(ctx context.Context, id commonids.SubscriptionId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, NetworkVirtualApplianceOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c NetworkVirtualAppliancesClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate NetworkVirtualApplianceOperationPredicate) (result ListCompleteResult, err error) { + items := make([]NetworkVirtualAppliance, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/method_listbyresourcegroup.go b/resource-manager/network/2024-01-01/networkvirtualappliances/method_listbyresourcegroup.go new file mode 100644 index 00000000000..4557de37925 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/method_listbyresourcegroup.go @@ -0,0 +1,93 @@ +package networkvirtualappliances + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListByResourceGroupOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NetworkVirtualAppliance +} + +type ListByResourceGroupCompleteResult struct { + LatestHttpResponse *http.Response + Items []NetworkVirtualAppliance +} + +// ListByResourceGroup ... +func (c NetworkVirtualAppliancesClient) ListByResourceGroup(ctx context.Context, id commonids.ResourceGroupId) (result ListByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/networkVirtualAppliances", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NetworkVirtualAppliance `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListByResourceGroupComplete retrieves all the results into a single object +func (c NetworkVirtualAppliancesClient) ListByResourceGroupComplete(ctx context.Context, id commonids.ResourceGroupId) (ListByResourceGroupCompleteResult, error) { + return c.ListByResourceGroupCompleteMatchingPredicate(ctx, id, NetworkVirtualApplianceOperationPredicate{}) +} + +// ListByResourceGroupCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c NetworkVirtualAppliancesClient) ListByResourceGroupCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate NetworkVirtualApplianceOperationPredicate) (result ListByResourceGroupCompleteResult, err error) { + items := make([]NetworkVirtualAppliance, 0) + + resp, err := c.ListByResourceGroup(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListByResourceGroupCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/method_restart.go b/resource-manager/network/2024-01-01/networkvirtualappliances/method_restart.go new file mode 100644 index 00000000000..3a260c048e5 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/method_restart.go @@ -0,0 +1,75 @@ +package networkvirtualappliances + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RestartOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *NetworkVirtualApplianceInstanceIds +} + +// Restart ... +func (c NetworkVirtualAppliancesClient) Restart(ctx context.Context, id NetworkVirtualApplianceId, input NetworkVirtualApplianceInstanceIds) (result RestartOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/restart", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// RestartThenPoll performs Restart then polls until it's completed +func (c NetworkVirtualAppliancesClient) RestartThenPoll(ctx context.Context, id NetworkVirtualApplianceId, input NetworkVirtualApplianceInstanceIds) error { + result, err := c.Restart(ctx, id, input) + if err != nil { + return fmt.Errorf("performing Restart: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Restart: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/method_updatetags.go b/resource-manager/network/2024-01-01/networkvirtualappliances/method_updatetags.go new file mode 100644 index 00000000000..25a5f9e94c5 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/method_updatetags.go @@ -0,0 +1,58 @@ +package networkvirtualappliances + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkVirtualAppliance +} + +// UpdateTags ... +func (c NetworkVirtualAppliancesClient) UpdateTags(ctx context.Context, id NetworkVirtualApplianceId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkVirtualAppliance + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/model_delegationproperties.go b/resource-manager/network/2024-01-01/networkvirtualappliances/model_delegationproperties.go new file mode 100644 index 00000000000..cf2170e1c38 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/model_delegationproperties.go @@ -0,0 +1,9 @@ +package networkvirtualappliances + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DelegationProperties struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/model_inboundsecurityrule.go b/resource-manager/network/2024-01-01/networkvirtualappliances/model_inboundsecurityrule.go new file mode 100644 index 00000000000..f921a8c6534 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/model_inboundsecurityrule.go @@ -0,0 +1,12 @@ +package networkvirtualappliances + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundSecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundSecurityRuleProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/model_inboundsecurityruleproperties.go b/resource-manager/network/2024-01-01/networkvirtualappliances/model_inboundsecurityruleproperties.go new file mode 100644 index 00000000000..c4dafbd39cc --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/model_inboundsecurityruleproperties.go @@ -0,0 +1,10 @@ +package networkvirtualappliances + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundSecurityRuleProperties struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RuleType *InboundSecurityRuleType `json:"ruleType,omitempty"` + Rules *[]InboundSecurityRules `json:"rules,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/model_inboundsecurityrules.go b/resource-manager/network/2024-01-01/networkvirtualappliances/model_inboundsecurityrules.go new file mode 100644 index 00000000000..c8c2d565176 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/model_inboundsecurityrules.go @@ -0,0 +1,13 @@ +package networkvirtualappliances + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundSecurityRules struct { + AppliesOn *[]string `json:"appliesOn,omitempty"` + DestinationPortRange *int64 `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Name *string `json:"name,omitempty"` + Protocol *InboundSecurityRulesProtocol `json:"protocol,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/model_internetingresspublicipsproperties.go b/resource-manager/network/2024-01-01/networkvirtualappliances/model_internetingresspublicipsproperties.go new file mode 100644 index 00000000000..692265ca5f9 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/model_internetingresspublicipsproperties.go @@ -0,0 +1,8 @@ +package networkvirtualappliances + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InternetIngressPublicIPsProperties struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/model_networkvirtualappliance.go b/resource-manager/network/2024-01-01/networkvirtualappliances/model_networkvirtualappliance.go new file mode 100644 index 00000000000..03612c989df --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/model_networkvirtualappliance.go @@ -0,0 +1,19 @@ +package networkvirtualappliances + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkVirtualAppliance struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkVirtualAppliancePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/model_networkvirtualapplianceinstanceids.go b/resource-manager/network/2024-01-01/networkvirtualappliances/model_networkvirtualapplianceinstanceids.go new file mode 100644 index 00000000000..3d9d42b1694 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/model_networkvirtualapplianceinstanceids.go @@ -0,0 +1,8 @@ +package networkvirtualappliances + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkVirtualApplianceInstanceIds struct { + InstanceIds *[]string `json:"instanceIds,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/model_networkvirtualappliancepropertiesformat.go b/resource-manager/network/2024-01-01/networkvirtualappliances/model_networkvirtualappliancepropertiesformat.go new file mode 100644 index 00000000000..17e239bf354 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/model_networkvirtualappliancepropertiesformat.go @@ -0,0 +1,26 @@ +package networkvirtualappliances + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkVirtualAppliancePropertiesFormat struct { + AdditionalNics *[]VirtualApplianceAdditionalNicProperties `json:"additionalNics,omitempty"` + AddressPrefix *string `json:"addressPrefix,omitempty"` + BootStrapConfigurationBlobs *[]string `json:"bootStrapConfigurationBlobs,omitempty"` + CloudInitConfiguration *string `json:"cloudInitConfiguration,omitempty"` + CloudInitConfigurationBlobs *[]string `json:"cloudInitConfigurationBlobs,omitempty"` + Delegation *DelegationProperties `json:"delegation,omitempty"` + DeploymentType *string `json:"deploymentType,omitempty"` + InboundSecurityRules *[]SubResource `json:"inboundSecurityRules,omitempty"` + InternetIngressPublicIPs *[]InternetIngressPublicIPsProperties `json:"internetIngressPublicIps,omitempty"` + NetworkProfile *NetworkVirtualAppliancePropertiesFormatNetworkProfile `json:"networkProfile,omitempty"` + NvaSku *VirtualApplianceSkuProperties `json:"nvaSku,omitempty"` + PartnerManagedResource *PartnerManagedResourceProperties `json:"partnerManagedResource,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SshPublicKey *string `json:"sshPublicKey,omitempty"` + VirtualApplianceAsn *int64 `json:"virtualApplianceAsn,omitempty"` + VirtualApplianceConnections *[]SubResource `json:"virtualApplianceConnections,omitempty"` + VirtualApplianceNics *[]VirtualApplianceNicProperties `json:"virtualApplianceNics,omitempty"` + VirtualApplianceSites *[]SubResource `json:"virtualApplianceSites,omitempty"` + VirtualHub *SubResource `json:"virtualHub,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/model_networkvirtualappliancepropertiesformatnetworkprofile.go b/resource-manager/network/2024-01-01/networkvirtualappliances/model_networkvirtualappliancepropertiesformatnetworkprofile.go new file mode 100644 index 00000000000..0d4f966f36c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/model_networkvirtualappliancepropertiesformatnetworkprofile.go @@ -0,0 +1,8 @@ +package networkvirtualappliances + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkVirtualAppliancePropertiesFormatNetworkProfile struct { + NetworkInterfaceConfigurations *[]VirtualApplianceNetworkInterfaceConfiguration `json:"networkInterfaceConfigurations,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/model_partnermanagedresourceproperties.go b/resource-manager/network/2024-01-01/networkvirtualappliances/model_partnermanagedresourceproperties.go new file mode 100644 index 00000000000..e89793be377 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/model_partnermanagedresourceproperties.go @@ -0,0 +1,10 @@ +package networkvirtualappliances + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PartnerManagedResourceProperties struct { + Id *string `json:"id,omitempty"` + InternalLoadBalancerId *string `json:"internalLoadBalancerId,omitempty"` + StandardLoadBalancerId *string `json:"standardLoadBalancerId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/model_subresource.go b/resource-manager/network/2024-01-01/networkvirtualappliances/model_subresource.go new file mode 100644 index 00000000000..8df29cf1031 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/model_subresource.go @@ -0,0 +1,8 @@ +package networkvirtualappliances + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/model_tagsobject.go b/resource-manager/network/2024-01-01/networkvirtualappliances/model_tagsobject.go new file mode 100644 index 00000000000..3ad1ec8468c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/model_tagsobject.go @@ -0,0 +1,8 @@ +package networkvirtualappliances + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/model_virtualapplianceadditionalnicproperties.go b/resource-manager/network/2024-01-01/networkvirtualappliances/model_virtualapplianceadditionalnicproperties.go new file mode 100644 index 00000000000..7eb59c309c1 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/model_virtualapplianceadditionalnicproperties.go @@ -0,0 +1,9 @@ +package networkvirtualappliances + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualApplianceAdditionalNicProperties struct { + HasPublicIP *bool `json:"hasPublicIp,omitempty"` + Name *string `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/model_virtualapplianceipconfiguration.go b/resource-manager/network/2024-01-01/networkvirtualappliances/model_virtualapplianceipconfiguration.go new file mode 100644 index 00000000000..1ebade78697 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/model_virtualapplianceipconfiguration.go @@ -0,0 +1,9 @@ +package networkvirtualappliances + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualApplianceIPConfiguration struct { + Name *string `json:"name,omitempty"` + Properties *VirtualApplianceIPConfigurationProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/model_virtualapplianceipconfigurationproperties.go b/resource-manager/network/2024-01-01/networkvirtualappliances/model_virtualapplianceipconfigurationproperties.go new file mode 100644 index 00000000000..830f6a29d9a --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/model_virtualapplianceipconfigurationproperties.go @@ -0,0 +1,8 @@ +package networkvirtualappliances + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualApplianceIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/model_virtualappliancenetworkinterfaceconfiguration.go b/resource-manager/network/2024-01-01/networkvirtualappliances/model_virtualappliancenetworkinterfaceconfiguration.go new file mode 100644 index 00000000000..de88f83ae8d --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/model_virtualappliancenetworkinterfaceconfiguration.go @@ -0,0 +1,9 @@ +package networkvirtualappliances + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualApplianceNetworkInterfaceConfiguration struct { + Properties *VirtualApplianceNetworkInterfaceConfigurationProperties `json:"properties,omitempty"` + Type *NicTypeInRequest `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/model_virtualappliancenetworkinterfaceconfigurationproperties.go b/resource-manager/network/2024-01-01/networkvirtualappliances/model_virtualappliancenetworkinterfaceconfigurationproperties.go new file mode 100644 index 00000000000..436f144e6fc --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/model_virtualappliancenetworkinterfaceconfigurationproperties.go @@ -0,0 +1,8 @@ +package networkvirtualappliances + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualApplianceNetworkInterfaceConfigurationProperties struct { + IPConfigurations *[]VirtualApplianceIPConfiguration `json:"ipConfigurations,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/model_virtualappliancenicproperties.go b/resource-manager/network/2024-01-01/networkvirtualappliances/model_virtualappliancenicproperties.go new file mode 100644 index 00000000000..0823febcef5 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/model_virtualappliancenicproperties.go @@ -0,0 +1,12 @@ +package networkvirtualappliances + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualApplianceNicProperties struct { + InstanceName *string `json:"instanceName,omitempty"` + Name *string `json:"name,omitempty"` + NicType *NicTypeInResponse `json:"nicType,omitempty"` + PrivateIPAddress *string `json:"privateIpAddress,omitempty"` + PublicIPAddress *string `json:"publicIpAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/model_virtualapplianceskuproperties.go b/resource-manager/network/2024-01-01/networkvirtualappliances/model_virtualapplianceskuproperties.go new file mode 100644 index 00000000000..b194523806f --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/model_virtualapplianceskuproperties.go @@ -0,0 +1,10 @@ +package networkvirtualappliances + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualApplianceSkuProperties struct { + BundledScaleUnit *string `json:"bundledScaleUnit,omitempty"` + MarketPlaceVersion *string `json:"marketPlaceVersion,omitempty"` + Vendor *string `json:"vendor,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/predicates.go b/resource-manager/network/2024-01-01/networkvirtualappliances/predicates.go new file mode 100644 index 00000000000..676b2af6c25 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/predicates.go @@ -0,0 +1,37 @@ +package networkvirtualappliances + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkVirtualApplianceOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p NetworkVirtualApplianceOperationPredicate) Matches(input NetworkVirtualAppliance) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/networkvirtualappliances/version.go b/resource-manager/network/2024-01-01/networkvirtualappliances/version.go new file mode 100644 index 00000000000..b101360aad8 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkvirtualappliances/version.go @@ -0,0 +1,12 @@ +package networkvirtualappliances + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/networkvirtualappliances/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/README.md b/resource-manager/network/2024-01-01/networkwatchers/README.md new file mode 100644 index 00000000000..9ee882dd19c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/README.md @@ -0,0 +1,331 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkwatchers` Documentation + +The `networkwatchers` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/networkwatchers" +``` + + +### Client Initialization + +```go +client := networkwatchers.NewNetworkWatchersClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `NetworkWatchersClient.CheckConnectivity` + +```go +ctx := context.TODO() +id := networkwatchers.NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + +payload := networkwatchers.ConnectivityParameters{ + // ... +} + + +if err := client.CheckConnectivityThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `NetworkWatchersClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := networkwatchers.NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + +payload := networkwatchers.NetworkWatcher{ + // ... +} + + +read, err := client.CreateOrUpdate(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkWatchersClient.Delete` + +```go +ctx := context.TODO() +id := networkwatchers.NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `NetworkWatchersClient.Get` + +```go +ctx := context.TODO() +id := networkwatchers.NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkWatchersClient.GetAzureReachabilityReport` + +```go +ctx := context.TODO() +id := networkwatchers.NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + +payload := networkwatchers.AzureReachabilityReportParameters{ + // ... +} + + +if err := client.GetAzureReachabilityReportThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `NetworkWatchersClient.GetFlowLogStatus` + +```go +ctx := context.TODO() +id := networkwatchers.NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + +payload := networkwatchers.FlowLogStatusParameters{ + // ... +} + + +if err := client.GetFlowLogStatusThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `NetworkWatchersClient.GetNetworkConfigurationDiagnostic` + +```go +ctx := context.TODO() +id := networkwatchers.NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + +payload := networkwatchers.NetworkConfigurationDiagnosticParameters{ + // ... +} + + +if err := client.GetNetworkConfigurationDiagnosticThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `NetworkWatchersClient.GetNextHop` + +```go +ctx := context.TODO() +id := networkwatchers.NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + +payload := networkwatchers.NextHopParameters{ + // ... +} + + +if err := client.GetNextHopThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `NetworkWatchersClient.GetTopology` + +```go +ctx := context.TODO() +id := networkwatchers.NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + +payload := networkwatchers.TopologyParameters{ + // ... +} + + +read, err := client.GetTopology(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkWatchersClient.GetTroubleshooting` + +```go +ctx := context.TODO() +id := networkwatchers.NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + +payload := networkwatchers.TroubleshootingParameters{ + // ... +} + + +if err := client.GetTroubleshootingThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `NetworkWatchersClient.GetTroubleshootingResult` + +```go +ctx := context.TODO() +id := networkwatchers.NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + +payload := networkwatchers.QueryTroubleshootingParameters{ + // ... +} + + +if err := client.GetTroubleshootingResultThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `NetworkWatchersClient.GetVMSecurityRules` + +```go +ctx := context.TODO() +id := networkwatchers.NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + +payload := networkwatchers.SecurityGroupViewParameters{ + // ... +} + + +if err := client.GetVMSecurityRulesThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `NetworkWatchersClient.List` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +read, err := client.List(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkWatchersClient.ListAll` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +read, err := client.ListAll(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkWatchersClient.ListAvailableProviders` + +```go +ctx := context.TODO() +id := networkwatchers.NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + +payload := networkwatchers.AvailableProvidersListParameters{ + // ... +} + + +if err := client.ListAvailableProvidersThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `NetworkWatchersClient.SetFlowLogConfiguration` + +```go +ctx := context.TODO() +id := networkwatchers.NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + +payload := networkwatchers.FlowLogInformation{ + // ... +} + + +if err := client.SetFlowLogConfigurationThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `NetworkWatchersClient.UpdateTags` + +```go +ctx := context.TODO() +id := networkwatchers.NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + +payload := networkwatchers.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `NetworkWatchersClient.VerifyIPFlow` + +```go +ctx := context.TODO() +id := networkwatchers.NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + +payload := networkwatchers.VerificationIPFlowParameters{ + // ... +} + + +if err := client.VerifyIPFlowThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` diff --git a/resource-manager/network/2024-01-01/networkwatchers/client.go b/resource-manager/network/2024-01-01/networkwatchers/client.go new file mode 100644 index 00000000000..2068ab14817 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/client.go @@ -0,0 +1,26 @@ +package networkwatchers + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkWatchersClient struct { + Client *resourcemanager.Client +} + +func NewNetworkWatchersClientWithBaseURI(sdkApi sdkEnv.Api) (*NetworkWatchersClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "networkwatchers", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating NetworkWatchersClient: %+v", err) + } + + return &NetworkWatchersClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/constants.go b/resource-manager/network/2024-01-01/networkwatchers/constants.go new file mode 100644 index 00000000000..2e400cad0f7 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/constants.go @@ -0,0 +1,855 @@ +package networkwatchers + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Access string + +const ( + AccessAllow Access = "Allow" + AccessDeny Access = "Deny" +) + +func PossibleValuesForAccess() []string { + return []string{ + string(AccessAllow), + string(AccessDeny), + } +} + +func (s *Access) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAccess(input string) (*Access, error) { + vals := map[string]Access{ + "allow": AccessAllow, + "deny": AccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := Access(input) + return &out, nil +} + +type AssociationType string + +const ( + AssociationTypeAssociated AssociationType = "Associated" + AssociationTypeContains AssociationType = "Contains" +) + +func PossibleValuesForAssociationType() []string { + return []string{ + string(AssociationTypeAssociated), + string(AssociationTypeContains), + } +} + +func (s *AssociationType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAssociationType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAssociationType(input string) (*AssociationType, error) { + vals := map[string]AssociationType{ + "associated": AssociationTypeAssociated, + "contains": AssociationTypeContains, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := AssociationType(input) + return &out, nil +} + +type ConnectionStatus string + +const ( + ConnectionStatusConnected ConnectionStatus = "Connected" + ConnectionStatusDegraded ConnectionStatus = "Degraded" + ConnectionStatusDisconnected ConnectionStatus = "Disconnected" + ConnectionStatusUnknown ConnectionStatus = "Unknown" +) + +func PossibleValuesForConnectionStatus() []string { + return []string{ + string(ConnectionStatusConnected), + string(ConnectionStatusDegraded), + string(ConnectionStatusDisconnected), + string(ConnectionStatusUnknown), + } +} + +func (s *ConnectionStatus) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseConnectionStatus(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseConnectionStatus(input string) (*ConnectionStatus, error) { + vals := map[string]ConnectionStatus{ + "connected": ConnectionStatusConnected, + "degraded": ConnectionStatusDegraded, + "disconnected": ConnectionStatusDisconnected, + "unknown": ConnectionStatusUnknown, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ConnectionStatus(input) + return &out, nil +} + +type Direction string + +const ( + DirectionInbound Direction = "Inbound" + DirectionOutbound Direction = "Outbound" +) + +func PossibleValuesForDirection() []string { + return []string{ + string(DirectionInbound), + string(DirectionOutbound), + } +} + +func (s *Direction) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDirection(input string) (*Direction, error) { + vals := map[string]Direction{ + "inbound": DirectionInbound, + "outbound": DirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := Direction(input) + return &out, nil +} + +type EffectiveSecurityRuleProtocol string + +const ( + EffectiveSecurityRuleProtocolAll EffectiveSecurityRuleProtocol = "All" + EffectiveSecurityRuleProtocolTcp EffectiveSecurityRuleProtocol = "Tcp" + EffectiveSecurityRuleProtocolUdp EffectiveSecurityRuleProtocol = "Udp" +) + +func PossibleValuesForEffectiveSecurityRuleProtocol() []string { + return []string{ + string(EffectiveSecurityRuleProtocolAll), + string(EffectiveSecurityRuleProtocolTcp), + string(EffectiveSecurityRuleProtocolUdp), + } +} + +func (s *EffectiveSecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseEffectiveSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseEffectiveSecurityRuleProtocol(input string) (*EffectiveSecurityRuleProtocol, error) { + vals := map[string]EffectiveSecurityRuleProtocol{ + "all": EffectiveSecurityRuleProtocolAll, + "tcp": EffectiveSecurityRuleProtocolTcp, + "udp": EffectiveSecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := EffectiveSecurityRuleProtocol(input) + return &out, nil +} + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} + +type HTTPMethod string + +const ( + HTTPMethodGet HTTPMethod = "Get" +) + +func PossibleValuesForHTTPMethod() []string { + return []string{ + string(HTTPMethodGet), + } +} + +func (s *HTTPMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseHTTPMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseHTTPMethod(input string) (*HTTPMethod, error) { + vals := map[string]HTTPMethod{ + "get": HTTPMethodGet, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := HTTPMethod(input) + return &out, nil +} + +type IPFlowProtocol string + +const ( + IPFlowProtocolTCP IPFlowProtocol = "TCP" + IPFlowProtocolUDP IPFlowProtocol = "UDP" +) + +func PossibleValuesForIPFlowProtocol() []string { + return []string{ + string(IPFlowProtocolTCP), + string(IPFlowProtocolUDP), + } +} + +func (s *IPFlowProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPFlowProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPFlowProtocol(input string) (*IPFlowProtocol, error) { + vals := map[string]IPFlowProtocol{ + "tcp": IPFlowProtocolTCP, + "udp": IPFlowProtocolUDP, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPFlowProtocol(input) + return &out, nil +} + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} + +type IssueType string + +const ( + IssueTypeAgentStopped IssueType = "AgentStopped" + IssueTypeDnsResolution IssueType = "DnsResolution" + IssueTypeGuestFirewall IssueType = "GuestFirewall" + IssueTypeNetworkSecurityRule IssueType = "NetworkSecurityRule" + IssueTypePlatform IssueType = "Platform" + IssueTypePortThrottled IssueType = "PortThrottled" + IssueTypeSocketBind IssueType = "SocketBind" + IssueTypeUnknown IssueType = "Unknown" + IssueTypeUserDefinedRoute IssueType = "UserDefinedRoute" +) + +func PossibleValuesForIssueType() []string { + return []string{ + string(IssueTypeAgentStopped), + string(IssueTypeDnsResolution), + string(IssueTypeGuestFirewall), + string(IssueTypeNetworkSecurityRule), + string(IssueTypePlatform), + string(IssueTypePortThrottled), + string(IssueTypeSocketBind), + string(IssueTypeUnknown), + string(IssueTypeUserDefinedRoute), + } +} + +func (s *IssueType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIssueType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIssueType(input string) (*IssueType, error) { + vals := map[string]IssueType{ + "agentstopped": IssueTypeAgentStopped, + "dnsresolution": IssueTypeDnsResolution, + "guestfirewall": IssueTypeGuestFirewall, + "networksecurityrule": IssueTypeNetworkSecurityRule, + "platform": IssueTypePlatform, + "portthrottled": IssueTypePortThrottled, + "socketbind": IssueTypeSocketBind, + "unknown": IssueTypeUnknown, + "userdefinedroute": IssueTypeUserDefinedRoute, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IssueType(input) + return &out, nil +} + +type NextHopType string + +const ( + NextHopTypeHyperNetGateway NextHopType = "HyperNetGateway" + NextHopTypeInternet NextHopType = "Internet" + NextHopTypeNone NextHopType = "None" + NextHopTypeVirtualAppliance NextHopType = "VirtualAppliance" + NextHopTypeVirtualNetworkGateway NextHopType = "VirtualNetworkGateway" + NextHopTypeVnetLocal NextHopType = "VnetLocal" +) + +func PossibleValuesForNextHopType() []string { + return []string{ + string(NextHopTypeHyperNetGateway), + string(NextHopTypeInternet), + string(NextHopTypeNone), + string(NextHopTypeVirtualAppliance), + string(NextHopTypeVirtualNetworkGateway), + string(NextHopTypeVnetLocal), + } +} + +func (s *NextHopType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNextHopType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNextHopType(input string) (*NextHopType, error) { + vals := map[string]NextHopType{ + "hypernetgateway": NextHopTypeHyperNetGateway, + "internet": NextHopTypeInternet, + "none": NextHopTypeNone, + "virtualappliance": NextHopTypeVirtualAppliance, + "virtualnetworkgateway": NextHopTypeVirtualNetworkGateway, + "vnetlocal": NextHopTypeVnetLocal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NextHopType(input) + return &out, nil +} + +type Origin string + +const ( + OriginInbound Origin = "Inbound" + OriginLocal Origin = "Local" + OriginOutbound Origin = "Outbound" +) + +func PossibleValuesForOrigin() []string { + return []string{ + string(OriginInbound), + string(OriginLocal), + string(OriginOutbound), + } +} + +func (s *Origin) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseOrigin(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseOrigin(input string) (*Origin, error) { + vals := map[string]Origin{ + "inbound": OriginInbound, + "local": OriginLocal, + "outbound": OriginOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := Origin(input) + return &out, nil +} + +type Protocol string + +const ( + ProtocolHTTP Protocol = "Http" + ProtocolHTTPS Protocol = "Https" + ProtocolIcmp Protocol = "Icmp" + ProtocolTcp Protocol = "Tcp" +) + +func PossibleValuesForProtocol() []string { + return []string{ + string(ProtocolHTTP), + string(ProtocolHTTPS), + string(ProtocolIcmp), + string(ProtocolTcp), + } +} + +func (s *Protocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProtocol(input string) (*Protocol, error) { + vals := map[string]Protocol{ + "http": ProtocolHTTP, + "https": ProtocolHTTPS, + "icmp": ProtocolIcmp, + "tcp": ProtocolTcp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := Protocol(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type SecurityRuleAccess string + +const ( + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +func PossibleValuesForSecurityRuleAccess() []string { + return []string{ + string(SecurityRuleAccessAllow), + string(SecurityRuleAccessDeny), + } +} + +func (s *SecurityRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleAccess(input string) (*SecurityRuleAccess, error) { + vals := map[string]SecurityRuleAccess{ + "allow": SecurityRuleAccessAllow, + "deny": SecurityRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleAccess(input) + return &out, nil +} + +type SecurityRuleDirection string + +const ( + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityRuleDirection() []string { + return []string{ + string(SecurityRuleDirectionInbound), + string(SecurityRuleDirectionOutbound), + } +} + +func (s *SecurityRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleDirection(input string) (*SecurityRuleDirection, error) { + vals := map[string]SecurityRuleDirection{ + "inbound": SecurityRuleDirectionInbound, + "outbound": SecurityRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleDirection(input) + return &out, nil +} + +type SecurityRuleProtocol string + +const ( + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + SecurityRuleProtocolAny SecurityRuleProtocol = "*" + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + SecurityRuleProtocolTcp SecurityRuleProtocol = "Tcp" + SecurityRuleProtocolUdp SecurityRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityRuleProtocol() []string { + return []string{ + string(SecurityRuleProtocolAh), + string(SecurityRuleProtocolAny), + string(SecurityRuleProtocolEsp), + string(SecurityRuleProtocolIcmp), + string(SecurityRuleProtocolTcp), + string(SecurityRuleProtocolUdp), + } +} + +func (s *SecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleProtocol(input string) (*SecurityRuleProtocol, error) { + vals := map[string]SecurityRuleProtocol{ + "ah": SecurityRuleProtocolAh, + "*": SecurityRuleProtocolAny, + "esp": SecurityRuleProtocolEsp, + "icmp": SecurityRuleProtocolIcmp, + "tcp": SecurityRuleProtocolTcp, + "udp": SecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleProtocol(input) + return &out, nil +} + +type Severity string + +const ( + SeverityError Severity = "Error" + SeverityWarning Severity = "Warning" +) + +func PossibleValuesForSeverity() []string { + return []string{ + string(SeverityError), + string(SeverityWarning), + } +} + +func (s *Severity) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSeverity(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSeverity(input string) (*Severity, error) { + vals := map[string]Severity{ + "error": SeverityError, + "warning": SeverityWarning, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := Severity(input) + return &out, nil +} + +type VerbosityLevel string + +const ( + VerbosityLevelFull VerbosityLevel = "Full" + VerbosityLevelMinimum VerbosityLevel = "Minimum" + VerbosityLevelNormal VerbosityLevel = "Normal" +) + +func PossibleValuesForVerbosityLevel() []string { + return []string{ + string(VerbosityLevelFull), + string(VerbosityLevelMinimum), + string(VerbosityLevelNormal), + } +} + +func (s *VerbosityLevel) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVerbosityLevel(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVerbosityLevel(input string) (*VerbosityLevel, error) { + vals := map[string]VerbosityLevel{ + "full": VerbosityLevelFull, + "minimum": VerbosityLevelMinimum, + "normal": VerbosityLevelNormal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VerbosityLevel(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/id_networkwatcher.go b/resource-manager/network/2024-01-01/networkwatchers/id_networkwatcher.go new file mode 100644 index 00000000000..b8bb1f7f4a6 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/id_networkwatcher.go @@ -0,0 +1,130 @@ +package networkwatchers + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NetworkWatcherId{}) +} + +var _ resourceids.ResourceId = &NetworkWatcherId{} + +// NetworkWatcherId is a struct representing the Resource ID for a Network Watcher +type NetworkWatcherId struct { + SubscriptionId string + ResourceGroupName string + NetworkWatcherName string +} + +// NewNetworkWatcherID returns a new NetworkWatcherId struct +func NewNetworkWatcherID(subscriptionId string, resourceGroupName string, networkWatcherName string) NetworkWatcherId { + return NetworkWatcherId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkWatcherName: networkWatcherName, + } +} + +// ParseNetworkWatcherID parses 'input' into a NetworkWatcherId +func ParseNetworkWatcherID(input string) (*NetworkWatcherId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkWatcherId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkWatcherId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNetworkWatcherIDInsensitively parses 'input' case-insensitively into a NetworkWatcherId +// note: this method should only be used for API response data and not user input +func ParseNetworkWatcherIDInsensitively(input string) (*NetworkWatcherId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkWatcherId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkWatcherId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NetworkWatcherId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkWatcherName, ok = input.Parsed["networkWatcherName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkWatcherName", input) + } + + return nil +} + +// ValidateNetworkWatcherID checks that 'input' can be parsed as a Network Watcher ID +func ValidateNetworkWatcherID(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 := ParseNetworkWatcherID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Network Watcher ID +func (id NetworkWatcherId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkWatchers/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkWatcherName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Network Watcher ID +func (id NetworkWatcherId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkWatchers", "networkWatchers", "networkWatchers"), + resourceids.UserSpecifiedSegment("networkWatcherName", "networkWatcherValue"), + } +} + +// String returns a human-readable description of this Network Watcher ID +func (id NetworkWatcherId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Watcher Name: %q", id.NetworkWatcherName), + } + return fmt.Sprintf("Network Watcher (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/id_networkwatcher_test.go b/resource-manager/network/2024-01-01/networkwatchers/id_networkwatcher_test.go new file mode 100644 index 00000000000..7136dc10343 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/id_networkwatcher_test.go @@ -0,0 +1,282 @@ +package networkwatchers + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NetworkWatcherId{} + +func TestNewNetworkWatcherID(t *testing.T) { + id := NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkWatcherName != "networkWatcherValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkWatcherName'", id.NetworkWatcherName, "networkWatcherValue") + } +} + +func TestFormatNetworkWatcherID(t *testing.T) { + actual := NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNetworkWatcherID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkWatcherId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue", + Expected: &NetworkWatcherId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkWatcherName: "networkWatcherValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkWatcherID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkWatcherName != v.Expected.NetworkWatcherName { + t.Fatalf("Expected %q but got %q for NetworkWatcherName", v.Expected.NetworkWatcherName, actual.NetworkWatcherName) + } + + } +} + +func TestParseNetworkWatcherIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkWatcherId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue", + Expected: &NetworkWatcherId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkWatcherName: "networkWatcherValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs/nEtWoRkWaTcHeRvAlUe", + Expected: &NetworkWatcherId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkWatcherName: "nEtWoRkWaTcHeRvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs/nEtWoRkWaTcHeRvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkWatcherIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkWatcherName != v.Expected.NetworkWatcherName { + t.Fatalf("Expected %q but got %q for NetworkWatcherName", v.Expected.NetworkWatcherName, actual.NetworkWatcherName) + } + + } +} + +func TestSegmentsForNetworkWatcherId(t *testing.T) { + segments := NetworkWatcherId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NetworkWatcherId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/method_checkconnectivity.go b/resource-manager/network/2024-01-01/networkwatchers/method_checkconnectivity.go new file mode 100644 index 00000000000..a41a47a9dbf --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/method_checkconnectivity.go @@ -0,0 +1,75 @@ +package networkwatchers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CheckConnectivityOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *ConnectivityInformation +} + +// CheckConnectivity ... +func (c NetworkWatchersClient) CheckConnectivity(ctx context.Context, id NetworkWatcherId, input ConnectivityParameters) (result CheckConnectivityOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/connectivityCheck", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CheckConnectivityThenPoll performs CheckConnectivity then polls until it's completed +func (c NetworkWatchersClient) CheckConnectivityThenPoll(ctx context.Context, id NetworkWatcherId, input ConnectivityParameters) error { + result, err := c.CheckConnectivity(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CheckConnectivity: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CheckConnectivity: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/method_createorupdate.go b/resource-manager/network/2024-01-01/networkwatchers/method_createorupdate.go new file mode 100644 index 00000000000..ecb006e2007 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/method_createorupdate.go @@ -0,0 +1,59 @@ +package networkwatchers + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkWatcher +} + +// CreateOrUpdate ... +func (c NetworkWatchersClient) CreateOrUpdate(ctx context.Context, id NetworkWatcherId, input NetworkWatcher) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkWatcher + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/method_delete.go b/resource-manager/network/2024-01-01/networkwatchers/method_delete.go new file mode 100644 index 00000000000..4c59058ef03 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/method_delete.go @@ -0,0 +1,70 @@ +package networkwatchers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c NetworkWatchersClient) Delete(ctx context.Context, id NetworkWatcherId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c NetworkWatchersClient) DeleteThenPoll(ctx context.Context, id NetworkWatcherId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/method_get.go b/resource-manager/network/2024-01-01/networkwatchers/method_get.go new file mode 100644 index 00000000000..000ae087b18 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/method_get.go @@ -0,0 +1,54 @@ +package networkwatchers + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkWatcher +} + +// Get ... +func (c NetworkWatchersClient) Get(ctx context.Context, id NetworkWatcherId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkWatcher + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/method_getazurereachabilityreport.go b/resource-manager/network/2024-01-01/networkwatchers/method_getazurereachabilityreport.go new file mode 100644 index 00000000000..54a23dc1c18 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/method_getazurereachabilityreport.go @@ -0,0 +1,75 @@ +package networkwatchers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetAzureReachabilityReportOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *AzureReachabilityReport +} + +// GetAzureReachabilityReport ... +func (c NetworkWatchersClient) GetAzureReachabilityReport(ctx context.Context, id NetworkWatcherId, input AzureReachabilityReportParameters) (result GetAzureReachabilityReportOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/azureReachabilityReport", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// GetAzureReachabilityReportThenPoll performs GetAzureReachabilityReport then polls until it's completed +func (c NetworkWatchersClient) GetAzureReachabilityReportThenPoll(ctx context.Context, id NetworkWatcherId, input AzureReachabilityReportParameters) error { + result, err := c.GetAzureReachabilityReport(ctx, id, input) + if err != nil { + return fmt.Errorf("performing GetAzureReachabilityReport: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after GetAzureReachabilityReport: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/method_getflowlogstatus.go b/resource-manager/network/2024-01-01/networkwatchers/method_getflowlogstatus.go new file mode 100644 index 00000000000..af6f975c691 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/method_getflowlogstatus.go @@ -0,0 +1,75 @@ +package networkwatchers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetFlowLogStatusOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *FlowLogInformation +} + +// GetFlowLogStatus ... +func (c NetworkWatchersClient) GetFlowLogStatus(ctx context.Context, id NetworkWatcherId, input FlowLogStatusParameters) (result GetFlowLogStatusOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/queryFlowLogStatus", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// GetFlowLogStatusThenPoll performs GetFlowLogStatus then polls until it's completed +func (c NetworkWatchersClient) GetFlowLogStatusThenPoll(ctx context.Context, id NetworkWatcherId, input FlowLogStatusParameters) error { + result, err := c.GetFlowLogStatus(ctx, id, input) + if err != nil { + return fmt.Errorf("performing GetFlowLogStatus: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after GetFlowLogStatus: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/method_getnetworkconfigurationdiagnostic.go b/resource-manager/network/2024-01-01/networkwatchers/method_getnetworkconfigurationdiagnostic.go new file mode 100644 index 00000000000..de67c4ef4d4 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/method_getnetworkconfigurationdiagnostic.go @@ -0,0 +1,75 @@ +package networkwatchers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetNetworkConfigurationDiagnosticOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *NetworkConfigurationDiagnosticResponse +} + +// GetNetworkConfigurationDiagnostic ... +func (c NetworkWatchersClient) GetNetworkConfigurationDiagnostic(ctx context.Context, id NetworkWatcherId, input NetworkConfigurationDiagnosticParameters) (result GetNetworkConfigurationDiagnosticOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/networkConfigurationDiagnostic", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// GetNetworkConfigurationDiagnosticThenPoll performs GetNetworkConfigurationDiagnostic then polls until it's completed +func (c NetworkWatchersClient) GetNetworkConfigurationDiagnosticThenPoll(ctx context.Context, id NetworkWatcherId, input NetworkConfigurationDiagnosticParameters) error { + result, err := c.GetNetworkConfigurationDiagnostic(ctx, id, input) + if err != nil { + return fmt.Errorf("performing GetNetworkConfigurationDiagnostic: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after GetNetworkConfigurationDiagnostic: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/method_getnexthop.go b/resource-manager/network/2024-01-01/networkwatchers/method_getnexthop.go new file mode 100644 index 00000000000..56fe43d4d11 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/method_getnexthop.go @@ -0,0 +1,75 @@ +package networkwatchers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetNextHopOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *NextHopResult +} + +// GetNextHop ... +func (c NetworkWatchersClient) GetNextHop(ctx context.Context, id NetworkWatcherId, input NextHopParameters) (result GetNextHopOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/nextHop", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// GetNextHopThenPoll performs GetNextHop then polls until it's completed +func (c NetworkWatchersClient) GetNextHopThenPoll(ctx context.Context, id NetworkWatcherId, input NextHopParameters) error { + result, err := c.GetNextHop(ctx, id, input) + if err != nil { + return fmt.Errorf("performing GetNextHop: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after GetNextHop: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/method_gettopology.go b/resource-manager/network/2024-01-01/networkwatchers/method_gettopology.go new file mode 100644 index 00000000000..8a1c6caef60 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/method_gettopology.go @@ -0,0 +1,59 @@ +package networkwatchers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetTopologyOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *Topology +} + +// GetTopology ... +func (c NetworkWatchersClient) GetTopology(ctx context.Context, id NetworkWatcherId, input TopologyParameters) (result GetTopologyOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/topology", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model Topology + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/method_gettroubleshooting.go b/resource-manager/network/2024-01-01/networkwatchers/method_gettroubleshooting.go new file mode 100644 index 00000000000..9b5522b8119 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/method_gettroubleshooting.go @@ -0,0 +1,75 @@ +package networkwatchers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetTroubleshootingOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *TroubleshootingResult +} + +// GetTroubleshooting ... +func (c NetworkWatchersClient) GetTroubleshooting(ctx context.Context, id NetworkWatcherId, input TroubleshootingParameters) (result GetTroubleshootingOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/troubleshoot", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// GetTroubleshootingThenPoll performs GetTroubleshooting then polls until it's completed +func (c NetworkWatchersClient) GetTroubleshootingThenPoll(ctx context.Context, id NetworkWatcherId, input TroubleshootingParameters) error { + result, err := c.GetTroubleshooting(ctx, id, input) + if err != nil { + return fmt.Errorf("performing GetTroubleshooting: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after GetTroubleshooting: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/method_gettroubleshootingresult.go b/resource-manager/network/2024-01-01/networkwatchers/method_gettroubleshootingresult.go new file mode 100644 index 00000000000..fc9651abd21 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/method_gettroubleshootingresult.go @@ -0,0 +1,75 @@ +package networkwatchers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetTroubleshootingResultOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *TroubleshootingResult +} + +// GetTroubleshootingResult ... +func (c NetworkWatchersClient) GetTroubleshootingResult(ctx context.Context, id NetworkWatcherId, input QueryTroubleshootingParameters) (result GetTroubleshootingResultOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/queryTroubleshootResult", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// GetTroubleshootingResultThenPoll performs GetTroubleshootingResult then polls until it's completed +func (c NetworkWatchersClient) GetTroubleshootingResultThenPoll(ctx context.Context, id NetworkWatcherId, input QueryTroubleshootingParameters) error { + result, err := c.GetTroubleshootingResult(ctx, id, input) + if err != nil { + return fmt.Errorf("performing GetTroubleshootingResult: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after GetTroubleshootingResult: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/method_getvmsecurityrules.go b/resource-manager/network/2024-01-01/networkwatchers/method_getvmsecurityrules.go new file mode 100644 index 00000000000..1c8a917ab09 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/method_getvmsecurityrules.go @@ -0,0 +1,75 @@ +package networkwatchers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetVMSecurityRulesOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *SecurityGroupViewResult +} + +// GetVMSecurityRules ... +func (c NetworkWatchersClient) GetVMSecurityRules(ctx context.Context, id NetworkWatcherId, input SecurityGroupViewParameters) (result GetVMSecurityRulesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/securityGroupView", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// GetVMSecurityRulesThenPoll performs GetVMSecurityRules then polls until it's completed +func (c NetworkWatchersClient) GetVMSecurityRulesThenPoll(ctx context.Context, id NetworkWatcherId, input SecurityGroupViewParameters) error { + result, err := c.GetVMSecurityRules(ctx, id, input) + if err != nil { + return fmt.Errorf("performing GetVMSecurityRules: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after GetVMSecurityRules: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/method_list.go b/resource-manager/network/2024-01-01/networkwatchers/method_list.go new file mode 100644 index 00000000000..8263c7b4f93 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/method_list.go @@ -0,0 +1,56 @@ +package networkwatchers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkWatcherListResult +} + +// List ... +func (c NetworkWatchersClient) List(ctx context.Context, id commonids.ResourceGroupId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/networkWatchers", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkWatcherListResult + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/method_listall.go b/resource-manager/network/2024-01-01/networkwatchers/method_listall.go new file mode 100644 index 00000000000..845a2449946 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/method_listall.go @@ -0,0 +1,56 @@ +package networkwatchers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAllOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkWatcherListResult +} + +// ListAll ... +func (c NetworkWatchersClient) ListAll(ctx context.Context, id commonids.SubscriptionId) (result ListAllOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/networkWatchers", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkWatcherListResult + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/method_listavailableproviders.go b/resource-manager/network/2024-01-01/networkwatchers/method_listavailableproviders.go new file mode 100644 index 00000000000..12768222c1e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/method_listavailableproviders.go @@ -0,0 +1,75 @@ +package networkwatchers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAvailableProvidersOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *AvailableProvidersList +} + +// ListAvailableProviders ... +func (c NetworkWatchersClient) ListAvailableProviders(ctx context.Context, id NetworkWatcherId, input AvailableProvidersListParameters) (result ListAvailableProvidersOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/availableProvidersList", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// ListAvailableProvidersThenPoll performs ListAvailableProviders then polls until it's completed +func (c NetworkWatchersClient) ListAvailableProvidersThenPoll(ctx context.Context, id NetworkWatcherId, input AvailableProvidersListParameters) error { + result, err := c.ListAvailableProviders(ctx, id, input) + if err != nil { + return fmt.Errorf("performing ListAvailableProviders: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after ListAvailableProviders: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/method_setflowlogconfiguration.go b/resource-manager/network/2024-01-01/networkwatchers/method_setflowlogconfiguration.go new file mode 100644 index 00000000000..183183d38e9 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/method_setflowlogconfiguration.go @@ -0,0 +1,75 @@ +package networkwatchers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SetFlowLogConfigurationOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *FlowLogInformation +} + +// SetFlowLogConfiguration ... +func (c NetworkWatchersClient) SetFlowLogConfiguration(ctx context.Context, id NetworkWatcherId, input FlowLogInformation) (result SetFlowLogConfigurationOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/configureFlowLog", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// SetFlowLogConfigurationThenPoll performs SetFlowLogConfiguration then polls until it's completed +func (c NetworkWatchersClient) SetFlowLogConfigurationThenPoll(ctx context.Context, id NetworkWatcherId, input FlowLogInformation) error { + result, err := c.SetFlowLogConfiguration(ctx, id, input) + if err != nil { + return fmt.Errorf("performing SetFlowLogConfiguration: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after SetFlowLogConfiguration: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/method_updatetags.go b/resource-manager/network/2024-01-01/networkwatchers/method_updatetags.go new file mode 100644 index 00000000000..1ace78e7dc5 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/method_updatetags.go @@ -0,0 +1,58 @@ +package networkwatchers + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkWatcher +} + +// UpdateTags ... +func (c NetworkWatchersClient) UpdateTags(ctx context.Context, id NetworkWatcherId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkWatcher + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/method_verifyipflow.go b/resource-manager/network/2024-01-01/networkwatchers/method_verifyipflow.go new file mode 100644 index 00000000000..1ef266cf37c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/method_verifyipflow.go @@ -0,0 +1,75 @@ +package networkwatchers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VerifyIPFlowOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VerificationIPFlowResult +} + +// VerifyIPFlow ... +func (c NetworkWatchersClient) VerifyIPFlow(ctx context.Context, id NetworkWatcherId, input VerificationIPFlowParameters) (result VerifyIPFlowOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/ipFlowVerify", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VerifyIPFlowThenPoll performs VerifyIPFlow then polls until it's completed +func (c NetworkWatchersClient) VerifyIPFlowThenPoll(ctx context.Context, id NetworkWatcherId, input VerificationIPFlowParameters) error { + result, err := c.VerifyIPFlow(ctx, id, input) + if err != nil { + return fmt.Errorf("performing VerifyIPFlow: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VerifyIPFlow: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/networkwatchers/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..d93456b39dc --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/networkwatchers/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..1edb4c6e9fd --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_availableproviderslist.go b/resource-manager/network/2024-01-01/networkwatchers/model_availableproviderslist.go new file mode 100644 index 00000000000..f97306f3eb4 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_availableproviderslist.go @@ -0,0 +1,8 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AvailableProvidersList struct { + Countries []AvailableProvidersListCountry `json:"countries"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_availableproviderslistcity.go b/resource-manager/network/2024-01-01/networkwatchers/model_availableproviderslistcity.go new file mode 100644 index 00000000000..ad5727a8ad0 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_availableproviderslistcity.go @@ -0,0 +1,9 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AvailableProvidersListCity struct { + CityName *string `json:"cityName,omitempty"` + Providers *[]string `json:"providers,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_availableproviderslistcountry.go b/resource-manager/network/2024-01-01/networkwatchers/model_availableproviderslistcountry.go new file mode 100644 index 00000000000..98f3996ac17 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_availableproviderslistcountry.go @@ -0,0 +1,10 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AvailableProvidersListCountry struct { + CountryName *string `json:"countryName,omitempty"` + Providers *[]string `json:"providers,omitempty"` + States *[]AvailableProvidersListState `json:"states,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_availableproviderslistparameters.go b/resource-manager/network/2024-01-01/networkwatchers/model_availableproviderslistparameters.go new file mode 100644 index 00000000000..e884f5cdb40 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_availableproviderslistparameters.go @@ -0,0 +1,11 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AvailableProvidersListParameters struct { + AzureLocations *[]string `json:"azureLocations,omitempty"` + City *string `json:"city,omitempty"` + Country *string `json:"country,omitempty"` + State *string `json:"state,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_availableprovidersliststate.go b/resource-manager/network/2024-01-01/networkwatchers/model_availableprovidersliststate.go new file mode 100644 index 00000000000..3504bafbcf0 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_availableprovidersliststate.go @@ -0,0 +1,10 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AvailableProvidersListState struct { + Cities *[]AvailableProvidersListCity `json:"cities,omitempty"` + Providers *[]string `json:"providers,omitempty"` + StateName *string `json:"stateName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_azurereachabilityreport.go b/resource-manager/network/2024-01-01/networkwatchers/model_azurereachabilityreport.go new file mode 100644 index 00000000000..e045a1522bc --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_azurereachabilityreport.go @@ -0,0 +1,10 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureReachabilityReport struct { + AggregationLevel string `json:"aggregationLevel"` + ProviderLocation AzureReachabilityReportLocation `json:"providerLocation"` + ReachabilityReport []AzureReachabilityReportItem `json:"reachabilityReport"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_azurereachabilityreportitem.go b/resource-manager/network/2024-01-01/networkwatchers/model_azurereachabilityreportitem.go new file mode 100644 index 00000000000..50e7da37b25 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_azurereachabilityreportitem.go @@ -0,0 +1,10 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureReachabilityReportItem struct { + AzureLocation *string `json:"azureLocation,omitempty"` + Latencies *[]AzureReachabilityReportLatencyInfo `json:"latencies,omitempty"` + Provider *string `json:"provider,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_azurereachabilityreportlatencyinfo.go b/resource-manager/network/2024-01-01/networkwatchers/model_azurereachabilityreportlatencyinfo.go new file mode 100644 index 00000000000..6755737d707 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_azurereachabilityreportlatencyinfo.go @@ -0,0 +1,27 @@ +package networkwatchers + +import ( + "time" + + "github.com/hashicorp/go-azure-helpers/lang/dates" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureReachabilityReportLatencyInfo struct { + Score *int64 `json:"score,omitempty"` + TimeStamp *string `json:"timeStamp,omitempty"` +} + +func (o *AzureReachabilityReportLatencyInfo) GetTimeStampAsTime() (*time.Time, error) { + if o.TimeStamp == nil { + return nil, nil + } + return dates.ParseAsFormat(o.TimeStamp, "2006-01-02T15:04:05Z07:00") +} + +func (o *AzureReachabilityReportLatencyInfo) SetTimeStampAsTime(input time.Time) { + formatted := input.Format("2006-01-02T15:04:05Z07:00") + o.TimeStamp = &formatted +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_azurereachabilityreportlocation.go b/resource-manager/network/2024-01-01/networkwatchers/model_azurereachabilityreportlocation.go new file mode 100644 index 00000000000..15b7ba2a6ee --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_azurereachabilityreportlocation.go @@ -0,0 +1,10 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureReachabilityReportLocation struct { + City *string `json:"city,omitempty"` + Country string `json:"country"` + State *string `json:"state,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_azurereachabilityreportparameters.go b/resource-manager/network/2024-01-01/networkwatchers/model_azurereachabilityreportparameters.go new file mode 100644 index 00000000000..81d91ee2074 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_azurereachabilityreportparameters.go @@ -0,0 +1,36 @@ +package networkwatchers + +import ( + "time" + + "github.com/hashicorp/go-azure-helpers/lang/dates" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureReachabilityReportParameters struct { + AzureLocations *[]string `json:"azureLocations,omitempty"` + EndTime string `json:"endTime"` + ProviderLocation AzureReachabilityReportLocation `json:"providerLocation"` + Providers *[]string `json:"providers,omitempty"` + StartTime string `json:"startTime"` +} + +func (o *AzureReachabilityReportParameters) GetEndTimeAsTime() (*time.Time, error) { + return dates.ParseAsFormat(&o.EndTime, "2006-01-02T15:04:05Z07:00") +} + +func (o *AzureReachabilityReportParameters) SetEndTimeAsTime(input time.Time) { + formatted := input.Format("2006-01-02T15:04:05Z07:00") + o.EndTime = formatted +} + +func (o *AzureReachabilityReportParameters) GetStartTimeAsTime() (*time.Time, error) { + return dates.ParseAsFormat(&o.StartTime, "2006-01-02T15:04:05Z07:00") +} + +func (o *AzureReachabilityReportParameters) SetStartTimeAsTime(input time.Time) { + formatted := input.Format("2006-01-02T15:04:05Z07:00") + o.StartTime = formatted +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_connectivitydestination.go b/resource-manager/network/2024-01-01/networkwatchers/model_connectivitydestination.go new file mode 100644 index 00000000000..fd92ab947d7 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_connectivitydestination.go @@ -0,0 +1,10 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectivityDestination struct { + Address *string `json:"address,omitempty"` + Port *int64 `json:"port,omitempty"` + ResourceId *string `json:"resourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_connectivityhop.go b/resource-manager/network/2024-01-01/networkwatchers/model_connectivityhop.go new file mode 100644 index 00000000000..b199aef7d99 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_connectivityhop.go @@ -0,0 +1,16 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectivityHop struct { + Address *string `json:"address,omitempty"` + Id *string `json:"id,omitempty"` + Issues *[]ConnectivityIssue `json:"issues,omitempty"` + Links *[]HopLink `json:"links,omitempty"` + NextHopIds *[]string `json:"nextHopIds,omitempty"` + PreviousHopIds *[]string `json:"previousHopIds,omitempty"` + PreviousLinks *[]HopLink `json:"previousLinks,omitempty"` + ResourceId *string `json:"resourceId,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_connectivityinformation.go b/resource-manager/network/2024-01-01/networkwatchers/model_connectivityinformation.go new file mode 100644 index 00000000000..0ce37ca8e82 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_connectivityinformation.go @@ -0,0 +1,14 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectivityInformation struct { + AvgLatencyInMs *int64 `json:"avgLatencyInMs,omitempty"` + ConnectionStatus *ConnectionStatus `json:"connectionStatus,omitempty"` + Hops *[]ConnectivityHop `json:"hops,omitempty"` + MaxLatencyInMs *int64 `json:"maxLatencyInMs,omitempty"` + MinLatencyInMs *int64 `json:"minLatencyInMs,omitempty"` + ProbesFailed *int64 `json:"probesFailed,omitempty"` + ProbesSent *int64 `json:"probesSent,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_connectivityissue.go b/resource-manager/network/2024-01-01/networkwatchers/model_connectivityissue.go new file mode 100644 index 00000000000..ba9f23e149c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_connectivityissue.go @@ -0,0 +1,11 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectivityIssue struct { + Context *[]map[string]string `json:"context,omitempty"` + Origin *Origin `json:"origin,omitempty"` + Severity *Severity `json:"severity,omitempty"` + Type *IssueType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_connectivityparameters.go b/resource-manager/network/2024-01-01/networkwatchers/model_connectivityparameters.go new file mode 100644 index 00000000000..2fd0eea7e96 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_connectivityparameters.go @@ -0,0 +1,12 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectivityParameters struct { + Destination ConnectivityDestination `json:"destination"` + PreferredIPVersion *IPVersion `json:"preferredIPVersion,omitempty"` + Protocol *Protocol `json:"protocol,omitempty"` + ProtocolConfiguration *ProtocolConfiguration `json:"protocolConfiguration,omitempty"` + Source ConnectivitySource `json:"source"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_connectivitysource.go b/resource-manager/network/2024-01-01/networkwatchers/model_connectivitysource.go new file mode 100644 index 00000000000..471f2e79c48 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_connectivitysource.go @@ -0,0 +1,9 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectivitySource struct { + Port *int64 `json:"port,omitempty"` + ResourceId string `json:"resourceId"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_effectivenetworksecurityrule.go b/resource-manager/network/2024-01-01/networkwatchers/model_effectivenetworksecurityrule.go new file mode 100644 index 00000000000..738fb4c583d --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_effectivenetworksecurityrule.go @@ -0,0 +1,22 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type EffectiveNetworkSecurityRule struct { + Access *SecurityRuleAccess `json:"access,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction *SecurityRuleDirection `json:"direction,omitempty"` + ExpandedDestinationAddressPrefix *[]string `json:"expandedDestinationAddressPrefix,omitempty"` + ExpandedSourceAddressPrefix *[]string `json:"expandedSourceAddressPrefix,omitempty"` + Name *string `json:"name,omitempty"` + Priority *int64 `json:"priority,omitempty"` + Protocol *EffectiveSecurityRuleProtocol `json:"protocol,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_evaluatednetworksecuritygroup.go b/resource-manager/network/2024-01-01/networkwatchers/model_evaluatednetworksecuritygroup.go new file mode 100644 index 00000000000..c471d60f7c3 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_evaluatednetworksecuritygroup.go @@ -0,0 +1,11 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type EvaluatedNetworkSecurityGroup struct { + AppliedTo *string `json:"appliedTo,omitempty"` + MatchedRule *MatchedRule `json:"matchedRule,omitempty"` + NetworkSecurityGroupId *string `json:"networkSecurityGroupId,omitempty"` + RulesEvaluationResult *[]NetworkSecurityRulesEvaluationResult `json:"rulesEvaluationResult,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/networkwatchers/model_flowlogformatparameters.go new file mode 100644 index 00000000000..804e14368ee --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_flowloginformation.go b/resource-manager/network/2024-01-01/networkwatchers/model_flowloginformation.go new file mode 100644 index 00000000000..af84bbc4202 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_flowloginformation.go @@ -0,0 +1,15 @@ +package networkwatchers + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogInformation struct { + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Properties FlowLogProperties `json:"properties"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_flowlogproperties.go b/resource-manager/network/2024-01-01/networkwatchers/model_flowlogproperties.go new file mode 100644 index 00000000000..c51e0fd967e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_flowlogproperties.go @@ -0,0 +1,11 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogProperties struct { + Enabled bool `json:"enabled"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_flowlogstatusparameters.go b/resource-manager/network/2024-01-01/networkwatchers/model_flowlogstatusparameters.go new file mode 100644 index 00000000000..7adddbce138 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_flowlogstatusparameters.go @@ -0,0 +1,8 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogStatusParameters struct { + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_hoplink.go b/resource-manager/network/2024-01-01/networkwatchers/model_hoplink.go new file mode 100644 index 00000000000..ad0c1a88c32 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_hoplink.go @@ -0,0 +1,13 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HopLink struct { + Context *map[string]string `json:"context,omitempty"` + Issues *[]ConnectivityIssue `json:"issues,omitempty"` + LinkType *string `json:"linkType,omitempty"` + NextHopId *string `json:"nextHopId,omitempty"` + Properties *HopLinkProperties `json:"properties,omitempty"` + ResourceId *string `json:"resourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_hoplinkproperties.go b/resource-manager/network/2024-01-01/networkwatchers/model_hoplinkproperties.go new file mode 100644 index 00000000000..efce6d24581 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_hoplinkproperties.go @@ -0,0 +1,10 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HopLinkProperties struct { + RoundTripTimeAvg *int64 `json:"roundTripTimeAvg,omitempty"` + RoundTripTimeMax *int64 `json:"roundTripTimeMax,omitempty"` + RoundTripTimeMin *int64 `json:"roundTripTimeMin,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_httpconfiguration.go b/resource-manager/network/2024-01-01/networkwatchers/model_httpconfiguration.go new file mode 100644 index 00000000000..e469c4b2e2a --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_httpconfiguration.go @@ -0,0 +1,10 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HTTPConfiguration struct { + Headers *[]HTTPHeader `json:"headers,omitempty"` + Method *HTTPMethod `json:"method,omitempty"` + ValidStatusCodes *[]int64 `json:"validStatusCodes,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_httpheader.go b/resource-manager/network/2024-01-01/networkwatchers/model_httpheader.go new file mode 100644 index 00000000000..5f0b41332f3 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_httpheader.go @@ -0,0 +1,9 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HTTPHeader struct { + Name *string `json:"name,omitempty"` + Value *string `json:"value,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_matchedrule.go b/resource-manager/network/2024-01-01/networkwatchers/model_matchedrule.go new file mode 100644 index 00000000000..7ccb0bf4ff1 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_matchedrule.go @@ -0,0 +1,9 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type MatchedRule struct { + Action *string `json:"action,omitempty"` + RuleName *string `json:"ruleName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_networkconfigurationdiagnosticparameters.go b/resource-manager/network/2024-01-01/networkwatchers/model_networkconfigurationdiagnosticparameters.go new file mode 100644 index 00000000000..62d57417ce8 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_networkconfigurationdiagnosticparameters.go @@ -0,0 +1,10 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkConfigurationDiagnosticParameters struct { + Profiles []NetworkConfigurationDiagnosticProfile `json:"profiles"` + TargetResourceId string `json:"targetResourceId"` + VerbosityLevel *VerbosityLevel `json:"verbosityLevel,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_networkconfigurationdiagnosticprofile.go b/resource-manager/network/2024-01-01/networkwatchers/model_networkconfigurationdiagnosticprofile.go new file mode 100644 index 00000000000..2591d3cb1bc --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_networkconfigurationdiagnosticprofile.go @@ -0,0 +1,12 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkConfigurationDiagnosticProfile struct { + Destination string `json:"destination"` + DestinationPort string `json:"destinationPort"` + Direction Direction `json:"direction"` + Protocol string `json:"protocol"` + Source string `json:"source"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_networkconfigurationdiagnosticresponse.go b/resource-manager/network/2024-01-01/networkwatchers/model_networkconfigurationdiagnosticresponse.go new file mode 100644 index 00000000000..a30c9686e57 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_networkconfigurationdiagnosticresponse.go @@ -0,0 +1,8 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkConfigurationDiagnosticResponse struct { + Results *[]NetworkConfigurationDiagnosticResult `json:"results,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_networkconfigurationdiagnosticresult.go b/resource-manager/network/2024-01-01/networkwatchers/model_networkconfigurationdiagnosticresult.go new file mode 100644 index 00000000000..c0c796377f7 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_networkconfigurationdiagnosticresult.go @@ -0,0 +1,9 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkConfigurationDiagnosticResult struct { + NetworkSecurityGroupResult *NetworkSecurityGroupResult `json:"networkSecurityGroupResult,omitempty"` + Profile *NetworkConfigurationDiagnosticProfile `json:"profile,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_networkinterfaceassociation.go b/resource-manager/network/2024-01-01/networkwatchers/model_networkinterfaceassociation.go new file mode 100644 index 00000000000..0583e0225fd --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_networkinterfaceassociation.go @@ -0,0 +1,9 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceAssociation struct { + Id *string `json:"id,omitempty"` + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_networksecuritygroupresult.go b/resource-manager/network/2024-01-01/networkwatchers/model_networksecuritygroupresult.go new file mode 100644 index 00000000000..60f125dff53 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_networksecuritygroupresult.go @@ -0,0 +1,9 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupResult struct { + EvaluatedNetworkSecurityGroups *[]EvaluatedNetworkSecurityGroup `json:"evaluatedNetworkSecurityGroups,omitempty"` + SecurityRuleAccessResult *SecurityRuleAccess `json:"securityRuleAccessResult,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_networksecurityrulesevaluationresult.go b/resource-manager/network/2024-01-01/networkwatchers/model_networksecurityrulesevaluationresult.go new file mode 100644 index 00000000000..c54e4c0dc86 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_networksecurityrulesevaluationresult.go @@ -0,0 +1,13 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityRulesEvaluationResult struct { + DestinationMatched *bool `json:"destinationMatched,omitempty"` + DestinationPortMatched *bool `json:"destinationPortMatched,omitempty"` + Name *string `json:"name,omitempty"` + ProtocolMatched *bool `json:"protocolMatched,omitempty"` + SourceMatched *bool `json:"sourceMatched,omitempty"` + SourcePortMatched *bool `json:"sourcePortMatched,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_networkwatcher.go b/resource-manager/network/2024-01-01/networkwatchers/model_networkwatcher.go new file mode 100644 index 00000000000..4f58f1863d8 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_networkwatcher.go @@ -0,0 +1,14 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkWatcher struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkWatcherPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_networkwatcherlistresult.go b/resource-manager/network/2024-01-01/networkwatchers/model_networkwatcherlistresult.go new file mode 100644 index 00000000000..b78fc59bf86 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_networkwatcherlistresult.go @@ -0,0 +1,8 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkWatcherListResult struct { + Value *[]NetworkWatcher `json:"value,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_networkwatcherpropertiesformat.go b/resource-manager/network/2024-01-01/networkwatchers/model_networkwatcherpropertiesformat.go new file mode 100644 index 00000000000..d0d1c07ed9e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_networkwatcherpropertiesformat.go @@ -0,0 +1,8 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkWatcherPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_nexthopparameters.go b/resource-manager/network/2024-01-01/networkwatchers/model_nexthopparameters.go new file mode 100644 index 00000000000..b8a7b00f4f3 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_nexthopparameters.go @@ -0,0 +1,11 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NextHopParameters struct { + DestinationIPAddress string `json:"destinationIPAddress"` + SourceIPAddress string `json:"sourceIPAddress"` + TargetNicResourceId *string `json:"targetNicResourceId,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_nexthopresult.go b/resource-manager/network/2024-01-01/networkwatchers/model_nexthopresult.go new file mode 100644 index 00000000000..a8a2ba32b01 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_nexthopresult.go @@ -0,0 +1,10 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NextHopResult struct { + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + NextHopType *NextHopType `json:"nextHopType,omitempty"` + RouteTableId *string `json:"routeTableId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_protocolconfiguration.go b/resource-manager/network/2024-01-01/networkwatchers/model_protocolconfiguration.go new file mode 100644 index 00000000000..e4592ed2fe5 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_protocolconfiguration.go @@ -0,0 +1,8 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProtocolConfiguration struct { + HTTPConfiguration *HTTPConfiguration `json:"HTTPConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_querytroubleshootingparameters.go b/resource-manager/network/2024-01-01/networkwatchers/model_querytroubleshootingparameters.go new file mode 100644 index 00000000000..d6bf4abce2c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_querytroubleshootingparameters.go @@ -0,0 +1,8 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type QueryTroubleshootingParameters struct { + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/networkwatchers/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..64b952abec0 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_securitygroupnetworkinterface.go b/resource-manager/network/2024-01-01/networkwatchers/model_securitygroupnetworkinterface.go new file mode 100644 index 00000000000..e22bcd0a9ed --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_securitygroupnetworkinterface.go @@ -0,0 +1,9 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityGroupNetworkInterface struct { + Id *string `json:"id,omitempty"` + SecurityRuleAssociations *SecurityRuleAssociations `json:"securityRuleAssociations,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_securitygroupviewparameters.go b/resource-manager/network/2024-01-01/networkwatchers/model_securitygroupviewparameters.go new file mode 100644 index 00000000000..9cbdf854c96 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_securitygroupviewparameters.go @@ -0,0 +1,8 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityGroupViewParameters struct { + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_securitygroupviewresult.go b/resource-manager/network/2024-01-01/networkwatchers/model_securitygroupviewresult.go new file mode 100644 index 00000000000..eff95f05919 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_securitygroupviewresult.go @@ -0,0 +1,8 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityGroupViewResult struct { + NetworkInterfaces *[]SecurityGroupNetworkInterface `json:"networkInterfaces,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_securityrule.go b/resource-manager/network/2024-01-01/networkwatchers/model_securityrule.go new file mode 100644 index 00000000000..c1dded9fca0 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_securityrule.go @@ -0,0 +1,12 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_securityruleassociations.go b/resource-manager/network/2024-01-01/networkwatchers/model_securityruleassociations.go new file mode 100644 index 00000000000..0ce7cc68a9c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_securityruleassociations.go @@ -0,0 +1,11 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRuleAssociations struct { + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + EffectiveSecurityRules *[]EffectiveNetworkSecurityRule `json:"effectiveSecurityRules,omitempty"` + NetworkInterfaceAssociation *NetworkInterfaceAssociation `json:"networkInterfaceAssociation,omitempty"` + SubnetAssociation *SubnetAssociation `json:"subnetAssociation,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_securityrulepropertiesformat.go b/resource-manager/network/2024-01-01/networkwatchers/model_securityrulepropertiesformat.go new file mode 100644 index 00000000000..ae100c6915e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_securityrulepropertiesformat.go @@ -0,0 +1,23 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulePropertiesFormat struct { + Access SecurityRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction SecurityRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_subnetassociation.go b/resource-manager/network/2024-01-01/networkwatchers/model_subnetassociation.go new file mode 100644 index 00000000000..8b89222ca9e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_subnetassociation.go @@ -0,0 +1,9 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetAssociation struct { + Id *string `json:"id,omitempty"` + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_subresource.go b/resource-manager/network/2024-01-01/networkwatchers/model_subresource.go new file mode 100644 index 00000000000..b98b68a29dd --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_subresource.go @@ -0,0 +1,8 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_tagsobject.go b/resource-manager/network/2024-01-01/networkwatchers/model_tagsobject.go new file mode 100644 index 00000000000..f022d1785d9 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_tagsobject.go @@ -0,0 +1,8 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_topology.go b/resource-manager/network/2024-01-01/networkwatchers/model_topology.go new file mode 100644 index 00000000000..c582a36ae6c --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_topology.go @@ -0,0 +1,41 @@ +package networkwatchers + +import ( + "time" + + "github.com/hashicorp/go-azure-helpers/lang/dates" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Topology struct { + CreatedDateTime *string `json:"createdDateTime,omitempty"` + Id *string `json:"id,omitempty"` + LastModified *string `json:"lastModified,omitempty"` + Resources *[]TopologyResource `json:"resources,omitempty"` +} + +func (o *Topology) GetCreatedDateTimeAsTime() (*time.Time, error) { + if o.CreatedDateTime == nil { + return nil, nil + } + return dates.ParseAsFormat(o.CreatedDateTime, "2006-01-02T15:04:05Z07:00") +} + +func (o *Topology) SetCreatedDateTimeAsTime(input time.Time) { + formatted := input.Format("2006-01-02T15:04:05Z07:00") + o.CreatedDateTime = &formatted +} + +func (o *Topology) GetLastModifiedAsTime() (*time.Time, error) { + if o.LastModified == nil { + return nil, nil + } + return dates.ParseAsFormat(o.LastModified, "2006-01-02T15:04:05Z07:00") +} + +func (o *Topology) SetLastModifiedAsTime(input time.Time) { + formatted := input.Format("2006-01-02T15:04:05Z07:00") + o.LastModified = &formatted +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_topologyassociation.go b/resource-manager/network/2024-01-01/networkwatchers/model_topologyassociation.go new file mode 100644 index 00000000000..9607c85650b --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_topologyassociation.go @@ -0,0 +1,10 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TopologyAssociation struct { + AssociationType *AssociationType `json:"associationType,omitempty"` + Name *string `json:"name,omitempty"` + ResourceId *string `json:"resourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_topologyparameters.go b/resource-manager/network/2024-01-01/networkwatchers/model_topologyparameters.go new file mode 100644 index 00000000000..25bc77b5345 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_topologyparameters.go @@ -0,0 +1,10 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TopologyParameters struct { + TargetResourceGroupName *string `json:"targetResourceGroupName,omitempty"` + TargetSubnet *SubResource `json:"targetSubnet,omitempty"` + TargetVirtualNetwork *SubResource `json:"targetVirtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_topologyresource.go b/resource-manager/network/2024-01-01/networkwatchers/model_topologyresource.go new file mode 100644 index 00000000000..e126c541c8e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_topologyresource.go @@ -0,0 +1,11 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TopologyResource struct { + Associations *[]TopologyAssociation `json:"associations,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/networkwatchers/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..63df321f46e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/networkwatchers/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..415ca1a8f5e --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_troubleshootingdetails.go b/resource-manager/network/2024-01-01/networkwatchers/model_troubleshootingdetails.go new file mode 100644 index 00000000000..2bc7443b168 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_troubleshootingdetails.go @@ -0,0 +1,12 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TroubleshootingDetails struct { + Detail *string `json:"detail,omitempty"` + Id *string `json:"id,omitempty"` + ReasonType *string `json:"reasonType,omitempty"` + RecommendedActions *[]TroubleshootingRecommendedActions `json:"recommendedActions,omitempty"` + Summary *string `json:"summary,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_troubleshootingparameters.go b/resource-manager/network/2024-01-01/networkwatchers/model_troubleshootingparameters.go new file mode 100644 index 00000000000..5ee881c84a7 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_troubleshootingparameters.go @@ -0,0 +1,9 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TroubleshootingParameters struct { + Properties TroubleshootingProperties `json:"properties"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_troubleshootingproperties.go b/resource-manager/network/2024-01-01/networkwatchers/model_troubleshootingproperties.go new file mode 100644 index 00000000000..8d187050a32 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_troubleshootingproperties.go @@ -0,0 +1,9 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TroubleshootingProperties struct { + StorageId string `json:"storageId"` + StoragePath string `json:"storagePath"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_troubleshootingrecommendedactions.go b/resource-manager/network/2024-01-01/networkwatchers/model_troubleshootingrecommendedactions.go new file mode 100644 index 00000000000..c4e5781e659 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_troubleshootingrecommendedactions.go @@ -0,0 +1,11 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TroubleshootingRecommendedActions struct { + ActionId *string `json:"actionId,omitempty"` + ActionText *string `json:"actionText,omitempty"` + ActionUri *string `json:"actionUri,omitempty"` + ActionUriText *string `json:"actionUriText,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_troubleshootingresult.go b/resource-manager/network/2024-01-01/networkwatchers/model_troubleshootingresult.go new file mode 100644 index 00000000000..62df62353d2 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_troubleshootingresult.go @@ -0,0 +1,41 @@ +package networkwatchers + +import ( + "time" + + "github.com/hashicorp/go-azure-helpers/lang/dates" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TroubleshootingResult struct { + Code *string `json:"code,omitempty"` + EndTime *string `json:"endTime,omitempty"` + Results *[]TroubleshootingDetails `json:"results,omitempty"` + StartTime *string `json:"startTime,omitempty"` +} + +func (o *TroubleshootingResult) GetEndTimeAsTime() (*time.Time, error) { + if o.EndTime == nil { + return nil, nil + } + return dates.ParseAsFormat(o.EndTime, "2006-01-02T15:04:05Z07:00") +} + +func (o *TroubleshootingResult) SetEndTimeAsTime(input time.Time) { + formatted := input.Format("2006-01-02T15:04:05Z07:00") + o.EndTime = &formatted +} + +func (o *TroubleshootingResult) GetStartTimeAsTime() (*time.Time, error) { + if o.StartTime == nil { + return nil, nil + } + return dates.ParseAsFormat(o.StartTime, "2006-01-02T15:04:05Z07:00") +} + +func (o *TroubleshootingResult) SetStartTimeAsTime(input time.Time) { + formatted := input.Format("2006-01-02T15:04:05Z07:00") + o.StartTime = &formatted +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_verificationipflowparameters.go b/resource-manager/network/2024-01-01/networkwatchers/model_verificationipflowparameters.go new file mode 100644 index 00000000000..05165f3ed26 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_verificationipflowparameters.go @@ -0,0 +1,15 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VerificationIPFlowParameters struct { + Direction Direction `json:"direction"` + LocalIPAddress string `json:"localIPAddress"` + LocalPort string `json:"localPort"` + Protocol IPFlowProtocol `json:"protocol"` + RemoteIPAddress string `json:"remoteIPAddress"` + RemotePort string `json:"remotePort"` + TargetNicResourceId *string `json:"targetNicResourceId,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/model_verificationipflowresult.go b/resource-manager/network/2024-01-01/networkwatchers/model_verificationipflowresult.go new file mode 100644 index 00000000000..97318928bd8 --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/model_verificationipflowresult.go @@ -0,0 +1,9 @@ +package networkwatchers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VerificationIPFlowResult struct { + Access *Access `json:"access,omitempty"` + RuleName *string `json:"ruleName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/networkwatchers/version.go b/resource-manager/network/2024-01-01/networkwatchers/version.go new file mode 100644 index 00000000000..eb99c4c19fa --- /dev/null +++ b/resource-manager/network/2024-01-01/networkwatchers/version.go @@ -0,0 +1,12 @@ +package networkwatchers + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/networkwatchers/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/README.md b/resource-manager/network/2024-01-01/p2svpngateways/README.md new file mode 100644 index 00000000000..104bf4a2e52 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/README.md @@ -0,0 +1,113 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/p2svpngateways` Documentation + +The `p2svpngateways` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/p2svpngateways" +``` + + +### Client Initialization + +```go +client := p2svpngateways.NewP2sVpnGatewaysClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `P2sVpnGatewaysClient.DisconnectP2sVpnConnections` + +```go +ctx := context.TODO() +id := commonids.NewVirtualWANP2SVPNGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "p2sVpnGatewayValue") + +payload := p2svpngateways.P2SVpnConnectionRequest{ + // ... +} + + +if err := client.DisconnectP2sVpnConnectionsThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `P2sVpnGatewaysClient.GenerateVpnProfile` + +```go +ctx := context.TODO() +id := commonids.NewVirtualWANP2SVPNGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "p2sVpnGatewayValue") + +payload := p2svpngateways.P2SVpnProfileParameters{ + // ... +} + + +if err := client.GenerateVpnProfileThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `P2sVpnGatewaysClient.GetP2sVpnConnectionHealth` + +```go +ctx := context.TODO() +id := commonids.NewVirtualWANP2SVPNGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "p2sVpnGatewayValue") + +if err := client.GetP2sVpnConnectionHealthThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `P2sVpnGatewaysClient.GetP2sVpnConnectionHealthDetailed` + +```go +ctx := context.TODO() +id := commonids.NewVirtualWANP2SVPNGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "p2sVpnGatewayValue") + +payload := p2svpngateways.P2SVpnConnectionHealthRequest{ + // ... +} + + +if err := client.GetP2sVpnConnectionHealthDetailedThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `P2sVpnGatewaysClient.Reset` + +```go +ctx := context.TODO() +id := commonids.NewVirtualWANP2SVPNGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "p2sVpnGatewayValue") + +if err := client.ResetThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `P2sVpnGatewaysClient.UpdateTags` + +```go +ctx := context.TODO() +id := commonids.NewVirtualWANP2SVPNGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "p2sVpnGatewayValue") + +payload := p2svpngateways.TagsObject{ + // ... +} + + +if err := client.UpdateTagsThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` diff --git a/resource-manager/network/2024-01-01/p2svpngateways/client.go b/resource-manager/network/2024-01-01/p2svpngateways/client.go new file mode 100644 index 00000000000..3d458041de0 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/client.go @@ -0,0 +1,26 @@ +package p2svpngateways + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type P2sVpnGatewaysClient struct { + Client *resourcemanager.Client +} + +func NewP2sVpnGatewaysClientWithBaseURI(sdkApi sdkEnv.Api) (*P2sVpnGatewaysClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "p2svpngateways", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating P2sVpnGatewaysClient: %+v", err) + } + + return &P2sVpnGatewaysClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/constants.go b/resource-manager/network/2024-01-01/p2svpngateways/constants.go new file mode 100644 index 00000000000..e0d727fd608 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/constants.go @@ -0,0 +1,183 @@ +package p2svpngateways + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AuthenticationMethod string + +const ( + AuthenticationMethodEAPMSCHAPvTwo AuthenticationMethod = "EAPMSCHAPv2" + AuthenticationMethodEAPTLS AuthenticationMethod = "EAPTLS" +) + +func PossibleValuesForAuthenticationMethod() []string { + return []string{ + string(AuthenticationMethodEAPMSCHAPvTwo), + string(AuthenticationMethodEAPTLS), + } +} + +func (s *AuthenticationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAuthenticationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAuthenticationMethod(input string) (*AuthenticationMethod, error) { + vals := map[string]AuthenticationMethod{ + "eapmschapv2": AuthenticationMethodEAPMSCHAPvTwo, + "eaptls": AuthenticationMethodEAPTLS, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := AuthenticationMethod(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type VnetLocalRouteOverrideCriteria string + +const ( + VnetLocalRouteOverrideCriteriaContains VnetLocalRouteOverrideCriteria = "Contains" + VnetLocalRouteOverrideCriteriaEqual VnetLocalRouteOverrideCriteria = "Equal" +) + +func PossibleValuesForVnetLocalRouteOverrideCriteria() []string { + return []string{ + string(VnetLocalRouteOverrideCriteriaContains), + string(VnetLocalRouteOverrideCriteriaEqual), + } +} + +func (s *VnetLocalRouteOverrideCriteria) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVnetLocalRouteOverrideCriteria(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVnetLocalRouteOverrideCriteria(input string) (*VnetLocalRouteOverrideCriteria, error) { + vals := map[string]VnetLocalRouteOverrideCriteria{ + "contains": VnetLocalRouteOverrideCriteriaContains, + "equal": VnetLocalRouteOverrideCriteriaEqual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VnetLocalRouteOverrideCriteria(input) + return &out, nil +} + +type VpnPolicyMemberAttributeType string + +const ( + VpnPolicyMemberAttributeTypeAADGroupId VpnPolicyMemberAttributeType = "AADGroupId" + VpnPolicyMemberAttributeTypeCertificateGroupId VpnPolicyMemberAttributeType = "CertificateGroupId" + VpnPolicyMemberAttributeTypeRadiusAzureGroupId VpnPolicyMemberAttributeType = "RadiusAzureGroupId" +) + +func PossibleValuesForVpnPolicyMemberAttributeType() []string { + return []string{ + string(VpnPolicyMemberAttributeTypeAADGroupId), + string(VpnPolicyMemberAttributeTypeCertificateGroupId), + string(VpnPolicyMemberAttributeTypeRadiusAzureGroupId), + } +} + +func (s *VpnPolicyMemberAttributeType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnPolicyMemberAttributeType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnPolicyMemberAttributeType(input string) (*VpnPolicyMemberAttributeType, error) { + vals := map[string]VpnPolicyMemberAttributeType{ + "aadgroupid": VpnPolicyMemberAttributeTypeAADGroupId, + "certificategroupid": VpnPolicyMemberAttributeTypeCertificateGroupId, + "radiusazuregroupid": VpnPolicyMemberAttributeTypeRadiusAzureGroupId, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnPolicyMemberAttributeType(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/method_disconnectp2svpnconnections.go b/resource-manager/network/2024-01-01/p2svpngateways/method_disconnectp2svpnconnections.go new file mode 100644 index 00000000000..c7746ee57d0 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/method_disconnectp2svpnconnections.go @@ -0,0 +1,75 @@ +package p2svpngateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DisconnectP2sVpnConnectionsOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// DisconnectP2sVpnConnections ... +func (c P2sVpnGatewaysClient) DisconnectP2sVpnConnections(ctx context.Context, id commonids.VirtualWANP2SVPNGatewayId, input P2SVpnConnectionRequest) (result DisconnectP2sVpnConnectionsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/disconnectP2sVpnConnections", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DisconnectP2sVpnConnectionsThenPoll performs DisconnectP2sVpnConnections then polls until it's completed +func (c P2sVpnGatewaysClient) DisconnectP2sVpnConnectionsThenPoll(ctx context.Context, id commonids.VirtualWANP2SVPNGatewayId, input P2SVpnConnectionRequest) error { + result, err := c.DisconnectP2sVpnConnections(ctx, id, input) + if err != nil { + return fmt.Errorf("performing DisconnectP2sVpnConnections: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after DisconnectP2sVpnConnections: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/method_generatevpnprofile.go b/resource-manager/network/2024-01-01/p2svpngateways/method_generatevpnprofile.go new file mode 100644 index 00000000000..b3c5acf03dc --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/method_generatevpnprofile.go @@ -0,0 +1,76 @@ +package p2svpngateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GenerateVpnProfileOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VpnProfileResponse +} + +// GenerateVpnProfile ... +func (c P2sVpnGatewaysClient) GenerateVpnProfile(ctx context.Context, id commonids.VirtualWANP2SVPNGatewayId, input P2SVpnProfileParameters) (result GenerateVpnProfileOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/generatevpnprofile", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// GenerateVpnProfileThenPoll performs GenerateVpnProfile then polls until it's completed +func (c P2sVpnGatewaysClient) GenerateVpnProfileThenPoll(ctx context.Context, id commonids.VirtualWANP2SVPNGatewayId, input P2SVpnProfileParameters) error { + result, err := c.GenerateVpnProfile(ctx, id, input) + if err != nil { + return fmt.Errorf("performing GenerateVpnProfile: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after GenerateVpnProfile: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/method_getp2svpnconnectionhealth.go b/resource-manager/network/2024-01-01/p2svpngateways/method_getp2svpnconnectionhealth.go new file mode 100644 index 00000000000..dab0de414a2 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/method_getp2svpnconnectionhealth.go @@ -0,0 +1,72 @@ +package p2svpngateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetP2sVpnConnectionHealthOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *P2SVpnGateway +} + +// GetP2sVpnConnectionHealth ... +func (c P2sVpnGatewaysClient) GetP2sVpnConnectionHealth(ctx context.Context, id commonids.VirtualWANP2SVPNGatewayId) (result GetP2sVpnConnectionHealthOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/getP2sVpnConnectionHealth", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// GetP2sVpnConnectionHealthThenPoll performs GetP2sVpnConnectionHealth then polls until it's completed +func (c P2sVpnGatewaysClient) GetP2sVpnConnectionHealthThenPoll(ctx context.Context, id commonids.VirtualWANP2SVPNGatewayId) error { + result, err := c.GetP2sVpnConnectionHealth(ctx, id) + if err != nil { + return fmt.Errorf("performing GetP2sVpnConnectionHealth: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after GetP2sVpnConnectionHealth: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/method_getp2svpnconnectionhealthdetailed.go b/resource-manager/network/2024-01-01/p2svpngateways/method_getp2svpnconnectionhealthdetailed.go new file mode 100644 index 00000000000..d5c274634f2 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/method_getp2svpnconnectionhealthdetailed.go @@ -0,0 +1,76 @@ +package p2svpngateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetP2sVpnConnectionHealthDetailedOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *P2SVpnConnectionHealth +} + +// GetP2sVpnConnectionHealthDetailed ... +func (c P2sVpnGatewaysClient) GetP2sVpnConnectionHealthDetailed(ctx context.Context, id commonids.VirtualWANP2SVPNGatewayId, input P2SVpnConnectionHealthRequest) (result GetP2sVpnConnectionHealthDetailedOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/getP2sVpnConnectionHealthDetailed", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// GetP2sVpnConnectionHealthDetailedThenPoll performs GetP2sVpnConnectionHealthDetailed then polls until it's completed +func (c P2sVpnGatewaysClient) GetP2sVpnConnectionHealthDetailedThenPoll(ctx context.Context, id commonids.VirtualWANP2SVPNGatewayId, input P2SVpnConnectionHealthRequest) error { + result, err := c.GetP2sVpnConnectionHealthDetailed(ctx, id, input) + if err != nil { + return fmt.Errorf("performing GetP2sVpnConnectionHealthDetailed: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after GetP2sVpnConnectionHealthDetailed: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/method_reset.go b/resource-manager/network/2024-01-01/p2svpngateways/method_reset.go new file mode 100644 index 00000000000..d00e0082c46 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/method_reset.go @@ -0,0 +1,72 @@ +package p2svpngateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResetOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *P2SVpnGateway +} + +// Reset ... +func (c P2sVpnGatewaysClient) Reset(ctx context.Context, id commonids.VirtualWANP2SVPNGatewayId) (result ResetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/reset", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// ResetThenPoll performs Reset then polls until it's completed +func (c P2sVpnGatewaysClient) ResetThenPoll(ctx context.Context, id commonids.VirtualWANP2SVPNGatewayId) error { + result, err := c.Reset(ctx, id) + if err != nil { + return fmt.Errorf("performing Reset: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Reset: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/method_updatetags.go b/resource-manager/network/2024-01-01/p2svpngateways/method_updatetags.go new file mode 100644 index 00000000000..e1cbbdbc914 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/method_updatetags.go @@ -0,0 +1,76 @@ +package p2svpngateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *P2SVpnGateway +} + +// UpdateTags ... +func (c P2sVpnGatewaysClient) UpdateTags(ctx context.Context, id commonids.VirtualWANP2SVPNGatewayId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// UpdateTagsThenPoll performs UpdateTags then polls until it's completed +func (c P2sVpnGatewaysClient) UpdateTagsThenPoll(ctx context.Context, id commonids.VirtualWANP2SVPNGatewayId, input TagsObject) error { + result, err := c.UpdateTags(ctx, id, input) + if err != nil { + return fmt.Errorf("performing UpdateTags: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after UpdateTags: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/model_addressspace.go b/resource-manager/network/2024-01-01/p2svpngateways/model_addressspace.go new file mode 100644 index 00000000000..7c79876f047 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/model_addressspace.go @@ -0,0 +1,8 @@ +package p2svpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AddressSpace struct { + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/model_p2sconnectionconfiguration.go b/resource-manager/network/2024-01-01/p2svpngateways/model_p2sconnectionconfiguration.go new file mode 100644 index 00000000000..278f2d7145d --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/model_p2sconnectionconfiguration.go @@ -0,0 +1,11 @@ +package p2svpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type P2SConnectionConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *P2SConnectionConfigurationProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/model_p2sconnectionconfigurationproperties.go b/resource-manager/network/2024-01-01/p2svpngateways/model_p2sconnectionconfigurationproperties.go new file mode 100644 index 00000000000..33a16482774 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/model_p2sconnectionconfigurationproperties.go @@ -0,0 +1,13 @@ +package p2svpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type P2SConnectionConfigurationProperties struct { + ConfigurationPolicyGroupAssociations *[]SubResource `json:"configurationPolicyGroupAssociations,omitempty"` + EnableInternetSecurity *bool `json:"enableInternetSecurity,omitempty"` + PreviousConfigurationPolicyGroupAssociations *[]VpnServerConfigurationPolicyGroup `json:"previousConfigurationPolicyGroupAssociations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RoutingConfiguration *RoutingConfiguration `json:"routingConfiguration,omitempty"` + VpnClientAddressPool *AddressSpace `json:"vpnClientAddressPool,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/model_p2svpnconnectionhealth.go b/resource-manager/network/2024-01-01/p2svpngateways/model_p2svpnconnectionhealth.go new file mode 100644 index 00000000000..42b227bbf63 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/model_p2svpnconnectionhealth.go @@ -0,0 +1,8 @@ +package p2svpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type P2SVpnConnectionHealth struct { + SasUrl *string `json:"sasUrl,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/model_p2svpnconnectionhealthrequest.go b/resource-manager/network/2024-01-01/p2svpngateways/model_p2svpnconnectionhealthrequest.go new file mode 100644 index 00000000000..d0cd806bd05 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/model_p2svpnconnectionhealthrequest.go @@ -0,0 +1,9 @@ +package p2svpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type P2SVpnConnectionHealthRequest struct { + OutputBlobSasUrl *string `json:"outputBlobSasUrl,omitempty"` + VpnUserNamesFilter *[]string `json:"vpnUserNamesFilter,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/model_p2svpnconnectionrequest.go b/resource-manager/network/2024-01-01/p2svpngateways/model_p2svpnconnectionrequest.go new file mode 100644 index 00000000000..f7b746fc648 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/model_p2svpnconnectionrequest.go @@ -0,0 +1,8 @@ +package p2svpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type P2SVpnConnectionRequest struct { + VpnConnectionIds *[]string `json:"vpnConnectionIds,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/model_p2svpngateway.go b/resource-manager/network/2024-01-01/p2svpngateways/model_p2svpngateway.go new file mode 100644 index 00000000000..522c7458570 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/model_p2svpngateway.go @@ -0,0 +1,14 @@ +package p2svpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type P2SVpnGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *P2SVpnGatewayProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/model_p2svpngatewayproperties.go b/resource-manager/network/2024-01-01/p2svpngateways/model_p2svpngatewayproperties.go new file mode 100644 index 00000000000..6099821abd6 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/model_p2svpngatewayproperties.go @@ -0,0 +1,15 @@ +package p2svpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type P2SVpnGatewayProperties struct { + CustomDnsServers *[]string `json:"customDnsServers,omitempty"` + IsRoutingPreferenceInternet *bool `json:"isRoutingPreferenceInternet,omitempty"` + P2SConnectionConfigurations *[]P2SConnectionConfiguration `json:"p2SConnectionConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualHub *SubResource `json:"virtualHub,omitempty"` + VpnClientConnectionHealth *VpnClientConnectionHealth `json:"vpnClientConnectionHealth,omitempty"` + VpnGatewayScaleUnit *int64 `json:"vpnGatewayScaleUnit,omitempty"` + VpnServerConfiguration *SubResource `json:"vpnServerConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/model_p2svpnprofileparameters.go b/resource-manager/network/2024-01-01/p2svpngateways/model_p2svpnprofileparameters.go new file mode 100644 index 00000000000..7f798f2ae40 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/model_p2svpnprofileparameters.go @@ -0,0 +1,8 @@ +package p2svpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type P2SVpnProfileParameters struct { + AuthenticationMethod *AuthenticationMethod `json:"authenticationMethod,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/model_propagatedroutetable.go b/resource-manager/network/2024-01-01/p2svpngateways/model_propagatedroutetable.go new file mode 100644 index 00000000000..f137f52cc84 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/model_propagatedroutetable.go @@ -0,0 +1,9 @@ +package p2svpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PropagatedRouteTable struct { + Ids *[]SubResource `json:"ids,omitempty"` + Labels *[]string `json:"labels,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/model_routingconfiguration.go b/resource-manager/network/2024-01-01/p2svpngateways/model_routingconfiguration.go new file mode 100644 index 00000000000..abe87c9515c --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/model_routingconfiguration.go @@ -0,0 +1,12 @@ +package p2svpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutingConfiguration struct { + AssociatedRouteTable *SubResource `json:"associatedRouteTable,omitempty"` + InboundRouteMap *SubResource `json:"inboundRouteMap,omitempty"` + OutboundRouteMap *SubResource `json:"outboundRouteMap,omitempty"` + PropagatedRouteTables *PropagatedRouteTable `json:"propagatedRouteTables,omitempty"` + VnetRoutes *VnetRoute `json:"vnetRoutes,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/model_staticroute.go b/resource-manager/network/2024-01-01/p2svpngateways/model_staticroute.go new file mode 100644 index 00000000000..0a7ee0c9c99 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/model_staticroute.go @@ -0,0 +1,10 @@ +package p2svpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StaticRoute struct { + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + Name *string `json:"name,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/model_staticroutesconfig.go b/resource-manager/network/2024-01-01/p2svpngateways/model_staticroutesconfig.go new file mode 100644 index 00000000000..063926c25d3 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/model_staticroutesconfig.go @@ -0,0 +1,9 @@ +package p2svpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StaticRoutesConfig struct { + PropagateStaticRoutes *bool `json:"propagateStaticRoutes,omitempty"` + VnetLocalRouteOverrideCriteria *VnetLocalRouteOverrideCriteria `json:"vnetLocalRouteOverrideCriteria,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/model_subresource.go b/resource-manager/network/2024-01-01/p2svpngateways/model_subresource.go new file mode 100644 index 00000000000..80d7b205b99 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/model_subresource.go @@ -0,0 +1,8 @@ +package p2svpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/model_tagsobject.go b/resource-manager/network/2024-01-01/p2svpngateways/model_tagsobject.go new file mode 100644 index 00000000000..f314ca6d15c --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/model_tagsobject.go @@ -0,0 +1,8 @@ +package p2svpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/model_vnetroute.go b/resource-manager/network/2024-01-01/p2svpngateways/model_vnetroute.go new file mode 100644 index 00000000000..445ec97bfa1 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/model_vnetroute.go @@ -0,0 +1,10 @@ +package p2svpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VnetRoute struct { + BgpConnections *[]SubResource `json:"bgpConnections,omitempty"` + StaticRoutes *[]StaticRoute `json:"staticRoutes,omitempty"` + StaticRoutesConfig *StaticRoutesConfig `json:"staticRoutesConfig,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/model_vpnclientconnectionhealth.go b/resource-manager/network/2024-01-01/p2svpngateways/model_vpnclientconnectionhealth.go new file mode 100644 index 00000000000..fb3596341d9 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/model_vpnclientconnectionhealth.go @@ -0,0 +1,11 @@ +package p2svpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnClientConnectionHealth struct { + AllocatedIPAddresses *[]string `json:"allocatedIpAddresses,omitempty"` + TotalEgressBytesTransferred *int64 `json:"totalEgressBytesTransferred,omitempty"` + TotalIngressBytesTransferred *int64 `json:"totalIngressBytesTransferred,omitempty"` + VpnClientConnectionsCount *int64 `json:"vpnClientConnectionsCount,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/model_vpnprofileresponse.go b/resource-manager/network/2024-01-01/p2svpngateways/model_vpnprofileresponse.go new file mode 100644 index 00000000000..55f4d81d16c --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/model_vpnprofileresponse.go @@ -0,0 +1,8 @@ +package p2svpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnProfileResponse struct { + ProfileUrl *string `json:"profileUrl,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/model_vpnserverconfigurationpolicygroup.go b/resource-manager/network/2024-01-01/p2svpngateways/model_vpnserverconfigurationpolicygroup.go new file mode 100644 index 00000000000..fe026c0a264 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/model_vpnserverconfigurationpolicygroup.go @@ -0,0 +1,12 @@ +package p2svpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigurationPolicyGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VpnServerConfigurationPolicyGroupProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/model_vpnserverconfigurationpolicygroupmember.go b/resource-manager/network/2024-01-01/p2svpngateways/model_vpnserverconfigurationpolicygroupmember.go new file mode 100644 index 00000000000..cebb5053164 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/model_vpnserverconfigurationpolicygroupmember.go @@ -0,0 +1,10 @@ +package p2svpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigurationPolicyGroupMember struct { + AttributeType *VpnPolicyMemberAttributeType `json:"attributeType,omitempty"` + AttributeValue *string `json:"attributeValue,omitempty"` + Name *string `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/model_vpnserverconfigurationpolicygroupproperties.go b/resource-manager/network/2024-01-01/p2svpngateways/model_vpnserverconfigurationpolicygroupproperties.go new file mode 100644 index 00000000000..f7a9edb1a56 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/model_vpnserverconfigurationpolicygroupproperties.go @@ -0,0 +1,12 @@ +package p2svpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigurationPolicyGroupProperties struct { + IsDefault *bool `json:"isDefault,omitempty"` + P2SConnectionConfigurations *[]SubResource `json:"p2SConnectionConfigurations,omitempty"` + PolicyMembers *[]VpnServerConfigurationPolicyGroupMember `json:"policyMembers,omitempty"` + Priority *int64 `json:"priority,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/p2svpngateways/version.go b/resource-manager/network/2024-01-01/p2svpngateways/version.go new file mode 100644 index 00000000000..a9df47c9137 --- /dev/null +++ b/resource-manager/network/2024-01-01/p2svpngateways/version.go @@ -0,0 +1,12 @@ +package p2svpngateways + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/p2svpngateways/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/packetcaptures/README.md b/resource-manager/network/2024-01-01/packetcaptures/README.md new file mode 100644 index 00000000000..a201fe3d879 --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/README.md @@ -0,0 +1,105 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/packetcaptures` Documentation + +The `packetcaptures` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/packetcaptures" +``` + + +### Client Initialization + +```go +client := packetcaptures.NewPacketCapturesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `PacketCapturesClient.Create` + +```go +ctx := context.TODO() +id := packetcaptures.NewPacketCaptureID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue", "packetCaptureValue") + +payload := packetcaptures.PacketCapture{ + // ... +} + + +if err := client.CreateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `PacketCapturesClient.Delete` + +```go +ctx := context.TODO() +id := packetcaptures.NewPacketCaptureID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue", "packetCaptureValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `PacketCapturesClient.Get` + +```go +ctx := context.TODO() +id := packetcaptures.NewPacketCaptureID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue", "packetCaptureValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `PacketCapturesClient.GetStatus` + +```go +ctx := context.TODO() +id := packetcaptures.NewPacketCaptureID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue", "packetCaptureValue") + +if err := client.GetStatusThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `PacketCapturesClient.List` + +```go +ctx := context.TODO() +id := packetcaptures.NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + +read, err := client.List(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `PacketCapturesClient.Stop` + +```go +ctx := context.TODO() +id := packetcaptures.NewPacketCaptureID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue", "packetCaptureValue") + +if err := client.StopThenPoll(ctx, id); err != nil { + // handle the error +} +``` diff --git a/resource-manager/network/2024-01-01/packetcaptures/client.go b/resource-manager/network/2024-01-01/packetcaptures/client.go new file mode 100644 index 00000000000..03aa779a5b9 --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/client.go @@ -0,0 +1,26 @@ +package packetcaptures + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PacketCapturesClient struct { + Client *resourcemanager.Client +} + +func NewPacketCapturesClientWithBaseURI(sdkApi sdkEnv.Api) (*PacketCapturesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "packetcaptures", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating PacketCapturesClient: %+v", err) + } + + return &PacketCapturesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/packetcaptures/constants.go b/resource-manager/network/2024-01-01/packetcaptures/constants.go new file mode 100644 index 00000000000..52471a03c9e --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/constants.go @@ -0,0 +1,242 @@ +package packetcaptures + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PacketCaptureTargetType string + +const ( + PacketCaptureTargetTypeAzureVM PacketCaptureTargetType = "AzureVM" + PacketCaptureTargetTypeAzureVMSS PacketCaptureTargetType = "AzureVMSS" +) + +func PossibleValuesForPacketCaptureTargetType() []string { + return []string{ + string(PacketCaptureTargetTypeAzureVM), + string(PacketCaptureTargetTypeAzureVMSS), + } +} + +func (s *PacketCaptureTargetType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePacketCaptureTargetType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePacketCaptureTargetType(input string) (*PacketCaptureTargetType, error) { + vals := map[string]PacketCaptureTargetType{ + "azurevm": PacketCaptureTargetTypeAzureVM, + "azurevmss": PacketCaptureTargetTypeAzureVMSS, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PacketCaptureTargetType(input) + return &out, nil +} + +type PcError string + +const ( + PcErrorAgentStopped PcError = "AgentStopped" + PcErrorCaptureFailed PcError = "CaptureFailed" + PcErrorInternalError PcError = "InternalError" + PcErrorLocalFileFailed PcError = "LocalFileFailed" + PcErrorStorageFailed PcError = "StorageFailed" +) + +func PossibleValuesForPcError() []string { + return []string{ + string(PcErrorAgentStopped), + string(PcErrorCaptureFailed), + string(PcErrorInternalError), + string(PcErrorLocalFileFailed), + string(PcErrorStorageFailed), + } +} + +func (s *PcError) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePcError(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePcError(input string) (*PcError, error) { + vals := map[string]PcError{ + "agentstopped": PcErrorAgentStopped, + "capturefailed": PcErrorCaptureFailed, + "internalerror": PcErrorInternalError, + "localfilefailed": PcErrorLocalFileFailed, + "storagefailed": PcErrorStorageFailed, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PcError(input) + return &out, nil +} + +type PcProtocol string + +const ( + PcProtocolAny PcProtocol = "Any" + PcProtocolTCP PcProtocol = "TCP" + PcProtocolUDP PcProtocol = "UDP" +) + +func PossibleValuesForPcProtocol() []string { + return []string{ + string(PcProtocolAny), + string(PcProtocolTCP), + string(PcProtocolUDP), + } +} + +func (s *PcProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePcProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePcProtocol(input string) (*PcProtocol, error) { + vals := map[string]PcProtocol{ + "any": PcProtocolAny, + "tcp": PcProtocolTCP, + "udp": PcProtocolUDP, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PcProtocol(input) + return &out, nil +} + +type PcStatus string + +const ( + PcStatusError PcStatus = "Error" + PcStatusNotStarted PcStatus = "NotStarted" + PcStatusRunning PcStatus = "Running" + PcStatusStopped PcStatus = "Stopped" + PcStatusUnknown PcStatus = "Unknown" +) + +func PossibleValuesForPcStatus() []string { + return []string{ + string(PcStatusError), + string(PcStatusNotStarted), + string(PcStatusRunning), + string(PcStatusStopped), + string(PcStatusUnknown), + } +} + +func (s *PcStatus) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePcStatus(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePcStatus(input string) (*PcStatus, error) { + vals := map[string]PcStatus{ + "error": PcStatusError, + "notstarted": PcStatusNotStarted, + "running": PcStatusRunning, + "stopped": PcStatusStopped, + "unknown": PcStatusUnknown, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PcStatus(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/packetcaptures/id_networkwatcher.go b/resource-manager/network/2024-01-01/packetcaptures/id_networkwatcher.go new file mode 100644 index 00000000000..d9eafa5f099 --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/id_networkwatcher.go @@ -0,0 +1,130 @@ +package packetcaptures + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NetworkWatcherId{}) +} + +var _ resourceids.ResourceId = &NetworkWatcherId{} + +// NetworkWatcherId is a struct representing the Resource ID for a Network Watcher +type NetworkWatcherId struct { + SubscriptionId string + ResourceGroupName string + NetworkWatcherName string +} + +// NewNetworkWatcherID returns a new NetworkWatcherId struct +func NewNetworkWatcherID(subscriptionId string, resourceGroupName string, networkWatcherName string) NetworkWatcherId { + return NetworkWatcherId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkWatcherName: networkWatcherName, + } +} + +// ParseNetworkWatcherID parses 'input' into a NetworkWatcherId +func ParseNetworkWatcherID(input string) (*NetworkWatcherId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkWatcherId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkWatcherId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNetworkWatcherIDInsensitively parses 'input' case-insensitively into a NetworkWatcherId +// note: this method should only be used for API response data and not user input +func ParseNetworkWatcherIDInsensitively(input string) (*NetworkWatcherId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkWatcherId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkWatcherId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NetworkWatcherId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkWatcherName, ok = input.Parsed["networkWatcherName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkWatcherName", input) + } + + return nil +} + +// ValidateNetworkWatcherID checks that 'input' can be parsed as a Network Watcher ID +func ValidateNetworkWatcherID(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 := ParseNetworkWatcherID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Network Watcher ID +func (id NetworkWatcherId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkWatchers/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkWatcherName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Network Watcher ID +func (id NetworkWatcherId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkWatchers", "networkWatchers", "networkWatchers"), + resourceids.UserSpecifiedSegment("networkWatcherName", "networkWatcherValue"), + } +} + +// String returns a human-readable description of this Network Watcher ID +func (id NetworkWatcherId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Watcher Name: %q", id.NetworkWatcherName), + } + return fmt.Sprintf("Network Watcher (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/packetcaptures/id_networkwatcher_test.go b/resource-manager/network/2024-01-01/packetcaptures/id_networkwatcher_test.go new file mode 100644 index 00000000000..6fc1898eef7 --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/id_networkwatcher_test.go @@ -0,0 +1,282 @@ +package packetcaptures + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NetworkWatcherId{} + +func TestNewNetworkWatcherID(t *testing.T) { + id := NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkWatcherName != "networkWatcherValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkWatcherName'", id.NetworkWatcherName, "networkWatcherValue") + } +} + +func TestFormatNetworkWatcherID(t *testing.T) { + actual := NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNetworkWatcherID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkWatcherId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue", + Expected: &NetworkWatcherId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkWatcherName: "networkWatcherValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkWatcherID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkWatcherName != v.Expected.NetworkWatcherName { + t.Fatalf("Expected %q but got %q for NetworkWatcherName", v.Expected.NetworkWatcherName, actual.NetworkWatcherName) + } + + } +} + +func TestParseNetworkWatcherIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkWatcherId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue", + Expected: &NetworkWatcherId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkWatcherName: "networkWatcherValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs/nEtWoRkWaTcHeRvAlUe", + Expected: &NetworkWatcherId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkWatcherName: "nEtWoRkWaTcHeRvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs/nEtWoRkWaTcHeRvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkWatcherIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkWatcherName != v.Expected.NetworkWatcherName { + t.Fatalf("Expected %q but got %q for NetworkWatcherName", v.Expected.NetworkWatcherName, actual.NetworkWatcherName) + } + + } +} + +func TestSegmentsForNetworkWatcherId(t *testing.T) { + segments := NetworkWatcherId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NetworkWatcherId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/packetcaptures/id_packetcapture.go b/resource-manager/network/2024-01-01/packetcaptures/id_packetcapture.go new file mode 100644 index 00000000000..8b30ad1ebd6 --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/id_packetcapture.go @@ -0,0 +1,139 @@ +package packetcaptures + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&PacketCaptureId{}) +} + +var _ resourceids.ResourceId = &PacketCaptureId{} + +// PacketCaptureId is a struct representing the Resource ID for a Packet Capture +type PacketCaptureId struct { + SubscriptionId string + ResourceGroupName string + NetworkWatcherName string + PacketCaptureName string +} + +// NewPacketCaptureID returns a new PacketCaptureId struct +func NewPacketCaptureID(subscriptionId string, resourceGroupName string, networkWatcherName string, packetCaptureName string) PacketCaptureId { + return PacketCaptureId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkWatcherName: networkWatcherName, + PacketCaptureName: packetCaptureName, + } +} + +// ParsePacketCaptureID parses 'input' into a PacketCaptureId +func ParsePacketCaptureID(input string) (*PacketCaptureId, error) { + parser := resourceids.NewParserFromResourceIdType(&PacketCaptureId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PacketCaptureId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParsePacketCaptureIDInsensitively parses 'input' case-insensitively into a PacketCaptureId +// note: this method should only be used for API response data and not user input +func ParsePacketCaptureIDInsensitively(input string) (*PacketCaptureId, error) { + parser := resourceids.NewParserFromResourceIdType(&PacketCaptureId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PacketCaptureId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *PacketCaptureId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkWatcherName, ok = input.Parsed["networkWatcherName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkWatcherName", input) + } + + if id.PacketCaptureName, ok = input.Parsed["packetCaptureName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "packetCaptureName", input) + } + + return nil +} + +// ValidatePacketCaptureID checks that 'input' can be parsed as a Packet Capture ID +func ValidatePacketCaptureID(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 := ParsePacketCaptureID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Packet Capture ID +func (id PacketCaptureId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkWatchers/%s/packetCaptures/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkWatcherName, id.PacketCaptureName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Packet Capture ID +func (id PacketCaptureId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkWatchers", "networkWatchers", "networkWatchers"), + resourceids.UserSpecifiedSegment("networkWatcherName", "networkWatcherValue"), + resourceids.StaticSegment("staticPacketCaptures", "packetCaptures", "packetCaptures"), + resourceids.UserSpecifiedSegment("packetCaptureName", "packetCaptureValue"), + } +} + +// String returns a human-readable description of this Packet Capture ID +func (id PacketCaptureId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Watcher Name: %q", id.NetworkWatcherName), + fmt.Sprintf("Packet Capture Name: %q", id.PacketCaptureName), + } + return fmt.Sprintf("Packet Capture (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/packetcaptures/id_packetcapture_test.go b/resource-manager/network/2024-01-01/packetcaptures/id_packetcapture_test.go new file mode 100644 index 00000000000..92939b70c2a --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/id_packetcapture_test.go @@ -0,0 +1,327 @@ +package packetcaptures + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &PacketCaptureId{} + +func TestNewPacketCaptureID(t *testing.T) { + id := NewPacketCaptureID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue", "packetCaptureValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkWatcherName != "networkWatcherValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkWatcherName'", id.NetworkWatcherName, "networkWatcherValue") + } + + if id.PacketCaptureName != "packetCaptureValue" { + t.Fatalf("Expected %q but got %q for Segment 'PacketCaptureName'", id.PacketCaptureName, "packetCaptureValue") + } +} + +func TestFormatPacketCaptureID(t *testing.T) { + actual := NewPacketCaptureID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue", "packetCaptureValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/packetCaptures/packetCaptureValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParsePacketCaptureID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PacketCaptureId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/packetCaptures", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/packetCaptures/packetCaptureValue", + Expected: &PacketCaptureId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkWatcherName: "networkWatcherValue", + PacketCaptureName: "packetCaptureValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/packetCaptures/packetCaptureValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePacketCaptureID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkWatcherName != v.Expected.NetworkWatcherName { + t.Fatalf("Expected %q but got %q for NetworkWatcherName", v.Expected.NetworkWatcherName, actual.NetworkWatcherName) + } + + if actual.PacketCaptureName != v.Expected.PacketCaptureName { + t.Fatalf("Expected %q but got %q for PacketCaptureName", v.Expected.PacketCaptureName, actual.PacketCaptureName) + } + + } +} + +func TestParsePacketCaptureIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PacketCaptureId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs/nEtWoRkWaTcHeRvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/packetCaptures", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs/nEtWoRkWaTcHeRvAlUe/pAcKeTcApTuReS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/packetCaptures/packetCaptureValue", + Expected: &PacketCaptureId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkWatcherName: "networkWatcherValue", + PacketCaptureName: "packetCaptureValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/packetCaptures/packetCaptureValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs/nEtWoRkWaTcHeRvAlUe/pAcKeTcApTuReS/pAcKeTcApTuReVaLuE", + Expected: &PacketCaptureId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkWatcherName: "nEtWoRkWaTcHeRvAlUe", + PacketCaptureName: "pAcKeTcApTuReVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs/nEtWoRkWaTcHeRvAlUe/pAcKeTcApTuReS/pAcKeTcApTuReVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePacketCaptureIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkWatcherName != v.Expected.NetworkWatcherName { + t.Fatalf("Expected %q but got %q for NetworkWatcherName", v.Expected.NetworkWatcherName, actual.NetworkWatcherName) + } + + if actual.PacketCaptureName != v.Expected.PacketCaptureName { + t.Fatalf("Expected %q but got %q for PacketCaptureName", v.Expected.PacketCaptureName, actual.PacketCaptureName) + } + + } +} + +func TestSegmentsForPacketCaptureId(t *testing.T) { + segments := PacketCaptureId{}.Segments() + if len(segments) == 0 { + t.Fatalf("PacketCaptureId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/packetcaptures/method_create.go b/resource-manager/network/2024-01-01/packetcaptures/method_create.go new file mode 100644 index 00000000000..d01c4d4092c --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/method_create.go @@ -0,0 +1,74 @@ +package packetcaptures + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *PacketCaptureResult +} + +// Create ... +func (c PacketCapturesClient) Create(ctx context.Context, id PacketCaptureId, input PacketCapture) (result CreateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateThenPoll performs Create then polls until it's completed +func (c PacketCapturesClient) CreateThenPoll(ctx context.Context, id PacketCaptureId, input PacketCapture) error { + result, err := c.Create(ctx, id, input) + if err != nil { + return fmt.Errorf("performing Create: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Create: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/packetcaptures/method_delete.go b/resource-manager/network/2024-01-01/packetcaptures/method_delete.go new file mode 100644 index 00000000000..d35a3b48efa --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/method_delete.go @@ -0,0 +1,70 @@ +package packetcaptures + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c PacketCapturesClient) Delete(ctx context.Context, id PacketCaptureId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c PacketCapturesClient) DeleteThenPoll(ctx context.Context, id PacketCaptureId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/packetcaptures/method_get.go b/resource-manager/network/2024-01-01/packetcaptures/method_get.go new file mode 100644 index 00000000000..2226c032bea --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/method_get.go @@ -0,0 +1,54 @@ +package packetcaptures + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *PacketCaptureResult +} + +// Get ... +func (c PacketCapturesClient) Get(ctx context.Context, id PacketCaptureId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model PacketCaptureResult + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/packetcaptures/method_getstatus.go b/resource-manager/network/2024-01-01/packetcaptures/method_getstatus.go new file mode 100644 index 00000000000..20a7fc75b3c --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/method_getstatus.go @@ -0,0 +1,71 @@ +package packetcaptures + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetStatusOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *PacketCaptureQueryStatusResult +} + +// GetStatus ... +func (c PacketCapturesClient) GetStatus(ctx context.Context, id PacketCaptureId) (result GetStatusOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/queryStatus", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// GetStatusThenPoll performs GetStatus then polls until it's completed +func (c PacketCapturesClient) GetStatusThenPoll(ctx context.Context, id PacketCaptureId) error { + result, err := c.GetStatus(ctx, id) + if err != nil { + return fmt.Errorf("performing GetStatus: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after GetStatus: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/packetcaptures/method_list.go b/resource-manager/network/2024-01-01/packetcaptures/method_list.go new file mode 100644 index 00000000000..49bbc661b3c --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/method_list.go @@ -0,0 +1,55 @@ +package packetcaptures + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *PacketCaptureListResult +} + +// List ... +func (c PacketCapturesClient) List(ctx context.Context, id NetworkWatcherId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/packetCaptures", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model PacketCaptureListResult + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/packetcaptures/method_stop.go b/resource-manager/network/2024-01-01/packetcaptures/method_stop.go new file mode 100644 index 00000000000..31a3b050169 --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/method_stop.go @@ -0,0 +1,70 @@ +package packetcaptures + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StopOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Stop ... +func (c PacketCapturesClient) Stop(ctx context.Context, id PacketCaptureId) (result StopOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/stop", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// StopThenPoll performs Stop then polls until it's completed +func (c PacketCapturesClient) StopThenPoll(ctx context.Context, id PacketCaptureId) error { + result, err := c.Stop(ctx, id) + if err != nil { + return fmt.Errorf("performing Stop: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Stop: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/packetcaptures/model_packetcapture.go b/resource-manager/network/2024-01-01/packetcaptures/model_packetcapture.go new file mode 100644 index 00000000000..592cd89a6e7 --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/model_packetcapture.go @@ -0,0 +1,8 @@ +package packetcaptures + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PacketCapture struct { + Properties PacketCaptureParameters `json:"properties"` +} diff --git a/resource-manager/network/2024-01-01/packetcaptures/model_packetcapturefilter.go b/resource-manager/network/2024-01-01/packetcaptures/model_packetcapturefilter.go new file mode 100644 index 00000000000..fb301880566 --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/model_packetcapturefilter.go @@ -0,0 +1,12 @@ +package packetcaptures + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PacketCaptureFilter struct { + LocalIPAddress *string `json:"localIPAddress,omitempty"` + LocalPort *string `json:"localPort,omitempty"` + Protocol *PcProtocol `json:"protocol,omitempty"` + RemoteIPAddress *string `json:"remoteIPAddress,omitempty"` + RemotePort *string `json:"remotePort,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/packetcaptures/model_packetcapturelistresult.go b/resource-manager/network/2024-01-01/packetcaptures/model_packetcapturelistresult.go new file mode 100644 index 00000000000..54c50c44871 --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/model_packetcapturelistresult.go @@ -0,0 +1,8 @@ +package packetcaptures + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PacketCaptureListResult struct { + Value *[]PacketCaptureResult `json:"value,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/packetcaptures/model_packetcapturemachinescope.go b/resource-manager/network/2024-01-01/packetcaptures/model_packetcapturemachinescope.go new file mode 100644 index 00000000000..99b476671ba --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/model_packetcapturemachinescope.go @@ -0,0 +1,9 @@ +package packetcaptures + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PacketCaptureMachineScope struct { + Exclude *[]string `json:"exclude,omitempty"` + Include *[]string `json:"include,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/packetcaptures/model_packetcaptureparameters.go b/resource-manager/network/2024-01-01/packetcaptures/model_packetcaptureparameters.go new file mode 100644 index 00000000000..0ce5dbb1e97 --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/model_packetcaptureparameters.go @@ -0,0 +1,17 @@ +package packetcaptures + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PacketCaptureParameters struct { + BytesToCapturePerPacket *int64 `json:"bytesToCapturePerPacket,omitempty"` + CaptureSettings *PacketCaptureSettings `json:"captureSettings,omitempty"` + ContinuousCapture *bool `json:"continuousCapture,omitempty"` + Filters *[]PacketCaptureFilter `json:"filters,omitempty"` + Scope *PacketCaptureMachineScope `json:"scope,omitempty"` + StorageLocation PacketCaptureStorageLocation `json:"storageLocation"` + Target string `json:"target"` + TargetType *PacketCaptureTargetType `json:"targetType,omitempty"` + TimeLimitInSeconds *int64 `json:"timeLimitInSeconds,omitempty"` + TotalBytesPerSession *int64 `json:"totalBytesPerSession,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/packetcaptures/model_packetcapturequerystatusresult.go b/resource-manager/network/2024-01-01/packetcaptures/model_packetcapturequerystatusresult.go new file mode 100644 index 00000000000..edea164feae --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/model_packetcapturequerystatusresult.go @@ -0,0 +1,31 @@ +package packetcaptures + +import ( + "time" + + "github.com/hashicorp/go-azure-helpers/lang/dates" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PacketCaptureQueryStatusResult struct { + CaptureStartTime *string `json:"captureStartTime,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + PacketCaptureError *[]PcError `json:"packetCaptureError,omitempty"` + PacketCaptureStatus *PcStatus `json:"packetCaptureStatus,omitempty"` + StopReason *string `json:"stopReason,omitempty"` +} + +func (o *PacketCaptureQueryStatusResult) GetCaptureStartTimeAsTime() (*time.Time, error) { + if o.CaptureStartTime == nil { + return nil, nil + } + return dates.ParseAsFormat(o.CaptureStartTime, "2006-01-02T15:04:05Z07:00") +} + +func (o *PacketCaptureQueryStatusResult) SetCaptureStartTimeAsTime(input time.Time) { + formatted := input.Format("2006-01-02T15:04:05Z07:00") + o.CaptureStartTime = &formatted +} diff --git a/resource-manager/network/2024-01-01/packetcaptures/model_packetcaptureresult.go b/resource-manager/network/2024-01-01/packetcaptures/model_packetcaptureresult.go new file mode 100644 index 00000000000..a2e7cd88e02 --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/model_packetcaptureresult.go @@ -0,0 +1,11 @@ +package packetcaptures + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PacketCaptureResult struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PacketCaptureResultProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/packetcaptures/model_packetcaptureresultproperties.go b/resource-manager/network/2024-01-01/packetcaptures/model_packetcaptureresultproperties.go new file mode 100644 index 00000000000..2e3ffaf706e --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/model_packetcaptureresultproperties.go @@ -0,0 +1,18 @@ +package packetcaptures + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PacketCaptureResultProperties struct { + BytesToCapturePerPacket *int64 `json:"bytesToCapturePerPacket,omitempty"` + CaptureSettings *PacketCaptureSettings `json:"captureSettings,omitempty"` + ContinuousCapture *bool `json:"continuousCapture,omitempty"` + Filters *[]PacketCaptureFilter `json:"filters,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Scope *PacketCaptureMachineScope `json:"scope,omitempty"` + StorageLocation PacketCaptureStorageLocation `json:"storageLocation"` + Target string `json:"target"` + TargetType *PacketCaptureTargetType `json:"targetType,omitempty"` + TimeLimitInSeconds *int64 `json:"timeLimitInSeconds,omitempty"` + TotalBytesPerSession *int64 `json:"totalBytesPerSession,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/packetcaptures/model_packetcapturesettings.go b/resource-manager/network/2024-01-01/packetcaptures/model_packetcapturesettings.go new file mode 100644 index 00000000000..008b5742c30 --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/model_packetcapturesettings.go @@ -0,0 +1,10 @@ +package packetcaptures + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PacketCaptureSettings struct { + FileCount *int64 `json:"fileCount,omitempty"` + FileSizeInBytes *int64 `json:"fileSizeInBytes,omitempty"` + SessionTimeLimitInSeconds *int64 `json:"sessionTimeLimitInSeconds,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/packetcaptures/model_packetcapturestoragelocation.go b/resource-manager/network/2024-01-01/packetcaptures/model_packetcapturestoragelocation.go new file mode 100644 index 00000000000..dc8803c6bdd --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/model_packetcapturestoragelocation.go @@ -0,0 +1,11 @@ +package packetcaptures + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PacketCaptureStorageLocation struct { + FilePath *string `json:"filePath,omitempty"` + LocalPath *string `json:"localPath,omitempty"` + StorageId *string `json:"storageId,omitempty"` + StoragePath *string `json:"storagePath,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/packetcaptures/version.go b/resource-manager/network/2024-01-01/packetcaptures/version.go new file mode 100644 index 00000000000..466fa4f9a89 --- /dev/null +++ b/resource-manager/network/2024-01-01/packetcaptures/version.go @@ -0,0 +1,12 @@ +package packetcaptures + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/packetcaptures/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/README.md b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/README.md new file mode 100644 index 00000000000..099e96d625d --- /dev/null +++ b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/README.md @@ -0,0 +1,54 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections` Documentation + +The `peerexpressroutecircuitconnections` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections" +``` + + +### Client Initialization + +```go +client := peerexpressroutecircuitconnections.NewPeerExpressRouteCircuitConnectionsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `PeerExpressRouteCircuitConnectionsClient.Get` + +```go +ctx := context.TODO() +id := peerexpressroutecircuitconnections.NewPeerConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "peeringValue", "peerConnectionValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `PeerExpressRouteCircuitConnectionsClient.List` + +```go +ctx := context.TODO() +id := commonids.NewExpressRouteCircuitPeeringID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "peeringValue") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/client.go b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/client.go new file mode 100644 index 00000000000..c0c578a280f --- /dev/null +++ b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/client.go @@ -0,0 +1,26 @@ +package peerexpressroutecircuitconnections + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PeerExpressRouteCircuitConnectionsClient struct { + Client *resourcemanager.Client +} + +func NewPeerExpressRouteCircuitConnectionsClientWithBaseURI(sdkApi sdkEnv.Api) (*PeerExpressRouteCircuitConnectionsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "peerexpressroutecircuitconnections", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating PeerExpressRouteCircuitConnectionsClient: %+v", err) + } + + return &PeerExpressRouteCircuitConnectionsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/constants.go b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/constants.go new file mode 100644 index 00000000000..eda70745480 --- /dev/null +++ b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/constants.go @@ -0,0 +1,101 @@ +package peerexpressroutecircuitconnections + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CircuitConnectionStatus string + +const ( + CircuitConnectionStatusConnected CircuitConnectionStatus = "Connected" + CircuitConnectionStatusConnecting CircuitConnectionStatus = "Connecting" + CircuitConnectionStatusDisconnected CircuitConnectionStatus = "Disconnected" +) + +func PossibleValuesForCircuitConnectionStatus() []string { + return []string{ + string(CircuitConnectionStatusConnected), + string(CircuitConnectionStatusConnecting), + string(CircuitConnectionStatusDisconnected), + } +} + +func (s *CircuitConnectionStatus) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseCircuitConnectionStatus(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseCircuitConnectionStatus(input string) (*CircuitConnectionStatus, error) { + vals := map[string]CircuitConnectionStatus{ + "connected": CircuitConnectionStatusConnected, + "connecting": CircuitConnectionStatusConnecting, + "disconnected": CircuitConnectionStatusDisconnected, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := CircuitConnectionStatus(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/id_peerconnection.go b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/id_peerconnection.go new file mode 100644 index 00000000000..6bde16a10c5 --- /dev/null +++ b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/id_peerconnection.go @@ -0,0 +1,148 @@ +package peerexpressroutecircuitconnections + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&PeerConnectionId{}) +} + +var _ resourceids.ResourceId = &PeerConnectionId{} + +// PeerConnectionId is a struct representing the Resource ID for a Peer Connection +type PeerConnectionId struct { + SubscriptionId string + ResourceGroupName string + ExpressRouteCircuitName string + PeeringName string + PeerConnectionName string +} + +// NewPeerConnectionID returns a new PeerConnectionId struct +func NewPeerConnectionID(subscriptionId string, resourceGroupName string, expressRouteCircuitName string, peeringName string, peerConnectionName string) PeerConnectionId { + return PeerConnectionId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ExpressRouteCircuitName: expressRouteCircuitName, + PeeringName: peeringName, + PeerConnectionName: peerConnectionName, + } +} + +// ParsePeerConnectionID parses 'input' into a PeerConnectionId +func ParsePeerConnectionID(input string) (*PeerConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&PeerConnectionId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PeerConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParsePeerConnectionIDInsensitively parses 'input' case-insensitively into a PeerConnectionId +// note: this method should only be used for API response data and not user input +func ParsePeerConnectionIDInsensitively(input string) (*PeerConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&PeerConnectionId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PeerConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *PeerConnectionId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ExpressRouteCircuitName, ok = input.Parsed["expressRouteCircuitName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "expressRouteCircuitName", input) + } + + if id.PeeringName, ok = input.Parsed["peeringName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "peeringName", input) + } + + if id.PeerConnectionName, ok = input.Parsed["peerConnectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "peerConnectionName", input) + } + + return nil +} + +// ValidatePeerConnectionID checks that 'input' can be parsed as a Peer Connection ID +func ValidatePeerConnectionID(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 := ParsePeerConnectionID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Peer Connection ID +func (id PeerConnectionId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/expressRouteCircuits/%s/peerings/%s/peerConnections/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ExpressRouteCircuitName, id.PeeringName, id.PeerConnectionName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Peer Connection ID +func (id PeerConnectionId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticExpressRouteCircuits", "expressRouteCircuits", "expressRouteCircuits"), + resourceids.UserSpecifiedSegment("expressRouteCircuitName", "expressRouteCircuitValue"), + resourceids.StaticSegment("staticPeerings", "peerings", "peerings"), + resourceids.UserSpecifiedSegment("peeringName", "peeringValue"), + resourceids.StaticSegment("staticPeerConnections", "peerConnections", "peerConnections"), + resourceids.UserSpecifiedSegment("peerConnectionName", "peerConnectionValue"), + } +} + +// String returns a human-readable description of this Peer Connection ID +func (id PeerConnectionId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Express Route Circuit Name: %q", id.ExpressRouteCircuitName), + fmt.Sprintf("Peering Name: %q", id.PeeringName), + fmt.Sprintf("Peer Connection Name: %q", id.PeerConnectionName), + } + return fmt.Sprintf("Peer Connection (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/id_peerconnection_test.go b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/id_peerconnection_test.go new file mode 100644 index 00000000000..df242ff6d30 --- /dev/null +++ b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/id_peerconnection_test.go @@ -0,0 +1,372 @@ +package peerexpressroutecircuitconnections + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &PeerConnectionId{} + +func TestNewPeerConnectionID(t *testing.T) { + id := NewPeerConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "peeringValue", "peerConnectionValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ExpressRouteCircuitName != "expressRouteCircuitValue" { + t.Fatalf("Expected %q but got %q for Segment 'ExpressRouteCircuitName'", id.ExpressRouteCircuitName, "expressRouteCircuitValue") + } + + if id.PeeringName != "peeringValue" { + t.Fatalf("Expected %q but got %q for Segment 'PeeringName'", id.PeeringName, "peeringValue") + } + + if id.PeerConnectionName != "peerConnectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'PeerConnectionName'", id.PeerConnectionName, "peerConnectionValue") + } +} + +func TestFormatPeerConnectionID(t *testing.T) { + actual := NewPeerConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "expressRouteCircuitValue", "peeringValue", "peerConnectionValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/peerConnections/peerConnectionValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParsePeerConnectionID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PeerConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/peerConnections", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/peerConnections/peerConnectionValue", + Expected: &PeerConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCircuitName: "expressRouteCircuitValue", + PeeringName: "peeringValue", + PeerConnectionName: "peerConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/peerConnections/peerConnectionValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePeerConnectionID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCircuitName != v.Expected.ExpressRouteCircuitName { + t.Fatalf("Expected %q but got %q for ExpressRouteCircuitName", v.Expected.ExpressRouteCircuitName, actual.ExpressRouteCircuitName) + } + + if actual.PeeringName != v.Expected.PeeringName { + t.Fatalf("Expected %q but got %q for PeeringName", v.Expected.PeeringName, actual.PeeringName) + } + + if actual.PeerConnectionName != v.Expected.PeerConnectionName { + t.Fatalf("Expected %q but got %q for PeerConnectionName", v.Expected.PeerConnectionName, actual.PeerConnectionName) + } + + } +} + +func TestParsePeerConnectionIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PeerConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS/pEeRiNgVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/peerConnections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS/pEeRiNgVaLuE/pEeRcOnNeCtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/peerConnections/peerConnectionValue", + Expected: &PeerConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ExpressRouteCircuitName: "expressRouteCircuitValue", + PeeringName: "peeringValue", + PeerConnectionName: "peerConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/expressRouteCircuits/expressRouteCircuitValue/peerings/peeringValue/peerConnections/peerConnectionValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS/pEeRiNgVaLuE/pEeRcOnNeCtIoNs/pEeRcOnNeCtIoNvAlUe", + Expected: &PeerConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ExpressRouteCircuitName: "eXpReSsRoUtEcIrCuItVaLuE", + PeeringName: "pEeRiNgVaLuE", + PeerConnectionName: "pEeRcOnNeCtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/eXpReSsRoUtEcIrCuItS/eXpReSsRoUtEcIrCuItVaLuE/pEeRiNgS/pEeRiNgVaLuE/pEeRcOnNeCtIoNs/pEeRcOnNeCtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePeerConnectionIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ExpressRouteCircuitName != v.Expected.ExpressRouteCircuitName { + t.Fatalf("Expected %q but got %q for ExpressRouteCircuitName", v.Expected.ExpressRouteCircuitName, actual.ExpressRouteCircuitName) + } + + if actual.PeeringName != v.Expected.PeeringName { + t.Fatalf("Expected %q but got %q for PeeringName", v.Expected.PeeringName, actual.PeeringName) + } + + if actual.PeerConnectionName != v.Expected.PeerConnectionName { + t.Fatalf("Expected %q but got %q for PeerConnectionName", v.Expected.PeerConnectionName, actual.PeerConnectionName) + } + + } +} + +func TestSegmentsForPeerConnectionId(t *testing.T) { + segments := PeerConnectionId{}.Segments() + if len(segments) == 0 { + t.Fatalf("PeerConnectionId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/method_get.go b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/method_get.go new file mode 100644 index 00000000000..844c3c67e07 --- /dev/null +++ b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/method_get.go @@ -0,0 +1,54 @@ +package peerexpressroutecircuitconnections + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *PeerExpressRouteCircuitConnection +} + +// Get ... +func (c PeerExpressRouteCircuitConnectionsClient) Get(ctx context.Context, id PeerConnectionId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model PeerExpressRouteCircuitConnection + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/method_list.go b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/method_list.go new file mode 100644 index 00000000000..f2724c37da1 --- /dev/null +++ b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/method_list.go @@ -0,0 +1,93 @@ +package peerexpressroutecircuitconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]PeerExpressRouteCircuitConnection +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []PeerExpressRouteCircuitConnection +} + +// List ... +func (c PeerExpressRouteCircuitConnectionsClient) List(ctx context.Context, id commonids.ExpressRouteCircuitPeeringId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/peerConnections", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]PeerExpressRouteCircuitConnection `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c PeerExpressRouteCircuitConnectionsClient) ListComplete(ctx context.Context, id commonids.ExpressRouteCircuitPeeringId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, PeerExpressRouteCircuitConnectionOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c PeerExpressRouteCircuitConnectionsClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ExpressRouteCircuitPeeringId, predicate PeerExpressRouteCircuitConnectionOperationPredicate) (result ListCompleteResult, err error) { + items := make([]PeerExpressRouteCircuitConnection, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/model_peerexpressroutecircuitconnection.go b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/model_peerexpressroutecircuitconnection.go new file mode 100644 index 00000000000..0ba2f68f213 --- /dev/null +++ b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/model_peerexpressroutecircuitconnection.go @@ -0,0 +1,12 @@ +package peerexpressroutecircuitconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PeerExpressRouteCircuitConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PeerExpressRouteCircuitConnectionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/model_peerexpressroutecircuitconnectionpropertiesformat.go b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/model_peerexpressroutecircuitconnectionpropertiesformat.go new file mode 100644 index 00000000000..c4a72c247d0 --- /dev/null +++ b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/model_peerexpressroutecircuitconnectionpropertiesformat.go @@ -0,0 +1,14 @@ +package peerexpressroutecircuitconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PeerExpressRouteCircuitConnectionPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AuthResourceGuid *string `json:"authResourceGuid,omitempty"` + CircuitConnectionStatus *CircuitConnectionStatus `json:"circuitConnectionStatus,omitempty"` + ConnectionName *string `json:"connectionName,omitempty"` + ExpressRouteCircuitPeering *SubResource `json:"expressRouteCircuitPeering,omitempty"` + PeerExpressRouteCircuitPeering *SubResource `json:"peerExpressRouteCircuitPeering,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/model_subresource.go b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/model_subresource.go new file mode 100644 index 00000000000..da8f131efb2 --- /dev/null +++ b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/model_subresource.go @@ -0,0 +1,8 @@ +package peerexpressroutecircuitconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/predicates.go b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/predicates.go new file mode 100644 index 00000000000..c0766bb2d18 --- /dev/null +++ b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/predicates.go @@ -0,0 +1,32 @@ +package peerexpressroutecircuitconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PeerExpressRouteCircuitConnectionOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p PeerExpressRouteCircuitConnectionOperationPredicate) Matches(input PeerExpressRouteCircuitConnection) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/version.go b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/version.go new file mode 100644 index 00000000000..fdbd8248998 --- /dev/null +++ b/resource-manager/network/2024-01-01/peerexpressroutecircuitconnections/version.go @@ -0,0 +1,12 @@ +package peerexpressroutecircuitconnections + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/peerexpressroutecircuitconnections/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/privatednszonegroups/README.md b/resource-manager/network/2024-01-01/privatednszonegroups/README.md new file mode 100644 index 00000000000..ce2d32e0b89 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatednszonegroups/README.md @@ -0,0 +1,82 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/privatednszonegroups` Documentation + +The `privatednszonegroups` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/privatednszonegroups" +``` + + +### Client Initialization + +```go +client := privatednszonegroups.NewPrivateDnsZoneGroupsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `PrivateDnsZoneGroupsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := privatednszonegroups.NewPrivateDnsZoneGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateEndpointValue", "privateDnsZoneGroupValue") + +payload := privatednszonegroups.PrivateDnsZoneGroup{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `PrivateDnsZoneGroupsClient.Delete` + +```go +ctx := context.TODO() +id := privatednszonegroups.NewPrivateDnsZoneGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateEndpointValue", "privateDnsZoneGroupValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `PrivateDnsZoneGroupsClient.Get` + +```go +ctx := context.TODO() +id := privatednszonegroups.NewPrivateDnsZoneGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateEndpointValue", "privateDnsZoneGroupValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `PrivateDnsZoneGroupsClient.List` + +```go +ctx := context.TODO() +id := privatednszonegroups.NewPrivateEndpointID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateEndpointValue") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/privatednszonegroups/client.go b/resource-manager/network/2024-01-01/privatednszonegroups/client.go new file mode 100644 index 00000000000..99ce8b6667e --- /dev/null +++ b/resource-manager/network/2024-01-01/privatednszonegroups/client.go @@ -0,0 +1,26 @@ +package privatednszonegroups + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateDnsZoneGroupsClient struct { + Client *resourcemanager.Client +} + +func NewPrivateDnsZoneGroupsClientWithBaseURI(sdkApi sdkEnv.Api) (*PrivateDnsZoneGroupsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "privatednszonegroups", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating PrivateDnsZoneGroupsClient: %+v", err) + } + + return &PrivateDnsZoneGroupsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/privatednszonegroups/constants.go b/resource-manager/network/2024-01-01/privatednszonegroups/constants.go new file mode 100644 index 00000000000..a68ae3a4523 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatednszonegroups/constants.go @@ -0,0 +1,57 @@ +package privatednszonegroups + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/privatednszonegroups/id_privatednszonegroup.go b/resource-manager/network/2024-01-01/privatednszonegroups/id_privatednszonegroup.go new file mode 100644 index 00000000000..9399f9157d3 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatednszonegroups/id_privatednszonegroup.go @@ -0,0 +1,139 @@ +package privatednszonegroups + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&PrivateDnsZoneGroupId{}) +} + +var _ resourceids.ResourceId = &PrivateDnsZoneGroupId{} + +// PrivateDnsZoneGroupId is a struct representing the Resource ID for a Private Dns Zone Group +type PrivateDnsZoneGroupId struct { + SubscriptionId string + ResourceGroupName string + PrivateEndpointName string + PrivateDnsZoneGroupName string +} + +// NewPrivateDnsZoneGroupID returns a new PrivateDnsZoneGroupId struct +func NewPrivateDnsZoneGroupID(subscriptionId string, resourceGroupName string, privateEndpointName string, privateDnsZoneGroupName string) PrivateDnsZoneGroupId { + return PrivateDnsZoneGroupId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + PrivateEndpointName: privateEndpointName, + PrivateDnsZoneGroupName: privateDnsZoneGroupName, + } +} + +// ParsePrivateDnsZoneGroupID parses 'input' into a PrivateDnsZoneGroupId +func ParsePrivateDnsZoneGroupID(input string) (*PrivateDnsZoneGroupId, error) { + parser := resourceids.NewParserFromResourceIdType(&PrivateDnsZoneGroupId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PrivateDnsZoneGroupId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParsePrivateDnsZoneGroupIDInsensitively parses 'input' case-insensitively into a PrivateDnsZoneGroupId +// note: this method should only be used for API response data and not user input +func ParsePrivateDnsZoneGroupIDInsensitively(input string) (*PrivateDnsZoneGroupId, error) { + parser := resourceids.NewParserFromResourceIdType(&PrivateDnsZoneGroupId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PrivateDnsZoneGroupId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *PrivateDnsZoneGroupId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.PrivateEndpointName, ok = input.Parsed["privateEndpointName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "privateEndpointName", input) + } + + if id.PrivateDnsZoneGroupName, ok = input.Parsed["privateDnsZoneGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "privateDnsZoneGroupName", input) + } + + return nil +} + +// ValidatePrivateDnsZoneGroupID checks that 'input' can be parsed as a Private Dns Zone Group ID +func ValidatePrivateDnsZoneGroupID(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 := ParsePrivateDnsZoneGroupID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Private Dns Zone Group ID +func (id PrivateDnsZoneGroupId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/privateEndpoints/%s/privateDnsZoneGroups/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.PrivateEndpointName, id.PrivateDnsZoneGroupName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Private Dns Zone Group ID +func (id PrivateDnsZoneGroupId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticPrivateEndpoints", "privateEndpoints", "privateEndpoints"), + resourceids.UserSpecifiedSegment("privateEndpointName", "privateEndpointValue"), + resourceids.StaticSegment("staticPrivateDnsZoneGroups", "privateDnsZoneGroups", "privateDnsZoneGroups"), + resourceids.UserSpecifiedSegment("privateDnsZoneGroupName", "privateDnsZoneGroupValue"), + } +} + +// String returns a human-readable description of this Private Dns Zone Group ID +func (id PrivateDnsZoneGroupId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Private Endpoint Name: %q", id.PrivateEndpointName), + fmt.Sprintf("Private Dns Zone Group Name: %q", id.PrivateDnsZoneGroupName), + } + return fmt.Sprintf("Private Dns Zone Group (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/privatednszonegroups/id_privatednszonegroup_test.go b/resource-manager/network/2024-01-01/privatednszonegroups/id_privatednszonegroup_test.go new file mode 100644 index 00000000000..f2c846d6c2f --- /dev/null +++ b/resource-manager/network/2024-01-01/privatednszonegroups/id_privatednszonegroup_test.go @@ -0,0 +1,327 @@ +package privatednszonegroups + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &PrivateDnsZoneGroupId{} + +func TestNewPrivateDnsZoneGroupID(t *testing.T) { + id := NewPrivateDnsZoneGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateEndpointValue", "privateDnsZoneGroupValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.PrivateEndpointName != "privateEndpointValue" { + t.Fatalf("Expected %q but got %q for Segment 'PrivateEndpointName'", id.PrivateEndpointName, "privateEndpointValue") + } + + if id.PrivateDnsZoneGroupName != "privateDnsZoneGroupValue" { + t.Fatalf("Expected %q but got %q for Segment 'PrivateDnsZoneGroupName'", id.PrivateDnsZoneGroupName, "privateDnsZoneGroupValue") + } +} + +func TestFormatPrivateDnsZoneGroupID(t *testing.T) { + actual := NewPrivateDnsZoneGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateEndpointValue", "privateDnsZoneGroupValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints/privateEndpointValue/privateDnsZoneGroups/privateDnsZoneGroupValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParsePrivateDnsZoneGroupID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PrivateDnsZoneGroupId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints/privateEndpointValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints/privateEndpointValue/privateDnsZoneGroups", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints/privateEndpointValue/privateDnsZoneGroups/privateDnsZoneGroupValue", + Expected: &PrivateDnsZoneGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + PrivateEndpointName: "privateEndpointValue", + PrivateDnsZoneGroupName: "privateDnsZoneGroupValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints/privateEndpointValue/privateDnsZoneGroups/privateDnsZoneGroupValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePrivateDnsZoneGroupID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.PrivateEndpointName != v.Expected.PrivateEndpointName { + t.Fatalf("Expected %q but got %q for PrivateEndpointName", v.Expected.PrivateEndpointName, actual.PrivateEndpointName) + } + + if actual.PrivateDnsZoneGroupName != v.Expected.PrivateDnsZoneGroupName { + t.Fatalf("Expected %q but got %q for PrivateDnsZoneGroupName", v.Expected.PrivateDnsZoneGroupName, actual.PrivateDnsZoneGroupName) + } + + } +} + +func TestParsePrivateDnsZoneGroupIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PrivateDnsZoneGroupId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/pRiVaTeEnDpOiNtS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints/privateEndpointValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/pRiVaTeEnDpOiNtS/pRiVaTeEnDpOiNtVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints/privateEndpointValue/privateDnsZoneGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/pRiVaTeEnDpOiNtS/pRiVaTeEnDpOiNtVaLuE/pRiVaTeDnSzOnEgRoUpS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints/privateEndpointValue/privateDnsZoneGroups/privateDnsZoneGroupValue", + Expected: &PrivateDnsZoneGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + PrivateEndpointName: "privateEndpointValue", + PrivateDnsZoneGroupName: "privateDnsZoneGroupValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints/privateEndpointValue/privateDnsZoneGroups/privateDnsZoneGroupValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/pRiVaTeEnDpOiNtS/pRiVaTeEnDpOiNtVaLuE/pRiVaTeDnSzOnEgRoUpS/pRiVaTeDnSzOnEgRoUpVaLuE", + Expected: &PrivateDnsZoneGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + PrivateEndpointName: "pRiVaTeEnDpOiNtVaLuE", + PrivateDnsZoneGroupName: "pRiVaTeDnSzOnEgRoUpVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/pRiVaTeEnDpOiNtS/pRiVaTeEnDpOiNtVaLuE/pRiVaTeDnSzOnEgRoUpS/pRiVaTeDnSzOnEgRoUpVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePrivateDnsZoneGroupIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.PrivateEndpointName != v.Expected.PrivateEndpointName { + t.Fatalf("Expected %q but got %q for PrivateEndpointName", v.Expected.PrivateEndpointName, actual.PrivateEndpointName) + } + + if actual.PrivateDnsZoneGroupName != v.Expected.PrivateDnsZoneGroupName { + t.Fatalf("Expected %q but got %q for PrivateDnsZoneGroupName", v.Expected.PrivateDnsZoneGroupName, actual.PrivateDnsZoneGroupName) + } + + } +} + +func TestSegmentsForPrivateDnsZoneGroupId(t *testing.T) { + segments := PrivateDnsZoneGroupId{}.Segments() + if len(segments) == 0 { + t.Fatalf("PrivateDnsZoneGroupId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/privatednszonegroups/id_privateendpoint.go b/resource-manager/network/2024-01-01/privatednszonegroups/id_privateendpoint.go new file mode 100644 index 00000000000..a9f6cc5dff2 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatednszonegroups/id_privateendpoint.go @@ -0,0 +1,130 @@ +package privatednszonegroups + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&PrivateEndpointId{}) +} + +var _ resourceids.ResourceId = &PrivateEndpointId{} + +// PrivateEndpointId is a struct representing the Resource ID for a Private Endpoint +type PrivateEndpointId struct { + SubscriptionId string + ResourceGroupName string + PrivateEndpointName string +} + +// NewPrivateEndpointID returns a new PrivateEndpointId struct +func NewPrivateEndpointID(subscriptionId string, resourceGroupName string, privateEndpointName string) PrivateEndpointId { + return PrivateEndpointId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + PrivateEndpointName: privateEndpointName, + } +} + +// ParsePrivateEndpointID parses 'input' into a PrivateEndpointId +func ParsePrivateEndpointID(input string) (*PrivateEndpointId, error) { + parser := resourceids.NewParserFromResourceIdType(&PrivateEndpointId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PrivateEndpointId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParsePrivateEndpointIDInsensitively parses 'input' case-insensitively into a PrivateEndpointId +// note: this method should only be used for API response data and not user input +func ParsePrivateEndpointIDInsensitively(input string) (*PrivateEndpointId, error) { + parser := resourceids.NewParserFromResourceIdType(&PrivateEndpointId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PrivateEndpointId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *PrivateEndpointId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.PrivateEndpointName, ok = input.Parsed["privateEndpointName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "privateEndpointName", input) + } + + return nil +} + +// ValidatePrivateEndpointID checks that 'input' can be parsed as a Private Endpoint ID +func ValidatePrivateEndpointID(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 := ParsePrivateEndpointID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Private Endpoint ID +func (id PrivateEndpointId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/privateEndpoints/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.PrivateEndpointName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Private Endpoint ID +func (id PrivateEndpointId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticPrivateEndpoints", "privateEndpoints", "privateEndpoints"), + resourceids.UserSpecifiedSegment("privateEndpointName", "privateEndpointValue"), + } +} + +// String returns a human-readable description of this Private Endpoint ID +func (id PrivateEndpointId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Private Endpoint Name: %q", id.PrivateEndpointName), + } + return fmt.Sprintf("Private Endpoint (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/privatednszonegroups/id_privateendpoint_test.go b/resource-manager/network/2024-01-01/privatednszonegroups/id_privateendpoint_test.go new file mode 100644 index 00000000000..d2c81acb9f9 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatednszonegroups/id_privateendpoint_test.go @@ -0,0 +1,282 @@ +package privatednszonegroups + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &PrivateEndpointId{} + +func TestNewPrivateEndpointID(t *testing.T) { + id := NewPrivateEndpointID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateEndpointValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.PrivateEndpointName != "privateEndpointValue" { + t.Fatalf("Expected %q but got %q for Segment 'PrivateEndpointName'", id.PrivateEndpointName, "privateEndpointValue") + } +} + +func TestFormatPrivateEndpointID(t *testing.T) { + actual := NewPrivateEndpointID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateEndpointValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints/privateEndpointValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParsePrivateEndpointID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PrivateEndpointId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints/privateEndpointValue", + Expected: &PrivateEndpointId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + PrivateEndpointName: "privateEndpointValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints/privateEndpointValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePrivateEndpointID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.PrivateEndpointName != v.Expected.PrivateEndpointName { + t.Fatalf("Expected %q but got %q for PrivateEndpointName", v.Expected.PrivateEndpointName, actual.PrivateEndpointName) + } + + } +} + +func TestParsePrivateEndpointIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PrivateEndpointId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/pRiVaTeEnDpOiNtS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints/privateEndpointValue", + Expected: &PrivateEndpointId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + PrivateEndpointName: "privateEndpointValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints/privateEndpointValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/pRiVaTeEnDpOiNtS/pRiVaTeEnDpOiNtVaLuE", + Expected: &PrivateEndpointId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + PrivateEndpointName: "pRiVaTeEnDpOiNtVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/pRiVaTeEnDpOiNtS/pRiVaTeEnDpOiNtVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePrivateEndpointIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.PrivateEndpointName != v.Expected.PrivateEndpointName { + t.Fatalf("Expected %q but got %q for PrivateEndpointName", v.Expected.PrivateEndpointName, actual.PrivateEndpointName) + } + + } +} + +func TestSegmentsForPrivateEndpointId(t *testing.T) { + segments := PrivateEndpointId{}.Segments() + if len(segments) == 0 { + t.Fatalf("PrivateEndpointId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/privatednszonegroups/method_createorupdate.go b/resource-manager/network/2024-01-01/privatednszonegroups/method_createorupdate.go new file mode 100644 index 00000000000..88dadb3a0a5 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatednszonegroups/method_createorupdate.go @@ -0,0 +1,75 @@ +package privatednszonegroups + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *PrivateDnsZoneGroup +} + +// CreateOrUpdate ... +func (c PrivateDnsZoneGroupsClient) CreateOrUpdate(ctx context.Context, id PrivateDnsZoneGroupId, input PrivateDnsZoneGroup) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c PrivateDnsZoneGroupsClient) CreateOrUpdateThenPoll(ctx context.Context, id PrivateDnsZoneGroupId, input PrivateDnsZoneGroup) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/privatednszonegroups/method_delete.go b/resource-manager/network/2024-01-01/privatednszonegroups/method_delete.go new file mode 100644 index 00000000000..cdf382f2686 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatednszonegroups/method_delete.go @@ -0,0 +1,71 @@ +package privatednszonegroups + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c PrivateDnsZoneGroupsClient) Delete(ctx context.Context, id PrivateDnsZoneGroupId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c PrivateDnsZoneGroupsClient) DeleteThenPoll(ctx context.Context, id PrivateDnsZoneGroupId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/privatednszonegroups/method_get.go b/resource-manager/network/2024-01-01/privatednszonegroups/method_get.go new file mode 100644 index 00000000000..3c25fca99b7 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatednszonegroups/method_get.go @@ -0,0 +1,54 @@ +package privatednszonegroups + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *PrivateDnsZoneGroup +} + +// Get ... +func (c PrivateDnsZoneGroupsClient) Get(ctx context.Context, id PrivateDnsZoneGroupId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model PrivateDnsZoneGroup + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/privatednszonegroups/method_list.go b/resource-manager/network/2024-01-01/privatednszonegroups/method_list.go new file mode 100644 index 00000000000..1f2c22a77bd --- /dev/null +++ b/resource-manager/network/2024-01-01/privatednszonegroups/method_list.go @@ -0,0 +1,92 @@ +package privatednszonegroups + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]PrivateDnsZoneGroup +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []PrivateDnsZoneGroup +} + +// List ... +func (c PrivateDnsZoneGroupsClient) List(ctx context.Context, id PrivateEndpointId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/privateDnsZoneGroups", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]PrivateDnsZoneGroup `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c PrivateDnsZoneGroupsClient) ListComplete(ctx context.Context, id PrivateEndpointId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, PrivateDnsZoneGroupOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c PrivateDnsZoneGroupsClient) ListCompleteMatchingPredicate(ctx context.Context, id PrivateEndpointId, predicate PrivateDnsZoneGroupOperationPredicate) (result ListCompleteResult, err error) { + items := make([]PrivateDnsZoneGroup, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/privatednszonegroups/model_privatednszoneconfig.go b/resource-manager/network/2024-01-01/privatednszonegroups/model_privatednszoneconfig.go new file mode 100644 index 00000000000..e44ef143e5c --- /dev/null +++ b/resource-manager/network/2024-01-01/privatednszonegroups/model_privatednszoneconfig.go @@ -0,0 +1,9 @@ +package privatednszonegroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateDnsZoneConfig struct { + Name *string `json:"name,omitempty"` + Properties *PrivateDnsZonePropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatednszonegroups/model_privatednszonegroup.go b/resource-manager/network/2024-01-01/privatednszonegroups/model_privatednszonegroup.go new file mode 100644 index 00000000000..75533fc47a5 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatednszonegroups/model_privatednszonegroup.go @@ -0,0 +1,11 @@ +package privatednszonegroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateDnsZoneGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateDnsZoneGroupPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatednszonegroups/model_privatednszonegrouppropertiesformat.go b/resource-manager/network/2024-01-01/privatednszonegroups/model_privatednszonegrouppropertiesformat.go new file mode 100644 index 00000000000..f892f554965 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatednszonegroups/model_privatednszonegrouppropertiesformat.go @@ -0,0 +1,9 @@ +package privatednszonegroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateDnsZoneGroupPropertiesFormat struct { + PrivateDnsZoneConfigs *[]PrivateDnsZoneConfig `json:"privateDnsZoneConfigs,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatednszonegroups/model_privatednszonepropertiesformat.go b/resource-manager/network/2024-01-01/privatednszonegroups/model_privatednszonepropertiesformat.go new file mode 100644 index 00000000000..33858bfe24e --- /dev/null +++ b/resource-manager/network/2024-01-01/privatednszonegroups/model_privatednszonepropertiesformat.go @@ -0,0 +1,9 @@ +package privatednszonegroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateDnsZonePropertiesFormat struct { + PrivateDnsZoneId *string `json:"privateDnsZoneId,omitempty"` + RecordSets *[]RecordSet `json:"recordSets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatednszonegroups/model_recordset.go b/resource-manager/network/2024-01-01/privatednszonegroups/model_recordset.go new file mode 100644 index 00000000000..4a39969425d --- /dev/null +++ b/resource-manager/network/2024-01-01/privatednszonegroups/model_recordset.go @@ -0,0 +1,13 @@ +package privatednszonegroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RecordSet struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RecordSetName *string `json:"recordSetName,omitempty"` + RecordType *string `json:"recordType,omitempty"` + Ttl *int64 `json:"ttl,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatednszonegroups/predicates.go b/resource-manager/network/2024-01-01/privatednszonegroups/predicates.go new file mode 100644 index 00000000000..4d27803d6e2 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatednszonegroups/predicates.go @@ -0,0 +1,27 @@ +package privatednszonegroups + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateDnsZoneGroupOperationPredicate struct { + Etag *string + Id *string + Name *string +} + +func (p PrivateDnsZoneGroupOperationPredicate) Matches(input PrivateDnsZoneGroup) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/privatednszonegroups/version.go b/resource-manager/network/2024-01-01/privatednszonegroups/version.go new file mode 100644 index 00000000000..5c35ae733e6 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatednszonegroups/version.go @@ -0,0 +1,12 @@ +package privatednszonegroups + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/privatednszonegroups/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/README.md b/resource-manager/network/2024-01-01/privateendpoints/README.md new file mode 100644 index 00000000000..cadd9ae80c6 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/README.md @@ -0,0 +1,134 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/privateendpoints` Documentation + +The `privateendpoints` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/privateendpoints" +``` + + +### Client Initialization + +```go +client := privateendpoints.NewPrivateEndpointsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `PrivateEndpointsClient.AvailablePrivateEndpointTypesList` + +```go +ctx := context.TODO() +id := privateendpoints.NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue") + +// alternatively `client.AvailablePrivateEndpointTypesList(ctx, id)` can be used to do batched pagination +items, err := client.AvailablePrivateEndpointTypesListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `PrivateEndpointsClient.AvailablePrivateEndpointTypesListByResourceGroup` + +```go +ctx := context.TODO() +id := privateendpoints.NewProviderLocationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "locationValue") + +// alternatively `client.AvailablePrivateEndpointTypesListByResourceGroup(ctx, id)` can be used to do batched pagination +items, err := client.AvailablePrivateEndpointTypesListByResourceGroupComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `PrivateEndpointsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := privateendpoints.NewPrivateEndpointID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateEndpointValue") + +payload := privateendpoints.PrivateEndpoint{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `PrivateEndpointsClient.Delete` + +```go +ctx := context.TODO() +id := privateendpoints.NewPrivateEndpointID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateEndpointValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `PrivateEndpointsClient.Get` + +```go +ctx := context.TODO() +id := privateendpoints.NewPrivateEndpointID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateEndpointValue") + +read, err := client.Get(ctx, id, privateendpoints.DefaultGetOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `PrivateEndpointsClient.List` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `PrivateEndpointsClient.ListBySubscription` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.ListBySubscription(ctx, id)` can be used to do batched pagination +items, err := client.ListBySubscriptionComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/privateendpoints/client.go b/resource-manager/network/2024-01-01/privateendpoints/client.go new file mode 100644 index 00000000000..149437b1334 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/client.go @@ -0,0 +1,26 @@ +package privateendpoints + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointsClient struct { + Client *resourcemanager.Client +} + +func NewPrivateEndpointsClientWithBaseURI(sdkApi sdkEnv.Api) (*PrivateEndpointsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "privateendpoints", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating PrivateEndpointsClient: %+v", err) + } + + return &PrivateEndpointsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/constants.go b/resource-manager/network/2024-01-01/privateendpoints/constants.go new file mode 100644 index 00000000000..0398aa0f925 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/constants.go @@ -0,0 +1,1198 @@ +package privateendpoints + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettingsProtectionMode string + +const ( + DdosSettingsProtectionModeDisabled DdosSettingsProtectionMode = "Disabled" + DdosSettingsProtectionModeEnabled DdosSettingsProtectionMode = "Enabled" + DdosSettingsProtectionModeVirtualNetworkInherited DdosSettingsProtectionMode = "VirtualNetworkInherited" +) + +func PossibleValuesForDdosSettingsProtectionMode() []string { + return []string{ + string(DdosSettingsProtectionModeDisabled), + string(DdosSettingsProtectionModeEnabled), + string(DdosSettingsProtectionModeVirtualNetworkInherited), + } +} + +func (s *DdosSettingsProtectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDdosSettingsProtectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDdosSettingsProtectionMode(input string) (*DdosSettingsProtectionMode, error) { + vals := map[string]DdosSettingsProtectionMode{ + "disabled": DdosSettingsProtectionModeDisabled, + "enabled": DdosSettingsProtectionModeEnabled, + "virtualnetworkinherited": DdosSettingsProtectionModeVirtualNetworkInherited, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DdosSettingsProtectionMode(input) + return &out, nil +} + +type DeleteOptions string + +const ( + DeleteOptionsDelete DeleteOptions = "Delete" + DeleteOptionsDetach DeleteOptions = "Detach" +) + +func PossibleValuesForDeleteOptions() []string { + return []string{ + string(DeleteOptionsDelete), + string(DeleteOptionsDetach), + } +} + +func (s *DeleteOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteOptions(input string) (*DeleteOptions, error) { + vals := map[string]DeleteOptions{ + "delete": DeleteOptionsDelete, + "detach": DeleteOptionsDetach, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteOptions(input) + return &out, nil +} + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelInterfaceType string + +const ( + GatewayLoadBalancerTunnelInterfaceTypeExternal GatewayLoadBalancerTunnelInterfaceType = "External" + GatewayLoadBalancerTunnelInterfaceTypeInternal GatewayLoadBalancerTunnelInterfaceType = "Internal" + GatewayLoadBalancerTunnelInterfaceTypeNone GatewayLoadBalancerTunnelInterfaceType = "None" +) + +func PossibleValuesForGatewayLoadBalancerTunnelInterfaceType() []string { + return []string{ + string(GatewayLoadBalancerTunnelInterfaceTypeExternal), + string(GatewayLoadBalancerTunnelInterfaceTypeInternal), + string(GatewayLoadBalancerTunnelInterfaceTypeNone), + } +} + +func (s *GatewayLoadBalancerTunnelInterfaceType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelInterfaceType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelInterfaceType(input string) (*GatewayLoadBalancerTunnelInterfaceType, error) { + vals := map[string]GatewayLoadBalancerTunnelInterfaceType{ + "external": GatewayLoadBalancerTunnelInterfaceTypeExternal, + "internal": GatewayLoadBalancerTunnelInterfaceTypeInternal, + "none": GatewayLoadBalancerTunnelInterfaceTypeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelInterfaceType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelProtocol string + +const ( + GatewayLoadBalancerTunnelProtocolNative GatewayLoadBalancerTunnelProtocol = "Native" + GatewayLoadBalancerTunnelProtocolNone GatewayLoadBalancerTunnelProtocol = "None" + GatewayLoadBalancerTunnelProtocolVXLAN GatewayLoadBalancerTunnelProtocol = "VXLAN" +) + +func PossibleValuesForGatewayLoadBalancerTunnelProtocol() []string { + return []string{ + string(GatewayLoadBalancerTunnelProtocolNative), + string(GatewayLoadBalancerTunnelProtocolNone), + string(GatewayLoadBalancerTunnelProtocolVXLAN), + } +} + +func (s *GatewayLoadBalancerTunnelProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelProtocol(input string) (*GatewayLoadBalancerTunnelProtocol, error) { + vals := map[string]GatewayLoadBalancerTunnelProtocol{ + "native": GatewayLoadBalancerTunnelProtocolNative, + "none": GatewayLoadBalancerTunnelProtocolNone, + "vxlan": GatewayLoadBalancerTunnelProtocolVXLAN, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelProtocol(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} + +type LoadBalancerBackendAddressAdminState string + +const ( + LoadBalancerBackendAddressAdminStateDown LoadBalancerBackendAddressAdminState = "Down" + LoadBalancerBackendAddressAdminStateNone LoadBalancerBackendAddressAdminState = "None" + LoadBalancerBackendAddressAdminStateUp LoadBalancerBackendAddressAdminState = "Up" +) + +func PossibleValuesForLoadBalancerBackendAddressAdminState() []string { + return []string{ + string(LoadBalancerBackendAddressAdminStateDown), + string(LoadBalancerBackendAddressAdminStateNone), + string(LoadBalancerBackendAddressAdminStateUp), + } +} + +func (s *LoadBalancerBackendAddressAdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerBackendAddressAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerBackendAddressAdminState(input string) (*LoadBalancerBackendAddressAdminState, error) { + vals := map[string]LoadBalancerBackendAddressAdminState{ + "down": LoadBalancerBackendAddressAdminStateDown, + "none": LoadBalancerBackendAddressAdminStateNone, + "up": LoadBalancerBackendAddressAdminStateUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerBackendAddressAdminState(input) + return &out, nil +} + +type NatGatewaySkuName string + +const ( + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +func PossibleValuesForNatGatewaySkuName() []string { + return []string{ + string(NatGatewaySkuNameStandard), + } +} + +func (s *NatGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNatGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNatGatewaySkuName(input string) (*NatGatewaySkuName, error) { + vals := map[string]NatGatewaySkuName{ + "standard": NatGatewaySkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NatGatewaySkuName(input) + return &out, nil +} + +type NetworkInterfaceAuxiliaryMode string + +const ( + NetworkInterfaceAuxiliaryModeAcceleratedConnections NetworkInterfaceAuxiliaryMode = "AcceleratedConnections" + NetworkInterfaceAuxiliaryModeFloating NetworkInterfaceAuxiliaryMode = "Floating" + NetworkInterfaceAuxiliaryModeMaxConnections NetworkInterfaceAuxiliaryMode = "MaxConnections" + NetworkInterfaceAuxiliaryModeNone NetworkInterfaceAuxiliaryMode = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliaryMode() []string { + return []string{ + string(NetworkInterfaceAuxiliaryModeAcceleratedConnections), + string(NetworkInterfaceAuxiliaryModeFloating), + string(NetworkInterfaceAuxiliaryModeMaxConnections), + string(NetworkInterfaceAuxiliaryModeNone), + } +} + +func (s *NetworkInterfaceAuxiliaryMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliaryMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliaryMode(input string) (*NetworkInterfaceAuxiliaryMode, error) { + vals := map[string]NetworkInterfaceAuxiliaryMode{ + "acceleratedconnections": NetworkInterfaceAuxiliaryModeAcceleratedConnections, + "floating": NetworkInterfaceAuxiliaryModeFloating, + "maxconnections": NetworkInterfaceAuxiliaryModeMaxConnections, + "none": NetworkInterfaceAuxiliaryModeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliaryMode(input) + return &out, nil +} + +type NetworkInterfaceAuxiliarySku string + +const ( + NetworkInterfaceAuxiliarySkuAEight NetworkInterfaceAuxiliarySku = "A8" + NetworkInterfaceAuxiliarySkuAFour NetworkInterfaceAuxiliarySku = "A4" + NetworkInterfaceAuxiliarySkuAOne NetworkInterfaceAuxiliarySku = "A1" + NetworkInterfaceAuxiliarySkuATwo NetworkInterfaceAuxiliarySku = "A2" + NetworkInterfaceAuxiliarySkuNone NetworkInterfaceAuxiliarySku = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliarySku() []string { + return []string{ + string(NetworkInterfaceAuxiliarySkuAEight), + string(NetworkInterfaceAuxiliarySkuAFour), + string(NetworkInterfaceAuxiliarySkuAOne), + string(NetworkInterfaceAuxiliarySkuATwo), + string(NetworkInterfaceAuxiliarySkuNone), + } +} + +func (s *NetworkInterfaceAuxiliarySku) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliarySku(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliarySku(input string) (*NetworkInterfaceAuxiliarySku, error) { + vals := map[string]NetworkInterfaceAuxiliarySku{ + "a8": NetworkInterfaceAuxiliarySkuAEight, + "a4": NetworkInterfaceAuxiliarySkuAFour, + "a1": NetworkInterfaceAuxiliarySkuAOne, + "a2": NetworkInterfaceAuxiliarySkuATwo, + "none": NetworkInterfaceAuxiliarySkuNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliarySku(input) + return &out, nil +} + +type NetworkInterfaceMigrationPhase string + +const ( + NetworkInterfaceMigrationPhaseAbort NetworkInterfaceMigrationPhase = "Abort" + NetworkInterfaceMigrationPhaseCommit NetworkInterfaceMigrationPhase = "Commit" + NetworkInterfaceMigrationPhaseCommitted NetworkInterfaceMigrationPhase = "Committed" + NetworkInterfaceMigrationPhaseNone NetworkInterfaceMigrationPhase = "None" + NetworkInterfaceMigrationPhasePrepare NetworkInterfaceMigrationPhase = "Prepare" +) + +func PossibleValuesForNetworkInterfaceMigrationPhase() []string { + return []string{ + string(NetworkInterfaceMigrationPhaseAbort), + string(NetworkInterfaceMigrationPhaseCommit), + string(NetworkInterfaceMigrationPhaseCommitted), + string(NetworkInterfaceMigrationPhaseNone), + string(NetworkInterfaceMigrationPhasePrepare), + } +} + +func (s *NetworkInterfaceMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceMigrationPhase(input string) (*NetworkInterfaceMigrationPhase, error) { + vals := map[string]NetworkInterfaceMigrationPhase{ + "abort": NetworkInterfaceMigrationPhaseAbort, + "commit": NetworkInterfaceMigrationPhaseCommit, + "committed": NetworkInterfaceMigrationPhaseCommitted, + "none": NetworkInterfaceMigrationPhaseNone, + "prepare": NetworkInterfaceMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceMigrationPhase(input) + return &out, nil +} + +type NetworkInterfaceNicType string + +const ( + NetworkInterfaceNicTypeElastic NetworkInterfaceNicType = "Elastic" + NetworkInterfaceNicTypeStandard NetworkInterfaceNicType = "Standard" +) + +func PossibleValuesForNetworkInterfaceNicType() []string { + return []string{ + string(NetworkInterfaceNicTypeElastic), + string(NetworkInterfaceNicTypeStandard), + } +} + +func (s *NetworkInterfaceNicType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceNicType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceNicType(input string) (*NetworkInterfaceNicType, error) { + vals := map[string]NetworkInterfaceNicType{ + "elastic": NetworkInterfaceNicTypeElastic, + "standard": NetworkInterfaceNicTypeStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceNicType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type PublicIPAddressDnsSettingsDomainNameLabelScope string + +const ( + PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "NoReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "ResourceGroupReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "SubscriptionReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "TenantReuse" +) + +func PossibleValuesForPublicIPAddressDnsSettingsDomainNameLabelScope() []string { + return []string{ + string(PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse), + } +} + +func (s *PublicIPAddressDnsSettingsDomainNameLabelScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressDnsSettingsDomainNameLabelScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressDnsSettingsDomainNameLabelScope(input string) (*PublicIPAddressDnsSettingsDomainNameLabelScope, error) { + vals := map[string]PublicIPAddressDnsSettingsDomainNameLabelScope{ + "noreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse, + "resourcegroupreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse, + "subscriptionreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse, + "tenantreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressDnsSettingsDomainNameLabelScope(input) + return &out, nil +} + +type PublicIPAddressMigrationPhase string + +const ( + PublicIPAddressMigrationPhaseAbort PublicIPAddressMigrationPhase = "Abort" + PublicIPAddressMigrationPhaseCommit PublicIPAddressMigrationPhase = "Commit" + PublicIPAddressMigrationPhaseCommitted PublicIPAddressMigrationPhase = "Committed" + PublicIPAddressMigrationPhaseNone PublicIPAddressMigrationPhase = "None" + PublicIPAddressMigrationPhasePrepare PublicIPAddressMigrationPhase = "Prepare" +) + +func PossibleValuesForPublicIPAddressMigrationPhase() []string { + return []string{ + string(PublicIPAddressMigrationPhaseAbort), + string(PublicIPAddressMigrationPhaseCommit), + string(PublicIPAddressMigrationPhaseCommitted), + string(PublicIPAddressMigrationPhaseNone), + string(PublicIPAddressMigrationPhasePrepare), + } +} + +func (s *PublicIPAddressMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressMigrationPhase(input string) (*PublicIPAddressMigrationPhase, error) { + vals := map[string]PublicIPAddressMigrationPhase{ + "abort": PublicIPAddressMigrationPhaseAbort, + "commit": PublicIPAddressMigrationPhaseCommit, + "committed": PublicIPAddressMigrationPhaseCommitted, + "none": PublicIPAddressMigrationPhaseNone, + "prepare": PublicIPAddressMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressMigrationPhase(input) + return &out, nil +} + +type PublicIPAddressSkuName string + +const ( + PublicIPAddressSkuNameBasic PublicIPAddressSkuName = "Basic" + PublicIPAddressSkuNameStandard PublicIPAddressSkuName = "Standard" +) + +func PossibleValuesForPublicIPAddressSkuName() []string { + return []string{ + string(PublicIPAddressSkuNameBasic), + string(PublicIPAddressSkuNameStandard), + } +} + +func (s *PublicIPAddressSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuName(input string) (*PublicIPAddressSkuName, error) { + vals := map[string]PublicIPAddressSkuName{ + "basic": PublicIPAddressSkuNameBasic, + "standard": PublicIPAddressSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuName(input) + return &out, nil +} + +type PublicIPAddressSkuTier string + +const ( + PublicIPAddressSkuTierGlobal PublicIPAddressSkuTier = "Global" + PublicIPAddressSkuTierRegional PublicIPAddressSkuTier = "Regional" +) + +func PossibleValuesForPublicIPAddressSkuTier() []string { + return []string{ + string(PublicIPAddressSkuTierGlobal), + string(PublicIPAddressSkuTierRegional), + } +} + +func (s *PublicIPAddressSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuTier(input string) (*PublicIPAddressSkuTier, error) { + vals := map[string]PublicIPAddressSkuTier{ + "global": PublicIPAddressSkuTierGlobal, + "regional": PublicIPAddressSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuTier(input) + return &out, nil +} + +type RouteNextHopType string + +const ( + RouteNextHopTypeInternet RouteNextHopType = "Internet" + RouteNextHopTypeNone RouteNextHopType = "None" + RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" + RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" + RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" +) + +func PossibleValuesForRouteNextHopType() []string { + return []string{ + string(RouteNextHopTypeInternet), + string(RouteNextHopTypeNone), + string(RouteNextHopTypeVirtualAppliance), + string(RouteNextHopTypeVirtualNetworkGateway), + string(RouteNextHopTypeVnetLocal), + } +} + +func (s *RouteNextHopType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteNextHopType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteNextHopType(input string) (*RouteNextHopType, error) { + vals := map[string]RouteNextHopType{ + "internet": RouteNextHopTypeInternet, + "none": RouteNextHopTypeNone, + "virtualappliance": RouteNextHopTypeVirtualAppliance, + "virtualnetworkgateway": RouteNextHopTypeVirtualNetworkGateway, + "vnetlocal": RouteNextHopTypeVnetLocal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteNextHopType(input) + return &out, nil +} + +type SecurityRuleAccess string + +const ( + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +func PossibleValuesForSecurityRuleAccess() []string { + return []string{ + string(SecurityRuleAccessAllow), + string(SecurityRuleAccessDeny), + } +} + +func (s *SecurityRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleAccess(input string) (*SecurityRuleAccess, error) { + vals := map[string]SecurityRuleAccess{ + "allow": SecurityRuleAccessAllow, + "deny": SecurityRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleAccess(input) + return &out, nil +} + +type SecurityRuleDirection string + +const ( + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityRuleDirection() []string { + return []string{ + string(SecurityRuleDirectionInbound), + string(SecurityRuleDirectionOutbound), + } +} + +func (s *SecurityRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleDirection(input string) (*SecurityRuleDirection, error) { + vals := map[string]SecurityRuleDirection{ + "inbound": SecurityRuleDirectionInbound, + "outbound": SecurityRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleDirection(input) + return &out, nil +} + +type SecurityRuleProtocol string + +const ( + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + SecurityRuleProtocolAny SecurityRuleProtocol = "*" + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + SecurityRuleProtocolTcp SecurityRuleProtocol = "Tcp" + SecurityRuleProtocolUdp SecurityRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityRuleProtocol() []string { + return []string{ + string(SecurityRuleProtocolAh), + string(SecurityRuleProtocolAny), + string(SecurityRuleProtocolEsp), + string(SecurityRuleProtocolIcmp), + string(SecurityRuleProtocolTcp), + string(SecurityRuleProtocolUdp), + } +} + +func (s *SecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleProtocol(input string) (*SecurityRuleProtocol, error) { + vals := map[string]SecurityRuleProtocol{ + "ah": SecurityRuleProtocolAh, + "*": SecurityRuleProtocolAny, + "esp": SecurityRuleProtocolEsp, + "icmp": SecurityRuleProtocolIcmp, + "tcp": SecurityRuleProtocolTcp, + "udp": SecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleProtocol(input) + return &out, nil +} + +type SharingScope string + +const ( + SharingScopeDelegatedServices SharingScope = "DelegatedServices" + SharingScopeTenant SharingScope = "Tenant" +) + +func PossibleValuesForSharingScope() []string { + return []string{ + string(SharingScopeDelegatedServices), + string(SharingScopeTenant), + } +} + +func (s *SharingScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSharingScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSharingScope(input string) (*SharingScope, error) { + vals := map[string]SharingScope{ + "delegatedservices": SharingScopeDelegatedServices, + "tenant": SharingScopeTenant, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SharingScope(input) + return &out, nil +} + +type SyncMode string + +const ( + SyncModeAutomatic SyncMode = "Automatic" + SyncModeManual SyncMode = "Manual" +) + +func PossibleValuesForSyncMode() []string { + return []string{ + string(SyncModeAutomatic), + string(SyncModeManual), + } +} + +func (s *SyncMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSyncMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSyncMode(input string) (*SyncMode, error) { + vals := map[string]SyncMode{ + "automatic": SyncModeAutomatic, + "manual": SyncModeManual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SyncMode(input) + return &out, nil +} + +type TransportProtocol string + +const ( + TransportProtocolAll TransportProtocol = "All" + TransportProtocolTcp TransportProtocol = "Tcp" + TransportProtocolUdp TransportProtocol = "Udp" +) + +func PossibleValuesForTransportProtocol() []string { + return []string{ + string(TransportProtocolAll), + string(TransportProtocolTcp), + string(TransportProtocolUdp), + } +} + +func (s *TransportProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseTransportProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseTransportProtocol(input string) (*TransportProtocol, error) { + vals := map[string]TransportProtocol{ + "all": TransportProtocolAll, + "tcp": TransportProtocolTcp, + "udp": TransportProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := TransportProtocol(input) + return &out, nil +} + +type VirtualNetworkPrivateEndpointNetworkPolicies string + +const ( + VirtualNetworkPrivateEndpointNetworkPoliciesDisabled VirtualNetworkPrivateEndpointNetworkPolicies = "Disabled" + VirtualNetworkPrivateEndpointNetworkPoliciesEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "Enabled" + VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "NetworkSecurityGroupEnabled" + VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "RouteTableEnabled" +) + +func PossibleValuesForVirtualNetworkPrivateEndpointNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateEndpointNetworkPoliciesDisabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled), + } +} + +func (s *VirtualNetworkPrivateEndpointNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateEndpointNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateEndpointNetworkPolicies(input string) (*VirtualNetworkPrivateEndpointNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateEndpointNetworkPolicies{ + "disabled": VirtualNetworkPrivateEndpointNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateEndpointNetworkPoliciesEnabled, + "networksecuritygroupenabled": VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled, + "routetableenabled": VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateEndpointNetworkPolicies(input) + return &out, nil +} + +type VirtualNetworkPrivateLinkServiceNetworkPolicies string + +const ( + VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Disabled" + VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Enabled" +) + +func PossibleValuesForVirtualNetworkPrivateLinkServiceNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled), + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled), + } +} + +func (s *VirtualNetworkPrivateLinkServiceNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateLinkServiceNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateLinkServiceNetworkPolicies(input string) (*VirtualNetworkPrivateLinkServiceNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateLinkServiceNetworkPolicies{ + "disabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateLinkServiceNetworkPolicies(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/id_location.go b/resource-manager/network/2024-01-01/privateendpoints/id_location.go new file mode 100644 index 00000000000..54b43b4b1f2 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/id_location.go @@ -0,0 +1,121 @@ +package privateendpoints + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&LocationId{}) +} + +var _ resourceids.ResourceId = &LocationId{} + +// LocationId is a struct representing the Resource ID for a Location +type LocationId struct { + SubscriptionId string + LocationName string +} + +// NewLocationID returns a new LocationId struct +func NewLocationID(subscriptionId string, locationName string) LocationId { + return LocationId{ + SubscriptionId: subscriptionId, + LocationName: locationName, + } +} + +// ParseLocationID parses 'input' into a LocationId +func ParseLocationID(input string) (*LocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&LocationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseLocationIDInsensitively parses 'input' case-insensitively into a LocationId +// note: this method should only be used for API response data and not user input +func ParseLocationIDInsensitively(input string) (*LocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&LocationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *LocationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.LocationName, ok = input.Parsed["locationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "locationName", input) + } + + return nil +} + +// ValidateLocationID checks that 'input' can be parsed as a Location ID +func ValidateLocationID(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 := ParseLocationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Location ID +func (id LocationId) ID() string { + fmtString := "/subscriptions/%s/providers/Microsoft.Network/locations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.LocationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Location ID +func (id LocationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLocations", "locations", "locations"), + resourceids.UserSpecifiedSegment("locationName", "locationValue"), + } +} + +// String returns a human-readable description of this Location ID +func (id LocationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Location Name: %q", id.LocationName), + } + return fmt.Sprintf("Location (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/id_location_test.go b/resource-manager/network/2024-01-01/privateendpoints/id_location_test.go new file mode 100644 index 00000000000..b9fa098002a --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/id_location_test.go @@ -0,0 +1,237 @@ +package privateendpoints + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &LocationId{} + +func TestNewLocationID(t *testing.T) { + id := NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.LocationName != "locationValue" { + t.Fatalf("Expected %q but got %q for Segment 'LocationName'", id.LocationName, "locationValue") + } +} + +func TestFormatLocationID(t *testing.T) { + actual := NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseLocationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLocationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestParseLocationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "lOcAtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLocationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestSegmentsForLocationId(t *testing.T) { + segments := LocationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("LocationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/id_privateendpoint.go b/resource-manager/network/2024-01-01/privateendpoints/id_privateendpoint.go new file mode 100644 index 00000000000..a104325012e --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/id_privateendpoint.go @@ -0,0 +1,130 @@ +package privateendpoints + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&PrivateEndpointId{}) +} + +var _ resourceids.ResourceId = &PrivateEndpointId{} + +// PrivateEndpointId is a struct representing the Resource ID for a Private Endpoint +type PrivateEndpointId struct { + SubscriptionId string + ResourceGroupName string + PrivateEndpointName string +} + +// NewPrivateEndpointID returns a new PrivateEndpointId struct +func NewPrivateEndpointID(subscriptionId string, resourceGroupName string, privateEndpointName string) PrivateEndpointId { + return PrivateEndpointId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + PrivateEndpointName: privateEndpointName, + } +} + +// ParsePrivateEndpointID parses 'input' into a PrivateEndpointId +func ParsePrivateEndpointID(input string) (*PrivateEndpointId, error) { + parser := resourceids.NewParserFromResourceIdType(&PrivateEndpointId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PrivateEndpointId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParsePrivateEndpointIDInsensitively parses 'input' case-insensitively into a PrivateEndpointId +// note: this method should only be used for API response data and not user input +func ParsePrivateEndpointIDInsensitively(input string) (*PrivateEndpointId, error) { + parser := resourceids.NewParserFromResourceIdType(&PrivateEndpointId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PrivateEndpointId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *PrivateEndpointId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.PrivateEndpointName, ok = input.Parsed["privateEndpointName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "privateEndpointName", input) + } + + return nil +} + +// ValidatePrivateEndpointID checks that 'input' can be parsed as a Private Endpoint ID +func ValidatePrivateEndpointID(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 := ParsePrivateEndpointID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Private Endpoint ID +func (id PrivateEndpointId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/privateEndpoints/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.PrivateEndpointName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Private Endpoint ID +func (id PrivateEndpointId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticPrivateEndpoints", "privateEndpoints", "privateEndpoints"), + resourceids.UserSpecifiedSegment("privateEndpointName", "privateEndpointValue"), + } +} + +// String returns a human-readable description of this Private Endpoint ID +func (id PrivateEndpointId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Private Endpoint Name: %q", id.PrivateEndpointName), + } + return fmt.Sprintf("Private Endpoint (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/id_privateendpoint_test.go b/resource-manager/network/2024-01-01/privateendpoints/id_privateendpoint_test.go new file mode 100644 index 00000000000..8a94615f8fc --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/id_privateendpoint_test.go @@ -0,0 +1,282 @@ +package privateendpoints + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &PrivateEndpointId{} + +func TestNewPrivateEndpointID(t *testing.T) { + id := NewPrivateEndpointID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateEndpointValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.PrivateEndpointName != "privateEndpointValue" { + t.Fatalf("Expected %q but got %q for Segment 'PrivateEndpointName'", id.PrivateEndpointName, "privateEndpointValue") + } +} + +func TestFormatPrivateEndpointID(t *testing.T) { + actual := NewPrivateEndpointID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateEndpointValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints/privateEndpointValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParsePrivateEndpointID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PrivateEndpointId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints/privateEndpointValue", + Expected: &PrivateEndpointId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + PrivateEndpointName: "privateEndpointValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints/privateEndpointValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePrivateEndpointID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.PrivateEndpointName != v.Expected.PrivateEndpointName { + t.Fatalf("Expected %q but got %q for PrivateEndpointName", v.Expected.PrivateEndpointName, actual.PrivateEndpointName) + } + + } +} + +func TestParsePrivateEndpointIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PrivateEndpointId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/pRiVaTeEnDpOiNtS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints/privateEndpointValue", + Expected: &PrivateEndpointId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + PrivateEndpointName: "privateEndpointValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateEndpoints/privateEndpointValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/pRiVaTeEnDpOiNtS/pRiVaTeEnDpOiNtVaLuE", + Expected: &PrivateEndpointId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + PrivateEndpointName: "pRiVaTeEnDpOiNtVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/pRiVaTeEnDpOiNtS/pRiVaTeEnDpOiNtVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePrivateEndpointIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.PrivateEndpointName != v.Expected.PrivateEndpointName { + t.Fatalf("Expected %q but got %q for PrivateEndpointName", v.Expected.PrivateEndpointName, actual.PrivateEndpointName) + } + + } +} + +func TestSegmentsForPrivateEndpointId(t *testing.T) { + segments := PrivateEndpointId{}.Segments() + if len(segments) == 0 { + t.Fatalf("PrivateEndpointId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/id_providerlocation.go b/resource-manager/network/2024-01-01/privateendpoints/id_providerlocation.go new file mode 100644 index 00000000000..a70739b937d --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/id_providerlocation.go @@ -0,0 +1,130 @@ +package privateendpoints + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ProviderLocationId{}) +} + +var _ resourceids.ResourceId = &ProviderLocationId{} + +// ProviderLocationId is a struct representing the Resource ID for a Provider Location +type ProviderLocationId struct { + SubscriptionId string + ResourceGroupName string + LocationName string +} + +// NewProviderLocationID returns a new ProviderLocationId struct +func NewProviderLocationID(subscriptionId string, resourceGroupName string, locationName string) ProviderLocationId { + return ProviderLocationId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + LocationName: locationName, + } +} + +// ParseProviderLocationID parses 'input' into a ProviderLocationId +func ParseProviderLocationID(input string) (*ProviderLocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&ProviderLocationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ProviderLocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseProviderLocationIDInsensitively parses 'input' case-insensitively into a ProviderLocationId +// note: this method should only be used for API response data and not user input +func ParseProviderLocationIDInsensitively(input string) (*ProviderLocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&ProviderLocationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ProviderLocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ProviderLocationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.LocationName, ok = input.Parsed["locationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "locationName", input) + } + + return nil +} + +// ValidateProviderLocationID checks that 'input' can be parsed as a Provider Location ID +func ValidateProviderLocationID(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 := ParseProviderLocationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Provider Location ID +func (id ProviderLocationId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/locations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.LocationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Provider Location ID +func (id ProviderLocationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLocations", "locations", "locations"), + resourceids.UserSpecifiedSegment("locationName", "locationValue"), + } +} + +// String returns a human-readable description of this Provider Location ID +func (id ProviderLocationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Location Name: %q", id.LocationName), + } + return fmt.Sprintf("Provider Location (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/id_providerlocation_test.go b/resource-manager/network/2024-01-01/privateendpoints/id_providerlocation_test.go new file mode 100644 index 00000000000..8fbe88bd140 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/id_providerlocation_test.go @@ -0,0 +1,282 @@ +package privateendpoints + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ProviderLocationId{} + +func TestNewProviderLocationID(t *testing.T) { + id := NewProviderLocationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "locationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.LocationName != "locationValue" { + t.Fatalf("Expected %q but got %q for Segment 'LocationName'", id.LocationName, "locationValue") + } +} + +func TestFormatProviderLocationID(t *testing.T) { + actual := NewProviderLocationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "locationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations/locationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseProviderLocationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ProviderLocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations/locationValue", + Expected: &ProviderLocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseProviderLocationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestParseProviderLocationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ProviderLocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations/locationValue", + Expected: &ProviderLocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe", + Expected: &ProviderLocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + LocationName: "lOcAtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseProviderLocationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestSegmentsForProviderLocationId(t *testing.T) { + segments := ProviderLocationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ProviderLocationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/method_availableprivateendpointtypeslist.go b/resource-manager/network/2024-01-01/privateendpoints/method_availableprivateendpointtypeslist.go new file mode 100644 index 00000000000..903cb43bbd7 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/method_availableprivateendpointtypeslist.go @@ -0,0 +1,92 @@ +package privateendpoints + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AvailablePrivateEndpointTypesListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]AvailablePrivateEndpointType +} + +type AvailablePrivateEndpointTypesListCompleteResult struct { + LatestHttpResponse *http.Response + Items []AvailablePrivateEndpointType +} + +// AvailablePrivateEndpointTypesList ... +func (c PrivateEndpointsClient) AvailablePrivateEndpointTypesList(ctx context.Context, id LocationId) (result AvailablePrivateEndpointTypesListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/availablePrivateEndpointTypes", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]AvailablePrivateEndpointType `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// AvailablePrivateEndpointTypesListComplete retrieves all the results into a single object +func (c PrivateEndpointsClient) AvailablePrivateEndpointTypesListComplete(ctx context.Context, id LocationId) (AvailablePrivateEndpointTypesListCompleteResult, error) { + return c.AvailablePrivateEndpointTypesListCompleteMatchingPredicate(ctx, id, AvailablePrivateEndpointTypeOperationPredicate{}) +} + +// AvailablePrivateEndpointTypesListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c PrivateEndpointsClient) AvailablePrivateEndpointTypesListCompleteMatchingPredicate(ctx context.Context, id LocationId, predicate AvailablePrivateEndpointTypeOperationPredicate) (result AvailablePrivateEndpointTypesListCompleteResult, err error) { + items := make([]AvailablePrivateEndpointType, 0) + + resp, err := c.AvailablePrivateEndpointTypesList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = AvailablePrivateEndpointTypesListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/method_availableprivateendpointtypeslistbyresourcegroup.go b/resource-manager/network/2024-01-01/privateendpoints/method_availableprivateendpointtypeslistbyresourcegroup.go new file mode 100644 index 00000000000..2b24f418d5d --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/method_availableprivateendpointtypeslistbyresourcegroup.go @@ -0,0 +1,92 @@ +package privateendpoints + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AvailablePrivateEndpointTypesListByResourceGroupOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]AvailablePrivateEndpointType +} + +type AvailablePrivateEndpointTypesListByResourceGroupCompleteResult struct { + LatestHttpResponse *http.Response + Items []AvailablePrivateEndpointType +} + +// AvailablePrivateEndpointTypesListByResourceGroup ... +func (c PrivateEndpointsClient) AvailablePrivateEndpointTypesListByResourceGroup(ctx context.Context, id ProviderLocationId) (result AvailablePrivateEndpointTypesListByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/availablePrivateEndpointTypes", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]AvailablePrivateEndpointType `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// AvailablePrivateEndpointTypesListByResourceGroupComplete retrieves all the results into a single object +func (c PrivateEndpointsClient) AvailablePrivateEndpointTypesListByResourceGroupComplete(ctx context.Context, id ProviderLocationId) (AvailablePrivateEndpointTypesListByResourceGroupCompleteResult, error) { + return c.AvailablePrivateEndpointTypesListByResourceGroupCompleteMatchingPredicate(ctx, id, AvailablePrivateEndpointTypeOperationPredicate{}) +} + +// AvailablePrivateEndpointTypesListByResourceGroupCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c PrivateEndpointsClient) AvailablePrivateEndpointTypesListByResourceGroupCompleteMatchingPredicate(ctx context.Context, id ProviderLocationId, predicate AvailablePrivateEndpointTypeOperationPredicate) (result AvailablePrivateEndpointTypesListByResourceGroupCompleteResult, err error) { + items := make([]AvailablePrivateEndpointType, 0) + + resp, err := c.AvailablePrivateEndpointTypesListByResourceGroup(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = AvailablePrivateEndpointTypesListByResourceGroupCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/method_createorupdate.go b/resource-manager/network/2024-01-01/privateendpoints/method_createorupdate.go new file mode 100644 index 00000000000..b5055a0cda4 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/method_createorupdate.go @@ -0,0 +1,75 @@ +package privateendpoints + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *PrivateEndpoint +} + +// CreateOrUpdate ... +func (c PrivateEndpointsClient) CreateOrUpdate(ctx context.Context, id PrivateEndpointId, input PrivateEndpoint) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c PrivateEndpointsClient) CreateOrUpdateThenPoll(ctx context.Context, id PrivateEndpointId, input PrivateEndpoint) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/method_delete.go b/resource-manager/network/2024-01-01/privateendpoints/method_delete.go new file mode 100644 index 00000000000..70f382bf8e3 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/method_delete.go @@ -0,0 +1,71 @@ +package privateendpoints + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c PrivateEndpointsClient) Delete(ctx context.Context, id PrivateEndpointId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c PrivateEndpointsClient) DeleteThenPoll(ctx context.Context, id PrivateEndpointId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/method_get.go b/resource-manager/network/2024-01-01/privateendpoints/method_get.go new file mode 100644 index 00000000000..5f913d65fd2 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/method_get.go @@ -0,0 +1,83 @@ +package privateendpoints + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *PrivateEndpoint +} + +type GetOperationOptions struct { + Expand *string +} + +func DefaultGetOperationOptions() GetOperationOptions { + return GetOperationOptions{} +} + +func (o GetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// Get ... +func (c PrivateEndpointsClient) Get(ctx context.Context, id PrivateEndpointId, options GetOperationOptions) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model PrivateEndpoint + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/method_list.go b/resource-manager/network/2024-01-01/privateendpoints/method_list.go new file mode 100644 index 00000000000..7d43eeb38d8 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/method_list.go @@ -0,0 +1,93 @@ +package privateendpoints + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]PrivateEndpoint +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []PrivateEndpoint +} + +// List ... +func (c PrivateEndpointsClient) List(ctx context.Context, id commonids.ResourceGroupId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/privateEndpoints", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]PrivateEndpoint `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c PrivateEndpointsClient) ListComplete(ctx context.Context, id commonids.ResourceGroupId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, PrivateEndpointOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c PrivateEndpointsClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate PrivateEndpointOperationPredicate) (result ListCompleteResult, err error) { + items := make([]PrivateEndpoint, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/method_listbysubscription.go b/resource-manager/network/2024-01-01/privateendpoints/method_listbysubscription.go new file mode 100644 index 00000000000..229bfbb93bf --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/method_listbysubscription.go @@ -0,0 +1,93 @@ +package privateendpoints + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListBySubscriptionOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]PrivateEndpoint +} + +type ListBySubscriptionCompleteResult struct { + LatestHttpResponse *http.Response + Items []PrivateEndpoint +} + +// ListBySubscription ... +func (c PrivateEndpointsClient) ListBySubscription(ctx context.Context, id commonids.SubscriptionId) (result ListBySubscriptionOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/privateEndpoints", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]PrivateEndpoint `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListBySubscriptionComplete retrieves all the results into a single object +func (c PrivateEndpointsClient) ListBySubscriptionComplete(ctx context.Context, id commonids.SubscriptionId) (ListBySubscriptionCompleteResult, error) { + return c.ListBySubscriptionCompleteMatchingPredicate(ctx, id, PrivateEndpointOperationPredicate{}) +} + +// ListBySubscriptionCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c PrivateEndpointsClient) ListBySubscriptionCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate PrivateEndpointOperationPredicate) (result ListBySubscriptionCompleteResult, err error) { + items := make([]PrivateEndpoint, 0) + + resp, err := c.ListBySubscription(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListBySubscriptionCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_applicationgatewaybackendaddress.go b/resource-manager/network/2024-01-01/privateendpoints/model_applicationgatewaybackendaddress.go new file mode 100644 index 00000000000..b8767a924d3 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_applicationgatewaybackendaddress.go @@ -0,0 +1,9 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddress struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_applicationgatewaybackendaddresspool.go b/resource-manager/network/2024-01-01/privateendpoints/model_applicationgatewaybackendaddresspool.go new file mode 100644 index 00000000000..faea7af9635 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_applicationgatewaybackendaddresspool.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_applicationgatewaybackendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_applicationgatewaybackendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..bc45532ef99 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_applicationgatewaybackendaddresspoolpropertiesformat.go @@ -0,0 +1,10 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPoolPropertiesFormat struct { + BackendAddresses *[]ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"` + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_applicationgatewayipconfiguration.go b/resource-manager/network/2024-01-01/privateendpoints/model_applicationgatewayipconfiguration.go new file mode 100644 index 00000000000..d7b619385a0 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_applicationgatewayipconfiguration.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_applicationgatewayipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_applicationgatewayipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..0975b3a3c18 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_applicationgatewayipconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/privateendpoints/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..b514ce65a10 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..c505be8adad --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_availableprivateendpointtype.go b/resource-manager/network/2024-01-01/privateendpoints/model_availableprivateendpointtype.go new file mode 100644 index 00000000000..c6aa8839dc1 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_availableprivateendpointtype.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AvailablePrivateEndpointType struct { + DisplayName *string `json:"displayName,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + ResourceName *string `json:"resourceName,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_backendaddresspool.go b/resource-manager/network/2024-01-01/privateendpoints/model_backendaddresspool.go new file mode 100644 index 00000000000..afaee89cd0a --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_backendaddresspool.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_backendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_backendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..7079b861291 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_backendaddresspoolpropertiesformat.go @@ -0,0 +1,19 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPoolPropertiesFormat struct { + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + DrainPeriodInSeconds *int64 `json:"drainPeriodInSeconds,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancerBackendAddresses *[]LoadBalancerBackendAddress `json:"loadBalancerBackendAddresses,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + Location *string `json:"location,omitempty"` + OutboundRule *SubResource `json:"outboundRule,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SyncMode *SyncMode `json:"syncMode,omitempty"` + TunnelInterfaces *[]GatewayLoadBalancerTunnelInterface `json:"tunnelInterfaces,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_customdnsconfigpropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_customdnsconfigpropertiesformat.go new file mode 100644 index 00000000000..a078479b1cf --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_customdnsconfigpropertiesformat.go @@ -0,0 +1,9 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomDnsConfigPropertiesFormat struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_ddossettings.go b/resource-manager/network/2024-01-01/privateendpoints/model_ddossettings.go new file mode 100644 index 00000000000..6253ff1e5a4 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_ddossettings.go @@ -0,0 +1,9 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettings struct { + DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"` + ProtectionMode *DdosSettingsProtectionMode `json:"protectionMode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_delegation.go b/resource-manager/network/2024-01-01/privateendpoints/model_delegation.go new file mode 100644 index 00000000000..fd6104e1e68 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_delegation.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Delegation struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceDelegationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_flowlog.go b/resource-manager/network/2024-01-01/privateendpoints/model_flowlog.go new file mode 100644 index 00000000000..6e5b89e5f2c --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_flowlog.go @@ -0,0 +1,19 @@ +package privateendpoints + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLog struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FlowLogPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/privateendpoints/model_flowlogformatparameters.go new file mode 100644 index 00000000000..a15c48049c6 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_flowlogpropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_flowlogpropertiesformat.go new file mode 100644 index 00000000000..6f45378b9d1 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_flowlogpropertiesformat.go @@ -0,0 +1,15 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogPropertiesFormat struct { + Enabled *bool `json:"enabled,omitempty"` + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` + TargetResourceGuid *string `json:"targetResourceGuid,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_frontendipconfiguration.go b/resource-manager/network/2024-01-01/privateendpoints/model_frontendipconfiguration.go new file mode 100644 index 00000000000..3dcb8560fec --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_frontendipconfiguration.go @@ -0,0 +1,17 @@ +package privateendpoints + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_frontendipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_frontendipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..8980fc3756f --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_frontendipconfigurationpropertiesformat.go @@ -0,0 +1,19 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfigurationPropertiesFormat struct { + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + InboundNatPools *[]SubResource `json:"inboundNatPools,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_gatewayloadbalancertunnelinterface.go b/resource-manager/network/2024-01-01/privateendpoints/model_gatewayloadbalancertunnelinterface.go new file mode 100644 index 00000000000..dde47c23fb2 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_gatewayloadbalancertunnelinterface.go @@ -0,0 +1,11 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayLoadBalancerTunnelInterface struct { + Identifier *int64 `json:"identifier,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *GatewayLoadBalancerTunnelProtocol `json:"protocol,omitempty"` + Type *GatewayLoadBalancerTunnelInterfaceType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_inboundnatrule.go b/resource-manager/network/2024-01-01/privateendpoints/model_inboundnatrule.go new file mode 100644 index 00000000000..38c0ffd6728 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_inboundnatrule.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundNatRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_inboundnatrulepropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_inboundnatrulepropertiesformat.go new file mode 100644 index 00000000000..b952302ddeb --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_inboundnatrulepropertiesformat.go @@ -0,0 +1,19 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendIPConfiguration *NetworkInterfaceIPConfiguration `json:"backendIPConfiguration,omitempty"` + BackendPort *int64 `json:"backendPort,omitempty"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + FrontendPortRangeEnd *int64 `json:"frontendPortRangeEnd,omitempty"` + FrontendPortRangeStart *int64 `json:"frontendPortRangeStart,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol *TransportProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_ipconfiguration.go b/resource-manager/network/2024-01-01/privateendpoints/model_ipconfiguration.go new file mode 100644 index 00000000000..cf18ee9415b --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_ipconfiguration.go @@ -0,0 +1,11 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_ipconfigurationprofile.go b/resource-manager/network/2024-01-01/privateendpoints/model_ipconfigurationprofile.go new file mode 100644 index 00000000000..d493529c992 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_ipconfigurationprofile.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationProfilePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_ipconfigurationprofilepropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_ipconfigurationprofilepropertiesformat.go new file mode 100644 index 00000000000..dabdbd7c841 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_ipconfigurationprofilepropertiesformat.go @@ -0,0 +1,9 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfilePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_ipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_ipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..fdfdcd1d175 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_ipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_iptag.go b/resource-manager/network/2024-01-01/privateendpoints/model_iptag.go new file mode 100644 index 00000000000..83206500edc --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_iptag.go @@ -0,0 +1,9 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPTag struct { + IPTagType *string `json:"ipTagType,omitempty"` + Tag *string `json:"tag,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_loadbalancerbackendaddress.go b/resource-manager/network/2024-01-01/privateendpoints/model_loadbalancerbackendaddress.go new file mode 100644 index 00000000000..ee77fec93c3 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_loadbalancerbackendaddress.go @@ -0,0 +1,9 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddress struct { + Name *string `json:"name,omitempty"` + Properties *LoadBalancerBackendAddressPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_loadbalancerbackendaddresspropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_loadbalancerbackendaddresspropertiesformat.go new file mode 100644 index 00000000000..9be73b64841 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_loadbalancerbackendaddresspropertiesformat.go @@ -0,0 +1,14 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPropertiesFormat struct { + AdminState *LoadBalancerBackendAddressAdminState `json:"adminState,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + InboundNatRulesPortMapping *[]NatRulePortMapping `json:"inboundNatRulesPortMapping,omitempty"` + LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIPConfiguration,omitempty"` + NetworkInterfaceIPConfiguration *SubResource `json:"networkInterfaceIPConfiguration,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_natgateway.go b/resource-manager/network/2024-01-01/privateendpoints/model_natgateway.go new file mode 100644 index 00000000000..e197bcd7ada --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_natgateway.go @@ -0,0 +1,20 @@ +package privateendpoints + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"` + Sku *NatGatewaySku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_natgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_natgatewaypropertiesformat.go new file mode 100644 index 00000000000..fc0ee1ef6da --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_natgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayPropertiesFormat struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]SubResource `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_natgatewaysku.go b/resource-manager/network/2024-01-01/privateendpoints/model_natgatewaysku.go new file mode 100644 index 00000000000..c0b2d583e49 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_natgatewaysku.go @@ -0,0 +1,8 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySku struct { + Name *NatGatewaySkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_natruleportmapping.go b/resource-manager/network/2024-01-01/privateendpoints/model_natruleportmapping.go new file mode 100644 index 00000000000..07eeaf979f4 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_natruleportmapping.go @@ -0,0 +1,10 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulePortMapping struct { + BackendPort *int64 `json:"backendPort,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + InboundNatRuleName *string `json:"inboundNatRuleName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_networkinterface.go b/resource-manager/network/2024-01-01/privateendpoints/model_networkinterface.go new file mode 100644 index 00000000000..9e9c7fcfa82 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_networkinterface.go @@ -0,0 +1,19 @@ +package privateendpoints + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterface struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfacePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_networkinterfacednssettings.go b/resource-manager/network/2024-01-01/privateendpoints/model_networkinterfacednssettings.go new file mode 100644 index 00000000000..5182d846bf1 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_networkinterfacednssettings.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceDnsSettings struct { + AppliedDnsServers *[]string `json:"appliedDnsServers,omitempty"` + DnsServers *[]string `json:"dnsServers,omitempty"` + InternalDnsNameLabel *string `json:"internalDnsNameLabel,omitempty"` + InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty"` + InternalFqdn *string `json:"internalFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_networkinterfaceipconfiguration.go b/resource-manager/network/2024-01-01/privateendpoints/model_networkinterfaceipconfiguration.go new file mode 100644 index 00000000000..e41eb348a7b --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_networkinterfaceipconfiguration.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go b/resource-manager/network/2024-01-01/privateendpoints/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go new file mode 100644 index 00000000000..ac6a234dd34 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go @@ -0,0 +1,10 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties struct { + Fqdns *[]string `json:"fqdns,omitempty"` + GroupId *string `json:"groupId,omitempty"` + RequiredMemberName *string `json:"requiredMemberName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_networkinterfaceipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_networkinterfaceipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..49402e36c83 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_networkinterfaceipconfigurationpropertiesformat.go @@ -0,0 +1,22 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPropertiesFormat struct { + ApplicationGatewayBackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"applicationGatewayBackendAddressPools,omitempty"` + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + LoadBalancerBackendAddressPools *[]BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"` + LoadBalancerInboundNatRules *[]InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressPrefixLength *int64 `json:"privateIPAddressPrefixLength,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + PrivateLinkConnectionProperties *NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties `json:"privateLinkConnectionProperties,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` + VirtualNetworkTaps *[]VirtualNetworkTap `json:"virtualNetworkTaps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_networkinterfacepropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_networkinterfacepropertiesformat.go new file mode 100644 index 00000000000..a5fd36f9266 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_networkinterfacepropertiesformat.go @@ -0,0 +1,29 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfacePropertiesFormat struct { + AuxiliaryMode *NetworkInterfaceAuxiliaryMode `json:"auxiliaryMode,omitempty"` + AuxiliarySku *NetworkInterfaceAuxiliarySku `json:"auxiliarySku,omitempty"` + DisableTcpStateTracking *bool `json:"disableTcpStateTracking,omitempty"` + DnsSettings *NetworkInterfaceDnsSettings `json:"dnsSettings,omitempty"` + DscpConfiguration *SubResource `json:"dscpConfiguration,omitempty"` + EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"` + EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"` + HostedWorkloads *[]string `json:"hostedWorkloads,omitempty"` + IPConfigurations *[]NetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + MacAddress *string `json:"macAddress,omitempty"` + MigrationPhase *NetworkInterfaceMigrationPhase `json:"migrationPhase,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + NicType *NetworkInterfaceNicType `json:"nicType,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkService *PrivateLinkService `json:"privateLinkService,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + TapConfigurations *[]NetworkInterfaceTapConfiguration `json:"tapConfigurations,omitempty"` + VirtualMachine *SubResource `json:"virtualMachine,omitempty"` + VnetEncryptionSupported *bool `json:"vnetEncryptionSupported,omitempty"` + WorkloadType *string `json:"workloadType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_networkinterfacetapconfiguration.go b/resource-manager/network/2024-01-01/privateendpoints/model_networkinterfacetapconfiguration.go new file mode 100644 index 00000000000..ebe35c0a178 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_networkinterfacetapconfiguration.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceTapConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_networkinterfacetapconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_networkinterfacetapconfigurationpropertiesformat.go new file mode 100644 index 00000000000..54e437f339f --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_networkinterfacetapconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualNetworkTap *VirtualNetworkTap `json:"virtualNetworkTap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_networksecuritygroup.go b/resource-manager/network/2024-01-01/privateendpoints/model_networksecuritygroup.go new file mode 100644 index 00000000000..cb420b60990 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_networksecuritygroup.go @@ -0,0 +1,14 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_networksecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_networksecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..b03a951faff --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_networksecuritygrouppropertiesformat.go @@ -0,0 +1,15 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupPropertiesFormat struct { + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + FlowLogs *[]FlowLog `json:"flowLogs,omitempty"` + FlushConnection *bool `json:"flushConnection,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_privateendpoint.go b/resource-manager/network/2024-01-01/privateendpoints/model_privateendpoint.go new file mode 100644 index 00000000000..5e9da21fedb --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_privateendpoint.go @@ -0,0 +1,19 @@ +package privateendpoints + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpoint struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_privateendpointconnection.go b/resource-manager/network/2024-01-01/privateendpoints/model_privateendpointconnection.go new file mode 100644 index 00000000000..5bd8301f4f3 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_privateendpointconnection.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_privateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/privateendpoints/model_privateendpointconnectionproperties.go new file mode 100644 index 00000000000..8c0662fe4e2 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_privateendpointconnectionproperties.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateEndpointLocation *string `json:"privateEndpointLocation,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_privateendpointipconfiguration.go b/resource-manager/network/2024-01-01/privateendpoints/model_privateendpointipconfiguration.go new file mode 100644 index 00000000000..1fbe08553f6 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_privateendpointipconfiguration.go @@ -0,0 +1,11 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_privateendpointipconfigurationproperties.go b/resource-manager/network/2024-01-01/privateendpoints/model_privateendpointipconfigurationproperties.go new file mode 100644 index 00000000000..3772b023f53 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_privateendpointipconfigurationproperties.go @@ -0,0 +1,10 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfigurationProperties struct { + GroupId *string `json:"groupId,omitempty"` + MemberName *string `json:"memberName,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_privateendpointproperties.go b/resource-manager/network/2024-01-01/privateendpoints/model_privateendpointproperties.go new file mode 100644 index 00000000000..ac88e7637f3 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_privateendpointproperties.go @@ -0,0 +1,16 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointProperties struct { + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + CustomDnsConfigs *[]CustomDnsConfigPropertiesFormat `json:"customDnsConfigs,omitempty"` + CustomNetworkInterfaceName *string `json:"customNetworkInterfaceName,omitempty"` + IPConfigurations *[]PrivateEndpointIPConfiguration `json:"ipConfigurations,omitempty"` + ManualPrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"manualPrivateLinkServiceConnections,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"privateLinkServiceConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_privatelinkservice.go b/resource-manager/network/2024-01-01/privateendpoints/model_privatelinkservice.go new file mode 100644 index 00000000000..e4c8723fc8b --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_privatelinkservice.go @@ -0,0 +1,19 @@ +package privateendpoints + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkService struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_privatelinkserviceconnection.go b/resource-manager/network/2024-01-01/privateendpoints/model_privatelinkserviceconnection.go new file mode 100644 index 00000000000..be10aca683d --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_privatelinkserviceconnection.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_privatelinkserviceconnectionproperties.go b/resource-manager/network/2024-01-01/privateendpoints/model_privatelinkserviceconnectionproperties.go new file mode 100644 index 00000000000..da2a7ed3871 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_privatelinkserviceconnectionproperties.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionProperties struct { + GroupIds *[]string `json:"groupIds,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + PrivateLinkServiceId *string `json:"privateLinkServiceId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestMessage *string `json:"requestMessage,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_privatelinkserviceconnectionstate.go b/resource-manager/network/2024-01-01/privateendpoints/model_privatelinkserviceconnectionstate.go new file mode 100644 index 00000000000..1d19bec0830 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_privatelinkserviceconnectionstate.go @@ -0,0 +1,10 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionState struct { + ActionsRequired *string `json:"actionsRequired,omitempty"` + Description *string `json:"description,omitempty"` + Status *string `json:"status,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_privatelinkserviceipconfiguration.go b/resource-manager/network/2024-01-01/privateendpoints/model_privatelinkserviceipconfiguration.go new file mode 100644 index 00000000000..358ee0e7450 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_privatelinkserviceipconfiguration.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_privatelinkserviceipconfigurationproperties.go b/resource-manager/network/2024-01-01/privateendpoints/model_privatelinkserviceipconfigurationproperties.go new file mode 100644 index 00000000000..81634dd44b1 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_privatelinkserviceipconfigurationproperties.go @@ -0,0 +1,13 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_privatelinkserviceproperties.go b/resource-manager/network/2024-01-01/privateendpoints/model_privatelinkserviceproperties.go new file mode 100644 index 00000000000..d246ec00f40 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_privatelinkserviceproperties.go @@ -0,0 +1,17 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceProperties struct { + Alias *string `json:"alias,omitempty"` + AutoApproval *ResourceSet `json:"autoApproval,omitempty"` + EnableProxyProtocol *bool `json:"enableProxyProtocol,omitempty"` + Fqdns *[]string `json:"fqdns,omitempty"` + IPConfigurations *[]PrivateLinkServiceIPConfiguration `json:"ipConfigurations,omitempty"` + LoadBalancerFrontendIPConfigurations *[]FrontendIPConfiguration `json:"loadBalancerFrontendIpConfigurations,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Visibility *ResourceSet `json:"visibility,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_publicipaddress.go b/resource-manager/network/2024-01-01/privateendpoints/model_publicipaddress.go new file mode 100644 index 00000000000..eeca2133c31 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_publicipaddress.go @@ -0,0 +1,22 @@ +package privateendpoints + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddress struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PublicIPAddressPropertiesFormat `json:"properties,omitempty"` + Sku *PublicIPAddressSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_publicipaddressdnssettings.go b/resource-manager/network/2024-01-01/privateendpoints/model_publicipaddressdnssettings.go new file mode 100644 index 00000000000..bc8acd1515a --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_publicipaddressdnssettings.go @@ -0,0 +1,11 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressDnsSettings struct { + DomainNameLabel *string `json:"domainNameLabel,omitempty"` + DomainNameLabelScope *PublicIPAddressDnsSettingsDomainNameLabelScope `json:"domainNameLabelScope,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + ReverseFqdn *string `json:"reverseFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_publicipaddresspropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_publicipaddresspropertiesformat.go new file mode 100644 index 00000000000..bed9d0ba8d7 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_publicipaddresspropertiesformat.go @@ -0,0 +1,23 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressPropertiesFormat struct { + DdosSettings *DdosSettings `json:"ddosSettings,omitempty"` + DeleteOption *DeleteOptions `json:"deleteOption,omitempty"` + DnsSettings *PublicIPAddressDnsSettings `json:"dnsSettings,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty"` + IPTags *[]IPTag `json:"ipTags,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + LinkedPublicIPAddress *PublicIPAddress `json:"linkedPublicIPAddress,omitempty"` + MigrationPhase *PublicIPAddressMigrationPhase `json:"migrationPhase,omitempty"` + NatGateway *NatGateway `json:"natGateway,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"` + PublicIPAllocationMethod *IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServicePublicIPAddress *PublicIPAddress `json:"servicePublicIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_publicipaddresssku.go b/resource-manager/network/2024-01-01/privateendpoints/model_publicipaddresssku.go new file mode 100644 index 00000000000..2bbd107f243 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_publicipaddresssku.go @@ -0,0 +1,9 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressSku struct { + Name *PublicIPAddressSkuName `json:"name,omitempty"` + Tier *PublicIPAddressSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_resourcenavigationlink.go b/resource-manager/network/2024-01-01/privateendpoints/model_resourcenavigationlink.go new file mode 100644 index 00000000000..d8890442923 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_resourcenavigationlink.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ResourceNavigationLinkFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_resourcenavigationlinkformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_resourcenavigationlinkformat.go new file mode 100644 index 00000000000..281da0ffc97 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_resourcenavigationlinkformat.go @@ -0,0 +1,10 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLinkFormat struct { + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_resourceset.go b/resource-manager/network/2024-01-01/privateendpoints/model_resourceset.go new file mode 100644 index 00000000000..999b1817a30 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_resourceset.go @@ -0,0 +1,8 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceSet struct { + Subscriptions *[]string `json:"subscriptions,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/privateendpoints/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..b3df6ba5fd1 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_route.go b/resource-manager/network/2024-01-01/privateendpoints/model_route.go new file mode 100644 index 00000000000..98c7a5ae476 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_route.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Route struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RoutePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_routepropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_routepropertiesformat.go new file mode 100644 index 00000000000..ca3956916f3 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_routepropertiesformat.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutePropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + HasBgpOverride *bool `json:"hasBgpOverride,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + NextHopType RouteNextHopType `json:"nextHopType"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_routetable.go b/resource-manager/network/2024-01-01/privateendpoints/model_routetable.go new file mode 100644 index 00000000000..e1f695300d8 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_routetable.go @@ -0,0 +1,14 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTable struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteTablePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_routetablepropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_routetablepropertiesformat.go new file mode 100644 index 00000000000..4976a28f0ea --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_routetablepropertiesformat.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTablePropertiesFormat struct { + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Routes *[]Route `json:"routes,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_securityrule.go b/resource-manager/network/2024-01-01/privateendpoints/model_securityrule.go new file mode 100644 index 00000000000..ccfc50b4a7e --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_securityrule.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_securityrulepropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_securityrulepropertiesformat.go new file mode 100644 index 00000000000..2b19d6a628d --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_securityrulepropertiesformat.go @@ -0,0 +1,23 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulePropertiesFormat struct { + Access SecurityRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction SecurityRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_serviceassociationlink.go b/resource-manager/network/2024-01-01/privateendpoints/model_serviceassociationlink.go new file mode 100644 index 00000000000..a88015b02e1 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_serviceassociationlink.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceAssociationLinkPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_serviceassociationlinkpropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_serviceassociationlinkpropertiesformat.go new file mode 100644 index 00000000000..7a779312074 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_serviceassociationlinkpropertiesformat.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLinkPropertiesFormat struct { + AllowDelete *bool `json:"allowDelete,omitempty"` + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + Locations *[]string `json:"locations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_servicedelegationpropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_servicedelegationpropertiesformat.go new file mode 100644 index 00000000000..84e538e8350 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_servicedelegationpropertiesformat.go @@ -0,0 +1,10 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceDelegationPropertiesFormat struct { + Actions *[]string `json:"actions,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_serviceendpointpolicy.go b/resource-manager/network/2024-01-01/privateendpoints/model_serviceendpointpolicy.go new file mode 100644 index 00000000000..ea8ff121174 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_serviceendpointpolicy.go @@ -0,0 +1,15 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Kind *string `json:"kind,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_serviceendpointpolicydefinition.go b/resource-manager/network/2024-01-01/privateendpoints/model_serviceendpointpolicydefinition.go new file mode 100644 index 00000000000..cc2054776fa --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_serviceendpointpolicydefinition.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinition struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_serviceendpointpolicydefinitionpropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_serviceendpointpolicydefinitionpropertiesformat.go new file mode 100644 index 00000000000..8355dfbaae0 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_serviceendpointpolicydefinitionpropertiesformat.go @@ -0,0 +1,11 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionPropertiesFormat struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` + ServiceResources *[]string `json:"serviceResources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_serviceendpointpolicypropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_serviceendpointpolicypropertiesformat.go new file mode 100644 index 00000000000..dbdcdea1442 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_serviceendpointpolicypropertiesformat.go @@ -0,0 +1,13 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyPropertiesFormat struct { + ContextualServiceEndpointPolicies *[]string `json:"contextualServiceEndpointPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServiceAlias *string `json:"serviceAlias,omitempty"` + ServiceEndpointPolicyDefinitions *[]ServiceEndpointPolicyDefinition `json:"serviceEndpointPolicyDefinitions,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_serviceendpointpropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_serviceendpointpropertiesformat.go new file mode 100644 index 00000000000..c9bc7f38f99 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_serviceendpointpropertiesformat.go @@ -0,0 +1,11 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPropertiesFormat struct { + Locations *[]string `json:"locations,omitempty"` + NetworkIdentifier *SubResource `json:"networkIdentifier,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_subnet.go b/resource-manager/network/2024-01-01/privateendpoints/model_subnet.go new file mode 100644 index 00000000000..1eee73db2bd --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_subnet.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Subnet struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SubnetPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_subnetpropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_subnetpropertiesformat.go new file mode 100644 index 00000000000..84fae8e2d69 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_subnetpropertiesformat.go @@ -0,0 +1,28 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + ApplicationGatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"applicationGatewayIPConfigurations,omitempty"` + DefaultOutboundAccess *bool `json:"defaultOutboundAccess,omitempty"` + Delegations *[]Delegation `json:"delegations,omitempty"` + IPAllocations *[]SubResource `json:"ipAllocations,omitempty"` + IPConfigurationProfiles *[]IPConfigurationProfile `json:"ipConfigurationProfiles,omitempty"` + IPConfigurations *[]IPConfiguration `json:"ipConfigurations,omitempty"` + NatGateway *SubResource `json:"natGateway,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + PrivateEndpointNetworkPolicies *VirtualNetworkPrivateEndpointNetworkPolicies `json:"privateEndpointNetworkPolicies,omitempty"` + PrivateEndpoints *[]PrivateEndpoint `json:"privateEndpoints,omitempty"` + PrivateLinkServiceNetworkPolicies *VirtualNetworkPrivateLinkServiceNetworkPolicies `json:"privateLinkServiceNetworkPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Purpose *string `json:"purpose,omitempty"` + ResourceNavigationLinks *[]ResourceNavigationLink `json:"resourceNavigationLinks,omitempty"` + RouteTable *RouteTable `json:"routeTable,omitempty"` + ServiceAssociationLinks *[]ServiceAssociationLink `json:"serviceAssociationLinks,omitempty"` + ServiceEndpointPolicies *[]ServiceEndpointPolicy `json:"serviceEndpointPolicies,omitempty"` + ServiceEndpoints *[]ServiceEndpointPropertiesFormat `json:"serviceEndpoints,omitempty"` + SharingScope *SharingScope `json:"sharingScope,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_subresource.go b/resource-manager/network/2024-01-01/privateendpoints/model_subresource.go new file mode 100644 index 00000000000..134c4f66102 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_subresource.go @@ -0,0 +1,8 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/privateendpoints/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..fc7cf55257e --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/privateendpoints/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..8a4f6042fa4 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_virtualnetworktap.go b/resource-manager/network/2024-01-01/privateendpoints/model_virtualnetworktap.go new file mode 100644 index 00000000000..99fe7d7fe1d --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_virtualnetworktap.go @@ -0,0 +1,14 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkTapPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/model_virtualnetworktappropertiesformat.go b/resource-manager/network/2024-01-01/privateendpoints/model_virtualnetworktappropertiesformat.go new file mode 100644 index 00000000000..c7fa6565e0f --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/model_virtualnetworktappropertiesformat.go @@ -0,0 +1,13 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapPropertiesFormat struct { + DestinationLoadBalancerFrontEndIPConfiguration *FrontendIPConfiguration `json:"destinationLoadBalancerFrontEndIPConfiguration,omitempty"` + DestinationNetworkInterfaceIPConfiguration *NetworkInterfaceIPConfiguration `json:"destinationNetworkInterfaceIPConfiguration,omitempty"` + DestinationPort *int64 `json:"destinationPort,omitempty"` + NetworkInterfaceTapConfigurations *[]NetworkInterfaceTapConfiguration `json:"networkInterfaceTapConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/predicates.go b/resource-manager/network/2024-01-01/privateendpoints/predicates.go new file mode 100644 index 00000000000..c99098d0163 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/predicates.go @@ -0,0 +1,70 @@ +package privateendpoints + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AvailablePrivateEndpointTypeOperationPredicate struct { + DisplayName *string + Id *string + Name *string + ResourceName *string + Type *string +} + +func (p AvailablePrivateEndpointTypeOperationPredicate) Matches(input AvailablePrivateEndpointType) bool { + + if p.DisplayName != nil && (input.DisplayName == nil || *p.DisplayName != *input.DisplayName) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.ResourceName != nil && (input.ResourceName == nil || *p.ResourceName != *input.ResourceName) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type PrivateEndpointOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p PrivateEndpointOperationPredicate) Matches(input PrivateEndpoint) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/privateendpoints/version.go b/resource-manager/network/2024-01-01/privateendpoints/version.go new file mode 100644 index 00000000000..595da0e90a8 --- /dev/null +++ b/resource-manager/network/2024-01-01/privateendpoints/version.go @@ -0,0 +1,12 @@ +package privateendpoints + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/privateendpoints/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/README.md b/resource-manager/network/2024-01-01/privatelinkservices/README.md new file mode 100644 index 00000000000..905380d09b0 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/README.md @@ -0,0 +1,234 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/privatelinkservices` Documentation + +The `privatelinkservices` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/privatelinkservices" +``` + + +### Client Initialization + +```go +client := privatelinkservices.NewPrivateLinkServicesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `PrivateLinkServicesClient.CheckPrivateLinkServiceVisibility` + +```go +ctx := context.TODO() +id := privatelinkservices.NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue") + +payload := privatelinkservices.CheckPrivateLinkServiceVisibilityRequest{ + // ... +} + + +if err := client.CheckPrivateLinkServiceVisibilityThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `PrivateLinkServicesClient.CheckPrivateLinkServiceVisibilityByResourceGroup` + +```go +ctx := context.TODO() +id := privatelinkservices.NewProviderLocationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "locationValue") + +payload := privatelinkservices.CheckPrivateLinkServiceVisibilityRequest{ + // ... +} + + +if err := client.CheckPrivateLinkServiceVisibilityByResourceGroupThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `PrivateLinkServicesClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := privatelinkservices.NewPrivateLinkServiceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateLinkServiceValue") + +payload := privatelinkservices.PrivateLinkService{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `PrivateLinkServicesClient.Delete` + +```go +ctx := context.TODO() +id := privatelinkservices.NewPrivateLinkServiceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateLinkServiceValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `PrivateLinkServicesClient.DeletePrivateEndpointConnection` + +```go +ctx := context.TODO() +id := privatelinkservices.NewPrivateEndpointConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateLinkServiceValue", "privateEndpointConnectionValue") + +if err := client.DeletePrivateEndpointConnectionThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `PrivateLinkServicesClient.Get` + +```go +ctx := context.TODO() +id := privatelinkservices.NewPrivateLinkServiceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateLinkServiceValue") + +read, err := client.Get(ctx, id, privatelinkservices.DefaultGetOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `PrivateLinkServicesClient.GetPrivateEndpointConnection` + +```go +ctx := context.TODO() +id := privatelinkservices.NewPrivateEndpointConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateLinkServiceValue", "privateEndpointConnectionValue") + +read, err := client.GetPrivateEndpointConnection(ctx, id, privatelinkservices.DefaultGetPrivateEndpointConnectionOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `PrivateLinkServicesClient.List` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `PrivateLinkServicesClient.ListAutoApprovedPrivateLinkServices` + +```go +ctx := context.TODO() +id := privatelinkservices.NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue") + +// alternatively `client.ListAutoApprovedPrivateLinkServices(ctx, id)` can be used to do batched pagination +items, err := client.ListAutoApprovedPrivateLinkServicesComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `PrivateLinkServicesClient.ListAutoApprovedPrivateLinkServicesByResourceGroup` + +```go +ctx := context.TODO() +id := privatelinkservices.NewProviderLocationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "locationValue") + +// alternatively `client.ListAutoApprovedPrivateLinkServicesByResourceGroup(ctx, id)` can be used to do batched pagination +items, err := client.ListAutoApprovedPrivateLinkServicesByResourceGroupComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `PrivateLinkServicesClient.ListBySubscription` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.ListBySubscription(ctx, id)` can be used to do batched pagination +items, err := client.ListBySubscriptionComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `PrivateLinkServicesClient.ListPrivateEndpointConnections` + +```go +ctx := context.TODO() +id := privatelinkservices.NewPrivateLinkServiceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateLinkServiceValue") + +// alternatively `client.ListPrivateEndpointConnections(ctx, id)` can be used to do batched pagination +items, err := client.ListPrivateEndpointConnectionsComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `PrivateLinkServicesClient.UpdatePrivateEndpointConnection` + +```go +ctx := context.TODO() +id := privatelinkservices.NewPrivateEndpointConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateLinkServiceValue", "privateEndpointConnectionValue") + +payload := privatelinkservices.PrivateEndpointConnection{ + // ... +} + + +read, err := client.UpdatePrivateEndpointConnection(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/privatelinkservices/client.go b/resource-manager/network/2024-01-01/privatelinkservices/client.go new file mode 100644 index 00000000000..5bd46867c3e --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/client.go @@ -0,0 +1,26 @@ +package privatelinkservices + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServicesClient struct { + Client *resourcemanager.Client +} + +func NewPrivateLinkServicesClientWithBaseURI(sdkApi sdkEnv.Api) (*PrivateLinkServicesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "privatelinkservices", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating PrivateLinkServicesClient: %+v", err) + } + + return &PrivateLinkServicesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/constants.go b/resource-manager/network/2024-01-01/privatelinkservices/constants.go new file mode 100644 index 00000000000..17a1620a835 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/constants.go @@ -0,0 +1,1198 @@ +package privatelinkservices + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettingsProtectionMode string + +const ( + DdosSettingsProtectionModeDisabled DdosSettingsProtectionMode = "Disabled" + DdosSettingsProtectionModeEnabled DdosSettingsProtectionMode = "Enabled" + DdosSettingsProtectionModeVirtualNetworkInherited DdosSettingsProtectionMode = "VirtualNetworkInherited" +) + +func PossibleValuesForDdosSettingsProtectionMode() []string { + return []string{ + string(DdosSettingsProtectionModeDisabled), + string(DdosSettingsProtectionModeEnabled), + string(DdosSettingsProtectionModeVirtualNetworkInherited), + } +} + +func (s *DdosSettingsProtectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDdosSettingsProtectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDdosSettingsProtectionMode(input string) (*DdosSettingsProtectionMode, error) { + vals := map[string]DdosSettingsProtectionMode{ + "disabled": DdosSettingsProtectionModeDisabled, + "enabled": DdosSettingsProtectionModeEnabled, + "virtualnetworkinherited": DdosSettingsProtectionModeVirtualNetworkInherited, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DdosSettingsProtectionMode(input) + return &out, nil +} + +type DeleteOptions string + +const ( + DeleteOptionsDelete DeleteOptions = "Delete" + DeleteOptionsDetach DeleteOptions = "Detach" +) + +func PossibleValuesForDeleteOptions() []string { + return []string{ + string(DeleteOptionsDelete), + string(DeleteOptionsDetach), + } +} + +func (s *DeleteOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteOptions(input string) (*DeleteOptions, error) { + vals := map[string]DeleteOptions{ + "delete": DeleteOptionsDelete, + "detach": DeleteOptionsDetach, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteOptions(input) + return &out, nil +} + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelInterfaceType string + +const ( + GatewayLoadBalancerTunnelInterfaceTypeExternal GatewayLoadBalancerTunnelInterfaceType = "External" + GatewayLoadBalancerTunnelInterfaceTypeInternal GatewayLoadBalancerTunnelInterfaceType = "Internal" + GatewayLoadBalancerTunnelInterfaceTypeNone GatewayLoadBalancerTunnelInterfaceType = "None" +) + +func PossibleValuesForGatewayLoadBalancerTunnelInterfaceType() []string { + return []string{ + string(GatewayLoadBalancerTunnelInterfaceTypeExternal), + string(GatewayLoadBalancerTunnelInterfaceTypeInternal), + string(GatewayLoadBalancerTunnelInterfaceTypeNone), + } +} + +func (s *GatewayLoadBalancerTunnelInterfaceType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelInterfaceType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelInterfaceType(input string) (*GatewayLoadBalancerTunnelInterfaceType, error) { + vals := map[string]GatewayLoadBalancerTunnelInterfaceType{ + "external": GatewayLoadBalancerTunnelInterfaceTypeExternal, + "internal": GatewayLoadBalancerTunnelInterfaceTypeInternal, + "none": GatewayLoadBalancerTunnelInterfaceTypeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelInterfaceType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelProtocol string + +const ( + GatewayLoadBalancerTunnelProtocolNative GatewayLoadBalancerTunnelProtocol = "Native" + GatewayLoadBalancerTunnelProtocolNone GatewayLoadBalancerTunnelProtocol = "None" + GatewayLoadBalancerTunnelProtocolVXLAN GatewayLoadBalancerTunnelProtocol = "VXLAN" +) + +func PossibleValuesForGatewayLoadBalancerTunnelProtocol() []string { + return []string{ + string(GatewayLoadBalancerTunnelProtocolNative), + string(GatewayLoadBalancerTunnelProtocolNone), + string(GatewayLoadBalancerTunnelProtocolVXLAN), + } +} + +func (s *GatewayLoadBalancerTunnelProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelProtocol(input string) (*GatewayLoadBalancerTunnelProtocol, error) { + vals := map[string]GatewayLoadBalancerTunnelProtocol{ + "native": GatewayLoadBalancerTunnelProtocolNative, + "none": GatewayLoadBalancerTunnelProtocolNone, + "vxlan": GatewayLoadBalancerTunnelProtocolVXLAN, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelProtocol(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} + +type LoadBalancerBackendAddressAdminState string + +const ( + LoadBalancerBackendAddressAdminStateDown LoadBalancerBackendAddressAdminState = "Down" + LoadBalancerBackendAddressAdminStateNone LoadBalancerBackendAddressAdminState = "None" + LoadBalancerBackendAddressAdminStateUp LoadBalancerBackendAddressAdminState = "Up" +) + +func PossibleValuesForLoadBalancerBackendAddressAdminState() []string { + return []string{ + string(LoadBalancerBackendAddressAdminStateDown), + string(LoadBalancerBackendAddressAdminStateNone), + string(LoadBalancerBackendAddressAdminStateUp), + } +} + +func (s *LoadBalancerBackendAddressAdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerBackendAddressAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerBackendAddressAdminState(input string) (*LoadBalancerBackendAddressAdminState, error) { + vals := map[string]LoadBalancerBackendAddressAdminState{ + "down": LoadBalancerBackendAddressAdminStateDown, + "none": LoadBalancerBackendAddressAdminStateNone, + "up": LoadBalancerBackendAddressAdminStateUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerBackendAddressAdminState(input) + return &out, nil +} + +type NatGatewaySkuName string + +const ( + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +func PossibleValuesForNatGatewaySkuName() []string { + return []string{ + string(NatGatewaySkuNameStandard), + } +} + +func (s *NatGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNatGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNatGatewaySkuName(input string) (*NatGatewaySkuName, error) { + vals := map[string]NatGatewaySkuName{ + "standard": NatGatewaySkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NatGatewaySkuName(input) + return &out, nil +} + +type NetworkInterfaceAuxiliaryMode string + +const ( + NetworkInterfaceAuxiliaryModeAcceleratedConnections NetworkInterfaceAuxiliaryMode = "AcceleratedConnections" + NetworkInterfaceAuxiliaryModeFloating NetworkInterfaceAuxiliaryMode = "Floating" + NetworkInterfaceAuxiliaryModeMaxConnections NetworkInterfaceAuxiliaryMode = "MaxConnections" + NetworkInterfaceAuxiliaryModeNone NetworkInterfaceAuxiliaryMode = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliaryMode() []string { + return []string{ + string(NetworkInterfaceAuxiliaryModeAcceleratedConnections), + string(NetworkInterfaceAuxiliaryModeFloating), + string(NetworkInterfaceAuxiliaryModeMaxConnections), + string(NetworkInterfaceAuxiliaryModeNone), + } +} + +func (s *NetworkInterfaceAuxiliaryMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliaryMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliaryMode(input string) (*NetworkInterfaceAuxiliaryMode, error) { + vals := map[string]NetworkInterfaceAuxiliaryMode{ + "acceleratedconnections": NetworkInterfaceAuxiliaryModeAcceleratedConnections, + "floating": NetworkInterfaceAuxiliaryModeFloating, + "maxconnections": NetworkInterfaceAuxiliaryModeMaxConnections, + "none": NetworkInterfaceAuxiliaryModeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliaryMode(input) + return &out, nil +} + +type NetworkInterfaceAuxiliarySku string + +const ( + NetworkInterfaceAuxiliarySkuAEight NetworkInterfaceAuxiliarySku = "A8" + NetworkInterfaceAuxiliarySkuAFour NetworkInterfaceAuxiliarySku = "A4" + NetworkInterfaceAuxiliarySkuAOne NetworkInterfaceAuxiliarySku = "A1" + NetworkInterfaceAuxiliarySkuATwo NetworkInterfaceAuxiliarySku = "A2" + NetworkInterfaceAuxiliarySkuNone NetworkInterfaceAuxiliarySku = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliarySku() []string { + return []string{ + string(NetworkInterfaceAuxiliarySkuAEight), + string(NetworkInterfaceAuxiliarySkuAFour), + string(NetworkInterfaceAuxiliarySkuAOne), + string(NetworkInterfaceAuxiliarySkuATwo), + string(NetworkInterfaceAuxiliarySkuNone), + } +} + +func (s *NetworkInterfaceAuxiliarySku) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliarySku(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliarySku(input string) (*NetworkInterfaceAuxiliarySku, error) { + vals := map[string]NetworkInterfaceAuxiliarySku{ + "a8": NetworkInterfaceAuxiliarySkuAEight, + "a4": NetworkInterfaceAuxiliarySkuAFour, + "a1": NetworkInterfaceAuxiliarySkuAOne, + "a2": NetworkInterfaceAuxiliarySkuATwo, + "none": NetworkInterfaceAuxiliarySkuNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliarySku(input) + return &out, nil +} + +type NetworkInterfaceMigrationPhase string + +const ( + NetworkInterfaceMigrationPhaseAbort NetworkInterfaceMigrationPhase = "Abort" + NetworkInterfaceMigrationPhaseCommit NetworkInterfaceMigrationPhase = "Commit" + NetworkInterfaceMigrationPhaseCommitted NetworkInterfaceMigrationPhase = "Committed" + NetworkInterfaceMigrationPhaseNone NetworkInterfaceMigrationPhase = "None" + NetworkInterfaceMigrationPhasePrepare NetworkInterfaceMigrationPhase = "Prepare" +) + +func PossibleValuesForNetworkInterfaceMigrationPhase() []string { + return []string{ + string(NetworkInterfaceMigrationPhaseAbort), + string(NetworkInterfaceMigrationPhaseCommit), + string(NetworkInterfaceMigrationPhaseCommitted), + string(NetworkInterfaceMigrationPhaseNone), + string(NetworkInterfaceMigrationPhasePrepare), + } +} + +func (s *NetworkInterfaceMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceMigrationPhase(input string) (*NetworkInterfaceMigrationPhase, error) { + vals := map[string]NetworkInterfaceMigrationPhase{ + "abort": NetworkInterfaceMigrationPhaseAbort, + "commit": NetworkInterfaceMigrationPhaseCommit, + "committed": NetworkInterfaceMigrationPhaseCommitted, + "none": NetworkInterfaceMigrationPhaseNone, + "prepare": NetworkInterfaceMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceMigrationPhase(input) + return &out, nil +} + +type NetworkInterfaceNicType string + +const ( + NetworkInterfaceNicTypeElastic NetworkInterfaceNicType = "Elastic" + NetworkInterfaceNicTypeStandard NetworkInterfaceNicType = "Standard" +) + +func PossibleValuesForNetworkInterfaceNicType() []string { + return []string{ + string(NetworkInterfaceNicTypeElastic), + string(NetworkInterfaceNicTypeStandard), + } +} + +func (s *NetworkInterfaceNicType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceNicType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceNicType(input string) (*NetworkInterfaceNicType, error) { + vals := map[string]NetworkInterfaceNicType{ + "elastic": NetworkInterfaceNicTypeElastic, + "standard": NetworkInterfaceNicTypeStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceNicType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type PublicIPAddressDnsSettingsDomainNameLabelScope string + +const ( + PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "NoReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "ResourceGroupReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "SubscriptionReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "TenantReuse" +) + +func PossibleValuesForPublicIPAddressDnsSettingsDomainNameLabelScope() []string { + return []string{ + string(PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse), + } +} + +func (s *PublicIPAddressDnsSettingsDomainNameLabelScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressDnsSettingsDomainNameLabelScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressDnsSettingsDomainNameLabelScope(input string) (*PublicIPAddressDnsSettingsDomainNameLabelScope, error) { + vals := map[string]PublicIPAddressDnsSettingsDomainNameLabelScope{ + "noreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse, + "resourcegroupreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse, + "subscriptionreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse, + "tenantreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressDnsSettingsDomainNameLabelScope(input) + return &out, nil +} + +type PublicIPAddressMigrationPhase string + +const ( + PublicIPAddressMigrationPhaseAbort PublicIPAddressMigrationPhase = "Abort" + PublicIPAddressMigrationPhaseCommit PublicIPAddressMigrationPhase = "Commit" + PublicIPAddressMigrationPhaseCommitted PublicIPAddressMigrationPhase = "Committed" + PublicIPAddressMigrationPhaseNone PublicIPAddressMigrationPhase = "None" + PublicIPAddressMigrationPhasePrepare PublicIPAddressMigrationPhase = "Prepare" +) + +func PossibleValuesForPublicIPAddressMigrationPhase() []string { + return []string{ + string(PublicIPAddressMigrationPhaseAbort), + string(PublicIPAddressMigrationPhaseCommit), + string(PublicIPAddressMigrationPhaseCommitted), + string(PublicIPAddressMigrationPhaseNone), + string(PublicIPAddressMigrationPhasePrepare), + } +} + +func (s *PublicIPAddressMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressMigrationPhase(input string) (*PublicIPAddressMigrationPhase, error) { + vals := map[string]PublicIPAddressMigrationPhase{ + "abort": PublicIPAddressMigrationPhaseAbort, + "commit": PublicIPAddressMigrationPhaseCommit, + "committed": PublicIPAddressMigrationPhaseCommitted, + "none": PublicIPAddressMigrationPhaseNone, + "prepare": PublicIPAddressMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressMigrationPhase(input) + return &out, nil +} + +type PublicIPAddressSkuName string + +const ( + PublicIPAddressSkuNameBasic PublicIPAddressSkuName = "Basic" + PublicIPAddressSkuNameStandard PublicIPAddressSkuName = "Standard" +) + +func PossibleValuesForPublicIPAddressSkuName() []string { + return []string{ + string(PublicIPAddressSkuNameBasic), + string(PublicIPAddressSkuNameStandard), + } +} + +func (s *PublicIPAddressSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuName(input string) (*PublicIPAddressSkuName, error) { + vals := map[string]PublicIPAddressSkuName{ + "basic": PublicIPAddressSkuNameBasic, + "standard": PublicIPAddressSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuName(input) + return &out, nil +} + +type PublicIPAddressSkuTier string + +const ( + PublicIPAddressSkuTierGlobal PublicIPAddressSkuTier = "Global" + PublicIPAddressSkuTierRegional PublicIPAddressSkuTier = "Regional" +) + +func PossibleValuesForPublicIPAddressSkuTier() []string { + return []string{ + string(PublicIPAddressSkuTierGlobal), + string(PublicIPAddressSkuTierRegional), + } +} + +func (s *PublicIPAddressSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuTier(input string) (*PublicIPAddressSkuTier, error) { + vals := map[string]PublicIPAddressSkuTier{ + "global": PublicIPAddressSkuTierGlobal, + "regional": PublicIPAddressSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuTier(input) + return &out, nil +} + +type RouteNextHopType string + +const ( + RouteNextHopTypeInternet RouteNextHopType = "Internet" + RouteNextHopTypeNone RouteNextHopType = "None" + RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" + RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" + RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" +) + +func PossibleValuesForRouteNextHopType() []string { + return []string{ + string(RouteNextHopTypeInternet), + string(RouteNextHopTypeNone), + string(RouteNextHopTypeVirtualAppliance), + string(RouteNextHopTypeVirtualNetworkGateway), + string(RouteNextHopTypeVnetLocal), + } +} + +func (s *RouteNextHopType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteNextHopType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteNextHopType(input string) (*RouteNextHopType, error) { + vals := map[string]RouteNextHopType{ + "internet": RouteNextHopTypeInternet, + "none": RouteNextHopTypeNone, + "virtualappliance": RouteNextHopTypeVirtualAppliance, + "virtualnetworkgateway": RouteNextHopTypeVirtualNetworkGateway, + "vnetlocal": RouteNextHopTypeVnetLocal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteNextHopType(input) + return &out, nil +} + +type SecurityRuleAccess string + +const ( + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +func PossibleValuesForSecurityRuleAccess() []string { + return []string{ + string(SecurityRuleAccessAllow), + string(SecurityRuleAccessDeny), + } +} + +func (s *SecurityRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleAccess(input string) (*SecurityRuleAccess, error) { + vals := map[string]SecurityRuleAccess{ + "allow": SecurityRuleAccessAllow, + "deny": SecurityRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleAccess(input) + return &out, nil +} + +type SecurityRuleDirection string + +const ( + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityRuleDirection() []string { + return []string{ + string(SecurityRuleDirectionInbound), + string(SecurityRuleDirectionOutbound), + } +} + +func (s *SecurityRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleDirection(input string) (*SecurityRuleDirection, error) { + vals := map[string]SecurityRuleDirection{ + "inbound": SecurityRuleDirectionInbound, + "outbound": SecurityRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleDirection(input) + return &out, nil +} + +type SecurityRuleProtocol string + +const ( + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + SecurityRuleProtocolAny SecurityRuleProtocol = "*" + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + SecurityRuleProtocolTcp SecurityRuleProtocol = "Tcp" + SecurityRuleProtocolUdp SecurityRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityRuleProtocol() []string { + return []string{ + string(SecurityRuleProtocolAh), + string(SecurityRuleProtocolAny), + string(SecurityRuleProtocolEsp), + string(SecurityRuleProtocolIcmp), + string(SecurityRuleProtocolTcp), + string(SecurityRuleProtocolUdp), + } +} + +func (s *SecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleProtocol(input string) (*SecurityRuleProtocol, error) { + vals := map[string]SecurityRuleProtocol{ + "ah": SecurityRuleProtocolAh, + "*": SecurityRuleProtocolAny, + "esp": SecurityRuleProtocolEsp, + "icmp": SecurityRuleProtocolIcmp, + "tcp": SecurityRuleProtocolTcp, + "udp": SecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleProtocol(input) + return &out, nil +} + +type SharingScope string + +const ( + SharingScopeDelegatedServices SharingScope = "DelegatedServices" + SharingScopeTenant SharingScope = "Tenant" +) + +func PossibleValuesForSharingScope() []string { + return []string{ + string(SharingScopeDelegatedServices), + string(SharingScopeTenant), + } +} + +func (s *SharingScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSharingScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSharingScope(input string) (*SharingScope, error) { + vals := map[string]SharingScope{ + "delegatedservices": SharingScopeDelegatedServices, + "tenant": SharingScopeTenant, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SharingScope(input) + return &out, nil +} + +type SyncMode string + +const ( + SyncModeAutomatic SyncMode = "Automatic" + SyncModeManual SyncMode = "Manual" +) + +func PossibleValuesForSyncMode() []string { + return []string{ + string(SyncModeAutomatic), + string(SyncModeManual), + } +} + +func (s *SyncMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSyncMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSyncMode(input string) (*SyncMode, error) { + vals := map[string]SyncMode{ + "automatic": SyncModeAutomatic, + "manual": SyncModeManual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SyncMode(input) + return &out, nil +} + +type TransportProtocol string + +const ( + TransportProtocolAll TransportProtocol = "All" + TransportProtocolTcp TransportProtocol = "Tcp" + TransportProtocolUdp TransportProtocol = "Udp" +) + +func PossibleValuesForTransportProtocol() []string { + return []string{ + string(TransportProtocolAll), + string(TransportProtocolTcp), + string(TransportProtocolUdp), + } +} + +func (s *TransportProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseTransportProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseTransportProtocol(input string) (*TransportProtocol, error) { + vals := map[string]TransportProtocol{ + "all": TransportProtocolAll, + "tcp": TransportProtocolTcp, + "udp": TransportProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := TransportProtocol(input) + return &out, nil +} + +type VirtualNetworkPrivateEndpointNetworkPolicies string + +const ( + VirtualNetworkPrivateEndpointNetworkPoliciesDisabled VirtualNetworkPrivateEndpointNetworkPolicies = "Disabled" + VirtualNetworkPrivateEndpointNetworkPoliciesEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "Enabled" + VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "NetworkSecurityGroupEnabled" + VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "RouteTableEnabled" +) + +func PossibleValuesForVirtualNetworkPrivateEndpointNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateEndpointNetworkPoliciesDisabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled), + } +} + +func (s *VirtualNetworkPrivateEndpointNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateEndpointNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateEndpointNetworkPolicies(input string) (*VirtualNetworkPrivateEndpointNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateEndpointNetworkPolicies{ + "disabled": VirtualNetworkPrivateEndpointNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateEndpointNetworkPoliciesEnabled, + "networksecuritygroupenabled": VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled, + "routetableenabled": VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateEndpointNetworkPolicies(input) + return &out, nil +} + +type VirtualNetworkPrivateLinkServiceNetworkPolicies string + +const ( + VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Disabled" + VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Enabled" +) + +func PossibleValuesForVirtualNetworkPrivateLinkServiceNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled), + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled), + } +} + +func (s *VirtualNetworkPrivateLinkServiceNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateLinkServiceNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateLinkServiceNetworkPolicies(input string) (*VirtualNetworkPrivateLinkServiceNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateLinkServiceNetworkPolicies{ + "disabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateLinkServiceNetworkPolicies(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/id_location.go b/resource-manager/network/2024-01-01/privatelinkservices/id_location.go new file mode 100644 index 00000000000..34e4ed80520 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/id_location.go @@ -0,0 +1,121 @@ +package privatelinkservices + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&LocationId{}) +} + +var _ resourceids.ResourceId = &LocationId{} + +// LocationId is a struct representing the Resource ID for a Location +type LocationId struct { + SubscriptionId string + LocationName string +} + +// NewLocationID returns a new LocationId struct +func NewLocationID(subscriptionId string, locationName string) LocationId { + return LocationId{ + SubscriptionId: subscriptionId, + LocationName: locationName, + } +} + +// ParseLocationID parses 'input' into a LocationId +func ParseLocationID(input string) (*LocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&LocationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseLocationIDInsensitively parses 'input' case-insensitively into a LocationId +// note: this method should only be used for API response data and not user input +func ParseLocationIDInsensitively(input string) (*LocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&LocationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *LocationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.LocationName, ok = input.Parsed["locationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "locationName", input) + } + + return nil +} + +// ValidateLocationID checks that 'input' can be parsed as a Location ID +func ValidateLocationID(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 := ParseLocationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Location ID +func (id LocationId) ID() string { + fmtString := "/subscriptions/%s/providers/Microsoft.Network/locations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.LocationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Location ID +func (id LocationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLocations", "locations", "locations"), + resourceids.UserSpecifiedSegment("locationName", "locationValue"), + } +} + +// String returns a human-readable description of this Location ID +func (id LocationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Location Name: %q", id.LocationName), + } + return fmt.Sprintf("Location (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/id_location_test.go b/resource-manager/network/2024-01-01/privatelinkservices/id_location_test.go new file mode 100644 index 00000000000..e5a86e22039 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/id_location_test.go @@ -0,0 +1,237 @@ +package privatelinkservices + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &LocationId{} + +func TestNewLocationID(t *testing.T) { + id := NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.LocationName != "locationValue" { + t.Fatalf("Expected %q but got %q for Segment 'LocationName'", id.LocationName, "locationValue") + } +} + +func TestFormatLocationID(t *testing.T) { + actual := NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseLocationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLocationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestParseLocationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "lOcAtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLocationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestSegmentsForLocationId(t *testing.T) { + segments := LocationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("LocationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/id_privateendpointconnection.go b/resource-manager/network/2024-01-01/privatelinkservices/id_privateendpointconnection.go new file mode 100644 index 00000000000..3f98898492d --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/id_privateendpointconnection.go @@ -0,0 +1,139 @@ +package privatelinkservices + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&PrivateEndpointConnectionId{}) +} + +var _ resourceids.ResourceId = &PrivateEndpointConnectionId{} + +// PrivateEndpointConnectionId is a struct representing the Resource ID for a Private Endpoint Connection +type PrivateEndpointConnectionId struct { + SubscriptionId string + ResourceGroupName string + PrivateLinkServiceName string + PrivateEndpointConnectionName string +} + +// NewPrivateEndpointConnectionID returns a new PrivateEndpointConnectionId struct +func NewPrivateEndpointConnectionID(subscriptionId string, resourceGroupName string, privateLinkServiceName string, privateEndpointConnectionName string) PrivateEndpointConnectionId { + return PrivateEndpointConnectionId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + PrivateLinkServiceName: privateLinkServiceName, + PrivateEndpointConnectionName: privateEndpointConnectionName, + } +} + +// ParsePrivateEndpointConnectionID parses 'input' into a PrivateEndpointConnectionId +func ParsePrivateEndpointConnectionID(input string) (*PrivateEndpointConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&PrivateEndpointConnectionId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PrivateEndpointConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParsePrivateEndpointConnectionIDInsensitively parses 'input' case-insensitively into a PrivateEndpointConnectionId +// note: this method should only be used for API response data and not user input +func ParsePrivateEndpointConnectionIDInsensitively(input string) (*PrivateEndpointConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&PrivateEndpointConnectionId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PrivateEndpointConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *PrivateEndpointConnectionId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.PrivateLinkServiceName, ok = input.Parsed["privateLinkServiceName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "privateLinkServiceName", input) + } + + if id.PrivateEndpointConnectionName, ok = input.Parsed["privateEndpointConnectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "privateEndpointConnectionName", input) + } + + return nil +} + +// ValidatePrivateEndpointConnectionID checks that 'input' can be parsed as a Private Endpoint Connection ID +func ValidatePrivateEndpointConnectionID(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 := ParsePrivateEndpointConnectionID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Private Endpoint Connection ID +func (id PrivateEndpointConnectionId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/privateLinkServices/%s/privateEndpointConnections/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.PrivateLinkServiceName, id.PrivateEndpointConnectionName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Private Endpoint Connection ID +func (id PrivateEndpointConnectionId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticPrivateLinkServices", "privateLinkServices", "privateLinkServices"), + resourceids.UserSpecifiedSegment("privateLinkServiceName", "privateLinkServiceValue"), + resourceids.StaticSegment("staticPrivateEndpointConnections", "privateEndpointConnections", "privateEndpointConnections"), + resourceids.UserSpecifiedSegment("privateEndpointConnectionName", "privateEndpointConnectionValue"), + } +} + +// String returns a human-readable description of this Private Endpoint Connection ID +func (id PrivateEndpointConnectionId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Private Link Service Name: %q", id.PrivateLinkServiceName), + fmt.Sprintf("Private Endpoint Connection Name: %q", id.PrivateEndpointConnectionName), + } + return fmt.Sprintf("Private Endpoint Connection (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/id_privateendpointconnection_test.go b/resource-manager/network/2024-01-01/privatelinkservices/id_privateendpointconnection_test.go new file mode 100644 index 00000000000..b5b92fb48d2 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/id_privateendpointconnection_test.go @@ -0,0 +1,327 @@ +package privatelinkservices + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &PrivateEndpointConnectionId{} + +func TestNewPrivateEndpointConnectionID(t *testing.T) { + id := NewPrivateEndpointConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateLinkServiceValue", "privateEndpointConnectionValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.PrivateLinkServiceName != "privateLinkServiceValue" { + t.Fatalf("Expected %q but got %q for Segment 'PrivateLinkServiceName'", id.PrivateLinkServiceName, "privateLinkServiceValue") + } + + if id.PrivateEndpointConnectionName != "privateEndpointConnectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'PrivateEndpointConnectionName'", id.PrivateEndpointConnectionName, "privateEndpointConnectionValue") + } +} + +func TestFormatPrivateEndpointConnectionID(t *testing.T) { + actual := NewPrivateEndpointConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateLinkServiceValue", "privateEndpointConnectionValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateLinkServices/privateLinkServiceValue/privateEndpointConnections/privateEndpointConnectionValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParsePrivateEndpointConnectionID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PrivateEndpointConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateLinkServices", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateLinkServices/privateLinkServiceValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateLinkServices/privateLinkServiceValue/privateEndpointConnections", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateLinkServices/privateLinkServiceValue/privateEndpointConnections/privateEndpointConnectionValue", + Expected: &PrivateEndpointConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + PrivateLinkServiceName: "privateLinkServiceValue", + PrivateEndpointConnectionName: "privateEndpointConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateLinkServices/privateLinkServiceValue/privateEndpointConnections/privateEndpointConnectionValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePrivateEndpointConnectionID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.PrivateLinkServiceName != v.Expected.PrivateLinkServiceName { + t.Fatalf("Expected %q but got %q for PrivateLinkServiceName", v.Expected.PrivateLinkServiceName, actual.PrivateLinkServiceName) + } + + if actual.PrivateEndpointConnectionName != v.Expected.PrivateEndpointConnectionName { + t.Fatalf("Expected %q but got %q for PrivateEndpointConnectionName", v.Expected.PrivateEndpointConnectionName, actual.PrivateEndpointConnectionName) + } + + } +} + +func TestParsePrivateEndpointConnectionIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PrivateEndpointConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateLinkServices", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/pRiVaTeLiNkSeRvIcEs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateLinkServices/privateLinkServiceValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/pRiVaTeLiNkSeRvIcEs/pRiVaTeLiNkSeRvIcEvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateLinkServices/privateLinkServiceValue/privateEndpointConnections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/pRiVaTeLiNkSeRvIcEs/pRiVaTeLiNkSeRvIcEvAlUe/pRiVaTeEnDpOiNtCoNnEcTiOnS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateLinkServices/privateLinkServiceValue/privateEndpointConnections/privateEndpointConnectionValue", + Expected: &PrivateEndpointConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + PrivateLinkServiceName: "privateLinkServiceValue", + PrivateEndpointConnectionName: "privateEndpointConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateLinkServices/privateLinkServiceValue/privateEndpointConnections/privateEndpointConnectionValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/pRiVaTeLiNkSeRvIcEs/pRiVaTeLiNkSeRvIcEvAlUe/pRiVaTeEnDpOiNtCoNnEcTiOnS/pRiVaTeEnDpOiNtCoNnEcTiOnVaLuE", + Expected: &PrivateEndpointConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + PrivateLinkServiceName: "pRiVaTeLiNkSeRvIcEvAlUe", + PrivateEndpointConnectionName: "pRiVaTeEnDpOiNtCoNnEcTiOnVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/pRiVaTeLiNkSeRvIcEs/pRiVaTeLiNkSeRvIcEvAlUe/pRiVaTeEnDpOiNtCoNnEcTiOnS/pRiVaTeEnDpOiNtCoNnEcTiOnVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePrivateEndpointConnectionIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.PrivateLinkServiceName != v.Expected.PrivateLinkServiceName { + t.Fatalf("Expected %q but got %q for PrivateLinkServiceName", v.Expected.PrivateLinkServiceName, actual.PrivateLinkServiceName) + } + + if actual.PrivateEndpointConnectionName != v.Expected.PrivateEndpointConnectionName { + t.Fatalf("Expected %q but got %q for PrivateEndpointConnectionName", v.Expected.PrivateEndpointConnectionName, actual.PrivateEndpointConnectionName) + } + + } +} + +func TestSegmentsForPrivateEndpointConnectionId(t *testing.T) { + segments := PrivateEndpointConnectionId{}.Segments() + if len(segments) == 0 { + t.Fatalf("PrivateEndpointConnectionId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/id_privatelinkservice.go b/resource-manager/network/2024-01-01/privatelinkservices/id_privatelinkservice.go new file mode 100644 index 00000000000..d88a974cca5 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/id_privatelinkservice.go @@ -0,0 +1,130 @@ +package privatelinkservices + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&PrivateLinkServiceId{}) +} + +var _ resourceids.ResourceId = &PrivateLinkServiceId{} + +// PrivateLinkServiceId is a struct representing the Resource ID for a Private Link Service +type PrivateLinkServiceId struct { + SubscriptionId string + ResourceGroupName string + PrivateLinkServiceName string +} + +// NewPrivateLinkServiceID returns a new PrivateLinkServiceId struct +func NewPrivateLinkServiceID(subscriptionId string, resourceGroupName string, privateLinkServiceName string) PrivateLinkServiceId { + return PrivateLinkServiceId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + PrivateLinkServiceName: privateLinkServiceName, + } +} + +// ParsePrivateLinkServiceID parses 'input' into a PrivateLinkServiceId +func ParsePrivateLinkServiceID(input string) (*PrivateLinkServiceId, error) { + parser := resourceids.NewParserFromResourceIdType(&PrivateLinkServiceId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PrivateLinkServiceId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParsePrivateLinkServiceIDInsensitively parses 'input' case-insensitively into a PrivateLinkServiceId +// note: this method should only be used for API response data and not user input +func ParsePrivateLinkServiceIDInsensitively(input string) (*PrivateLinkServiceId, error) { + parser := resourceids.NewParserFromResourceIdType(&PrivateLinkServiceId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PrivateLinkServiceId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *PrivateLinkServiceId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.PrivateLinkServiceName, ok = input.Parsed["privateLinkServiceName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "privateLinkServiceName", input) + } + + return nil +} + +// ValidatePrivateLinkServiceID checks that 'input' can be parsed as a Private Link Service ID +func ValidatePrivateLinkServiceID(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 := ParsePrivateLinkServiceID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Private Link Service ID +func (id PrivateLinkServiceId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/privateLinkServices/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.PrivateLinkServiceName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Private Link Service ID +func (id PrivateLinkServiceId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticPrivateLinkServices", "privateLinkServices", "privateLinkServices"), + resourceids.UserSpecifiedSegment("privateLinkServiceName", "privateLinkServiceValue"), + } +} + +// String returns a human-readable description of this Private Link Service ID +func (id PrivateLinkServiceId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Private Link Service Name: %q", id.PrivateLinkServiceName), + } + return fmt.Sprintf("Private Link Service (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/id_privatelinkservice_test.go b/resource-manager/network/2024-01-01/privatelinkservices/id_privatelinkservice_test.go new file mode 100644 index 00000000000..08f7741100b --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/id_privatelinkservice_test.go @@ -0,0 +1,282 @@ +package privatelinkservices + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &PrivateLinkServiceId{} + +func TestNewPrivateLinkServiceID(t *testing.T) { + id := NewPrivateLinkServiceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateLinkServiceValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.PrivateLinkServiceName != "privateLinkServiceValue" { + t.Fatalf("Expected %q but got %q for Segment 'PrivateLinkServiceName'", id.PrivateLinkServiceName, "privateLinkServiceValue") + } +} + +func TestFormatPrivateLinkServiceID(t *testing.T) { + actual := NewPrivateLinkServiceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "privateLinkServiceValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateLinkServices/privateLinkServiceValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParsePrivateLinkServiceID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PrivateLinkServiceId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateLinkServices", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateLinkServices/privateLinkServiceValue", + Expected: &PrivateLinkServiceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + PrivateLinkServiceName: "privateLinkServiceValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateLinkServices/privateLinkServiceValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePrivateLinkServiceID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.PrivateLinkServiceName != v.Expected.PrivateLinkServiceName { + t.Fatalf("Expected %q but got %q for PrivateLinkServiceName", v.Expected.PrivateLinkServiceName, actual.PrivateLinkServiceName) + } + + } +} + +func TestParsePrivateLinkServiceIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PrivateLinkServiceId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateLinkServices", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/pRiVaTeLiNkSeRvIcEs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateLinkServices/privateLinkServiceValue", + Expected: &PrivateLinkServiceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + PrivateLinkServiceName: "privateLinkServiceValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/privateLinkServices/privateLinkServiceValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/pRiVaTeLiNkSeRvIcEs/pRiVaTeLiNkSeRvIcEvAlUe", + Expected: &PrivateLinkServiceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + PrivateLinkServiceName: "pRiVaTeLiNkSeRvIcEvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/pRiVaTeLiNkSeRvIcEs/pRiVaTeLiNkSeRvIcEvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePrivateLinkServiceIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.PrivateLinkServiceName != v.Expected.PrivateLinkServiceName { + t.Fatalf("Expected %q but got %q for PrivateLinkServiceName", v.Expected.PrivateLinkServiceName, actual.PrivateLinkServiceName) + } + + } +} + +func TestSegmentsForPrivateLinkServiceId(t *testing.T) { + segments := PrivateLinkServiceId{}.Segments() + if len(segments) == 0 { + t.Fatalf("PrivateLinkServiceId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/id_providerlocation.go b/resource-manager/network/2024-01-01/privatelinkservices/id_providerlocation.go new file mode 100644 index 00000000000..c7433defeb6 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/id_providerlocation.go @@ -0,0 +1,130 @@ +package privatelinkservices + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ProviderLocationId{}) +} + +var _ resourceids.ResourceId = &ProviderLocationId{} + +// ProviderLocationId is a struct representing the Resource ID for a Provider Location +type ProviderLocationId struct { + SubscriptionId string + ResourceGroupName string + LocationName string +} + +// NewProviderLocationID returns a new ProviderLocationId struct +func NewProviderLocationID(subscriptionId string, resourceGroupName string, locationName string) ProviderLocationId { + return ProviderLocationId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + LocationName: locationName, + } +} + +// ParseProviderLocationID parses 'input' into a ProviderLocationId +func ParseProviderLocationID(input string) (*ProviderLocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&ProviderLocationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ProviderLocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseProviderLocationIDInsensitively parses 'input' case-insensitively into a ProviderLocationId +// note: this method should only be used for API response data and not user input +func ParseProviderLocationIDInsensitively(input string) (*ProviderLocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&ProviderLocationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ProviderLocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ProviderLocationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.LocationName, ok = input.Parsed["locationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "locationName", input) + } + + return nil +} + +// ValidateProviderLocationID checks that 'input' can be parsed as a Provider Location ID +func ValidateProviderLocationID(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 := ParseProviderLocationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Provider Location ID +func (id ProviderLocationId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/locations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.LocationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Provider Location ID +func (id ProviderLocationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLocations", "locations", "locations"), + resourceids.UserSpecifiedSegment("locationName", "locationValue"), + } +} + +// String returns a human-readable description of this Provider Location ID +func (id ProviderLocationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Location Name: %q", id.LocationName), + } + return fmt.Sprintf("Provider Location (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/id_providerlocation_test.go b/resource-manager/network/2024-01-01/privatelinkservices/id_providerlocation_test.go new file mode 100644 index 00000000000..383f542a49f --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/id_providerlocation_test.go @@ -0,0 +1,282 @@ +package privatelinkservices + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ProviderLocationId{} + +func TestNewProviderLocationID(t *testing.T) { + id := NewProviderLocationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "locationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.LocationName != "locationValue" { + t.Fatalf("Expected %q but got %q for Segment 'LocationName'", id.LocationName, "locationValue") + } +} + +func TestFormatProviderLocationID(t *testing.T) { + actual := NewProviderLocationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "locationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations/locationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseProviderLocationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ProviderLocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations/locationValue", + Expected: &ProviderLocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseProviderLocationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestParseProviderLocationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ProviderLocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations/locationValue", + Expected: &ProviderLocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe", + Expected: &ProviderLocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + LocationName: "lOcAtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseProviderLocationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestSegmentsForProviderLocationId(t *testing.T) { + segments := ProviderLocationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ProviderLocationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/method_checkprivatelinkservicevisibility.go b/resource-manager/network/2024-01-01/privatelinkservices/method_checkprivatelinkservicevisibility.go new file mode 100644 index 00000000000..1e8a53a5ec7 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/method_checkprivatelinkservicevisibility.go @@ -0,0 +1,75 @@ +package privatelinkservices + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CheckPrivateLinkServiceVisibilityOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *PrivateLinkServiceVisibility +} + +// CheckPrivateLinkServiceVisibility ... +func (c PrivateLinkServicesClient) CheckPrivateLinkServiceVisibility(ctx context.Context, id LocationId, input CheckPrivateLinkServiceVisibilityRequest) (result CheckPrivateLinkServiceVisibilityOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/checkPrivateLinkServiceVisibility", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CheckPrivateLinkServiceVisibilityThenPoll performs CheckPrivateLinkServiceVisibility then polls until it's completed +func (c PrivateLinkServicesClient) CheckPrivateLinkServiceVisibilityThenPoll(ctx context.Context, id LocationId, input CheckPrivateLinkServiceVisibilityRequest) error { + result, err := c.CheckPrivateLinkServiceVisibility(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CheckPrivateLinkServiceVisibility: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CheckPrivateLinkServiceVisibility: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/method_checkprivatelinkservicevisibilitybyresourcegroup.go b/resource-manager/network/2024-01-01/privatelinkservices/method_checkprivatelinkservicevisibilitybyresourcegroup.go new file mode 100644 index 00000000000..22023c980d0 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/method_checkprivatelinkservicevisibilitybyresourcegroup.go @@ -0,0 +1,75 @@ +package privatelinkservices + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CheckPrivateLinkServiceVisibilityByResourceGroupOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *PrivateLinkServiceVisibility +} + +// CheckPrivateLinkServiceVisibilityByResourceGroup ... +func (c PrivateLinkServicesClient) CheckPrivateLinkServiceVisibilityByResourceGroup(ctx context.Context, id ProviderLocationId, input CheckPrivateLinkServiceVisibilityRequest) (result CheckPrivateLinkServiceVisibilityByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/checkPrivateLinkServiceVisibility", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CheckPrivateLinkServiceVisibilityByResourceGroupThenPoll performs CheckPrivateLinkServiceVisibilityByResourceGroup then polls until it's completed +func (c PrivateLinkServicesClient) CheckPrivateLinkServiceVisibilityByResourceGroupThenPoll(ctx context.Context, id ProviderLocationId, input CheckPrivateLinkServiceVisibilityRequest) error { + result, err := c.CheckPrivateLinkServiceVisibilityByResourceGroup(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CheckPrivateLinkServiceVisibilityByResourceGroup: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CheckPrivateLinkServiceVisibilityByResourceGroup: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/method_createorupdate.go b/resource-manager/network/2024-01-01/privatelinkservices/method_createorupdate.go new file mode 100644 index 00000000000..46962733498 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/method_createorupdate.go @@ -0,0 +1,75 @@ +package privatelinkservices + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *PrivateLinkService +} + +// CreateOrUpdate ... +func (c PrivateLinkServicesClient) CreateOrUpdate(ctx context.Context, id PrivateLinkServiceId, input PrivateLinkService) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c PrivateLinkServicesClient) CreateOrUpdateThenPoll(ctx context.Context, id PrivateLinkServiceId, input PrivateLinkService) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/method_delete.go b/resource-manager/network/2024-01-01/privatelinkservices/method_delete.go new file mode 100644 index 00000000000..d518ac5aede --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/method_delete.go @@ -0,0 +1,71 @@ +package privatelinkservices + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c PrivateLinkServicesClient) Delete(ctx context.Context, id PrivateLinkServiceId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c PrivateLinkServicesClient) DeleteThenPoll(ctx context.Context, id PrivateLinkServiceId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/method_deleteprivateendpointconnection.go b/resource-manager/network/2024-01-01/privatelinkservices/method_deleteprivateendpointconnection.go new file mode 100644 index 00000000000..92593766f11 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/method_deleteprivateendpointconnection.go @@ -0,0 +1,71 @@ +package privatelinkservices + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeletePrivateEndpointConnectionOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// DeletePrivateEndpointConnection ... +func (c PrivateLinkServicesClient) DeletePrivateEndpointConnection(ctx context.Context, id PrivateEndpointConnectionId) (result DeletePrivateEndpointConnectionOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeletePrivateEndpointConnectionThenPoll performs DeletePrivateEndpointConnection then polls until it's completed +func (c PrivateLinkServicesClient) DeletePrivateEndpointConnectionThenPoll(ctx context.Context, id PrivateEndpointConnectionId) error { + result, err := c.DeletePrivateEndpointConnection(ctx, id) + if err != nil { + return fmt.Errorf("performing DeletePrivateEndpointConnection: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after DeletePrivateEndpointConnection: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/method_get.go b/resource-manager/network/2024-01-01/privatelinkservices/method_get.go new file mode 100644 index 00000000000..cdd893b10fe --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/method_get.go @@ -0,0 +1,83 @@ +package privatelinkservices + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *PrivateLinkService +} + +type GetOperationOptions struct { + Expand *string +} + +func DefaultGetOperationOptions() GetOperationOptions { + return GetOperationOptions{} +} + +func (o GetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// Get ... +func (c PrivateLinkServicesClient) Get(ctx context.Context, id PrivateLinkServiceId, options GetOperationOptions) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model PrivateLinkService + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/method_getprivateendpointconnection.go b/resource-manager/network/2024-01-01/privatelinkservices/method_getprivateendpointconnection.go new file mode 100644 index 00000000000..1467bb48568 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/method_getprivateendpointconnection.go @@ -0,0 +1,83 @@ +package privatelinkservices + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetPrivateEndpointConnectionOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *PrivateEndpointConnection +} + +type GetPrivateEndpointConnectionOperationOptions struct { + Expand *string +} + +func DefaultGetPrivateEndpointConnectionOperationOptions() GetPrivateEndpointConnectionOperationOptions { + return GetPrivateEndpointConnectionOperationOptions{} +} + +func (o GetPrivateEndpointConnectionOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetPrivateEndpointConnectionOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetPrivateEndpointConnectionOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// GetPrivateEndpointConnection ... +func (c PrivateLinkServicesClient) GetPrivateEndpointConnection(ctx context.Context, id PrivateEndpointConnectionId, options GetPrivateEndpointConnectionOperationOptions) (result GetPrivateEndpointConnectionOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model PrivateEndpointConnection + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/method_list.go b/resource-manager/network/2024-01-01/privatelinkservices/method_list.go new file mode 100644 index 00000000000..81f52181d79 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/method_list.go @@ -0,0 +1,93 @@ +package privatelinkservices + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]PrivateLinkService +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []PrivateLinkService +} + +// List ... +func (c PrivateLinkServicesClient) List(ctx context.Context, id commonids.ResourceGroupId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/privateLinkServices", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]PrivateLinkService `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c PrivateLinkServicesClient) ListComplete(ctx context.Context, id commonids.ResourceGroupId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, PrivateLinkServiceOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c PrivateLinkServicesClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate PrivateLinkServiceOperationPredicate) (result ListCompleteResult, err error) { + items := make([]PrivateLinkService, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/method_listautoapprovedprivatelinkservices.go b/resource-manager/network/2024-01-01/privatelinkservices/method_listautoapprovedprivatelinkservices.go new file mode 100644 index 00000000000..3da4d7f36f9 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/method_listautoapprovedprivatelinkservices.go @@ -0,0 +1,92 @@ +package privatelinkservices + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAutoApprovedPrivateLinkServicesOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]AutoApprovedPrivateLinkService +} + +type ListAutoApprovedPrivateLinkServicesCompleteResult struct { + LatestHttpResponse *http.Response + Items []AutoApprovedPrivateLinkService +} + +// ListAutoApprovedPrivateLinkServices ... +func (c PrivateLinkServicesClient) ListAutoApprovedPrivateLinkServices(ctx context.Context, id LocationId) (result ListAutoApprovedPrivateLinkServicesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/autoApprovedPrivateLinkServices", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]AutoApprovedPrivateLinkService `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListAutoApprovedPrivateLinkServicesComplete retrieves all the results into a single object +func (c PrivateLinkServicesClient) ListAutoApprovedPrivateLinkServicesComplete(ctx context.Context, id LocationId) (ListAutoApprovedPrivateLinkServicesCompleteResult, error) { + return c.ListAutoApprovedPrivateLinkServicesCompleteMatchingPredicate(ctx, id, AutoApprovedPrivateLinkServiceOperationPredicate{}) +} + +// ListAutoApprovedPrivateLinkServicesCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c PrivateLinkServicesClient) ListAutoApprovedPrivateLinkServicesCompleteMatchingPredicate(ctx context.Context, id LocationId, predicate AutoApprovedPrivateLinkServiceOperationPredicate) (result ListAutoApprovedPrivateLinkServicesCompleteResult, err error) { + items := make([]AutoApprovedPrivateLinkService, 0) + + resp, err := c.ListAutoApprovedPrivateLinkServices(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListAutoApprovedPrivateLinkServicesCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/method_listautoapprovedprivatelinkservicesbyresourcegroup.go b/resource-manager/network/2024-01-01/privatelinkservices/method_listautoapprovedprivatelinkservicesbyresourcegroup.go new file mode 100644 index 00000000000..82767396e1d --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/method_listautoapprovedprivatelinkservicesbyresourcegroup.go @@ -0,0 +1,92 @@ +package privatelinkservices + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAutoApprovedPrivateLinkServicesByResourceGroupOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]AutoApprovedPrivateLinkService +} + +type ListAutoApprovedPrivateLinkServicesByResourceGroupCompleteResult struct { + LatestHttpResponse *http.Response + Items []AutoApprovedPrivateLinkService +} + +// ListAutoApprovedPrivateLinkServicesByResourceGroup ... +func (c PrivateLinkServicesClient) ListAutoApprovedPrivateLinkServicesByResourceGroup(ctx context.Context, id ProviderLocationId) (result ListAutoApprovedPrivateLinkServicesByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/autoApprovedPrivateLinkServices", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]AutoApprovedPrivateLinkService `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListAutoApprovedPrivateLinkServicesByResourceGroupComplete retrieves all the results into a single object +func (c PrivateLinkServicesClient) ListAutoApprovedPrivateLinkServicesByResourceGroupComplete(ctx context.Context, id ProviderLocationId) (ListAutoApprovedPrivateLinkServicesByResourceGroupCompleteResult, error) { + return c.ListAutoApprovedPrivateLinkServicesByResourceGroupCompleteMatchingPredicate(ctx, id, AutoApprovedPrivateLinkServiceOperationPredicate{}) +} + +// ListAutoApprovedPrivateLinkServicesByResourceGroupCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c PrivateLinkServicesClient) ListAutoApprovedPrivateLinkServicesByResourceGroupCompleteMatchingPredicate(ctx context.Context, id ProviderLocationId, predicate AutoApprovedPrivateLinkServiceOperationPredicate) (result ListAutoApprovedPrivateLinkServicesByResourceGroupCompleteResult, err error) { + items := make([]AutoApprovedPrivateLinkService, 0) + + resp, err := c.ListAutoApprovedPrivateLinkServicesByResourceGroup(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListAutoApprovedPrivateLinkServicesByResourceGroupCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/method_listbysubscription.go b/resource-manager/network/2024-01-01/privatelinkservices/method_listbysubscription.go new file mode 100644 index 00000000000..226fcfd8bca --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/method_listbysubscription.go @@ -0,0 +1,93 @@ +package privatelinkservices + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListBySubscriptionOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]PrivateLinkService +} + +type ListBySubscriptionCompleteResult struct { + LatestHttpResponse *http.Response + Items []PrivateLinkService +} + +// ListBySubscription ... +func (c PrivateLinkServicesClient) ListBySubscription(ctx context.Context, id commonids.SubscriptionId) (result ListBySubscriptionOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/privateLinkServices", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]PrivateLinkService `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListBySubscriptionComplete retrieves all the results into a single object +func (c PrivateLinkServicesClient) ListBySubscriptionComplete(ctx context.Context, id commonids.SubscriptionId) (ListBySubscriptionCompleteResult, error) { + return c.ListBySubscriptionCompleteMatchingPredicate(ctx, id, PrivateLinkServiceOperationPredicate{}) +} + +// ListBySubscriptionCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c PrivateLinkServicesClient) ListBySubscriptionCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate PrivateLinkServiceOperationPredicate) (result ListBySubscriptionCompleteResult, err error) { + items := make([]PrivateLinkService, 0) + + resp, err := c.ListBySubscription(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListBySubscriptionCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/method_listprivateendpointconnections.go b/resource-manager/network/2024-01-01/privatelinkservices/method_listprivateendpointconnections.go new file mode 100644 index 00000000000..2c8c0ae359a --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/method_listprivateendpointconnections.go @@ -0,0 +1,92 @@ +package privatelinkservices + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListPrivateEndpointConnectionsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]PrivateEndpointConnection +} + +type ListPrivateEndpointConnectionsCompleteResult struct { + LatestHttpResponse *http.Response + Items []PrivateEndpointConnection +} + +// ListPrivateEndpointConnections ... +func (c PrivateLinkServicesClient) ListPrivateEndpointConnections(ctx context.Context, id PrivateLinkServiceId) (result ListPrivateEndpointConnectionsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/privateEndpointConnections", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]PrivateEndpointConnection `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListPrivateEndpointConnectionsComplete retrieves all the results into a single object +func (c PrivateLinkServicesClient) ListPrivateEndpointConnectionsComplete(ctx context.Context, id PrivateLinkServiceId) (ListPrivateEndpointConnectionsCompleteResult, error) { + return c.ListPrivateEndpointConnectionsCompleteMatchingPredicate(ctx, id, PrivateEndpointConnectionOperationPredicate{}) +} + +// ListPrivateEndpointConnectionsCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c PrivateLinkServicesClient) ListPrivateEndpointConnectionsCompleteMatchingPredicate(ctx context.Context, id PrivateLinkServiceId, predicate PrivateEndpointConnectionOperationPredicate) (result ListPrivateEndpointConnectionsCompleteResult, err error) { + items := make([]PrivateEndpointConnection, 0) + + resp, err := c.ListPrivateEndpointConnections(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListPrivateEndpointConnectionsCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/method_updateprivateendpointconnection.go b/resource-manager/network/2024-01-01/privatelinkservices/method_updateprivateendpointconnection.go new file mode 100644 index 00000000000..90a383fd3a1 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/method_updateprivateendpointconnection.go @@ -0,0 +1,58 @@ +package privatelinkservices + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdatePrivateEndpointConnectionOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *PrivateEndpointConnection +} + +// UpdatePrivateEndpointConnection ... +func (c PrivateLinkServicesClient) UpdatePrivateEndpointConnection(ctx context.Context, id PrivateEndpointConnectionId, input PrivateEndpointConnection) (result UpdatePrivateEndpointConnectionOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model PrivateEndpointConnection + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_applicationgatewaybackendaddress.go b/resource-manager/network/2024-01-01/privatelinkservices/model_applicationgatewaybackendaddress.go new file mode 100644 index 00000000000..6e064132ab8 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_applicationgatewaybackendaddress.go @@ -0,0 +1,9 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddress struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_applicationgatewaybackendaddresspool.go b/resource-manager/network/2024-01-01/privatelinkservices/model_applicationgatewaybackendaddresspool.go new file mode 100644 index 00000000000..2b8b30f76cf --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_applicationgatewaybackendaddresspool.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_applicationgatewaybackendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_applicationgatewaybackendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..687ec802ef4 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_applicationgatewaybackendaddresspoolpropertiesformat.go @@ -0,0 +1,10 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPoolPropertiesFormat struct { + BackendAddresses *[]ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"` + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_applicationgatewayipconfiguration.go b/resource-manager/network/2024-01-01/privatelinkservices/model_applicationgatewayipconfiguration.go new file mode 100644 index 00000000000..23747316443 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_applicationgatewayipconfiguration.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_applicationgatewayipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_applicationgatewayipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..bc231fd9d60 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_applicationgatewayipconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/privatelinkservices/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..102038ead97 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..b9a224260e0 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_autoapprovedprivatelinkservice.go b/resource-manager/network/2024-01-01/privatelinkservices/model_autoapprovedprivatelinkservice.go new file mode 100644 index 00000000000..e8eb368b9fd --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_autoapprovedprivatelinkservice.go @@ -0,0 +1,8 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AutoApprovedPrivateLinkService struct { + PrivateLinkService *string `json:"privateLinkService,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_backendaddresspool.go b/resource-manager/network/2024-01-01/privatelinkservices/model_backendaddresspool.go new file mode 100644 index 00000000000..e621fc409e7 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_backendaddresspool.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_backendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_backendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..4fe2c6dad02 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_backendaddresspoolpropertiesformat.go @@ -0,0 +1,19 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPoolPropertiesFormat struct { + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + DrainPeriodInSeconds *int64 `json:"drainPeriodInSeconds,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancerBackendAddresses *[]LoadBalancerBackendAddress `json:"loadBalancerBackendAddresses,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + Location *string `json:"location,omitempty"` + OutboundRule *SubResource `json:"outboundRule,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SyncMode *SyncMode `json:"syncMode,omitempty"` + TunnelInterfaces *[]GatewayLoadBalancerTunnelInterface `json:"tunnelInterfaces,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_checkprivatelinkservicevisibilityrequest.go b/resource-manager/network/2024-01-01/privatelinkservices/model_checkprivatelinkservicevisibilityrequest.go new file mode 100644 index 00000000000..d338d570a52 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_checkprivatelinkservicevisibilityrequest.go @@ -0,0 +1,8 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CheckPrivateLinkServiceVisibilityRequest struct { + PrivateLinkServiceAlias *string `json:"privateLinkServiceAlias,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_customdnsconfigpropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_customdnsconfigpropertiesformat.go new file mode 100644 index 00000000000..5bb831424b8 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_customdnsconfigpropertiesformat.go @@ -0,0 +1,9 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomDnsConfigPropertiesFormat struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_ddossettings.go b/resource-manager/network/2024-01-01/privatelinkservices/model_ddossettings.go new file mode 100644 index 00000000000..a88f6af3346 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_ddossettings.go @@ -0,0 +1,9 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettings struct { + DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"` + ProtectionMode *DdosSettingsProtectionMode `json:"protectionMode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_delegation.go b/resource-manager/network/2024-01-01/privatelinkservices/model_delegation.go new file mode 100644 index 00000000000..861d7dccc33 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_delegation.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Delegation struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceDelegationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_flowlog.go b/resource-manager/network/2024-01-01/privatelinkservices/model_flowlog.go new file mode 100644 index 00000000000..a7a48567b58 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_flowlog.go @@ -0,0 +1,19 @@ +package privatelinkservices + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLog struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FlowLogPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/privatelinkservices/model_flowlogformatparameters.go new file mode 100644 index 00000000000..e5d4b9b0d2f --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_flowlogpropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_flowlogpropertiesformat.go new file mode 100644 index 00000000000..477b2ca2cb0 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_flowlogpropertiesformat.go @@ -0,0 +1,15 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogPropertiesFormat struct { + Enabled *bool `json:"enabled,omitempty"` + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` + TargetResourceGuid *string `json:"targetResourceGuid,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_frontendipconfiguration.go b/resource-manager/network/2024-01-01/privatelinkservices/model_frontendipconfiguration.go new file mode 100644 index 00000000000..c4908a4dc2b --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_frontendipconfiguration.go @@ -0,0 +1,17 @@ +package privatelinkservices + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_frontendipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_frontendipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..2a655d02dfc --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_frontendipconfigurationpropertiesformat.go @@ -0,0 +1,19 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfigurationPropertiesFormat struct { + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + InboundNatPools *[]SubResource `json:"inboundNatPools,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_gatewayloadbalancertunnelinterface.go b/resource-manager/network/2024-01-01/privatelinkservices/model_gatewayloadbalancertunnelinterface.go new file mode 100644 index 00000000000..57e817e63b2 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_gatewayloadbalancertunnelinterface.go @@ -0,0 +1,11 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayLoadBalancerTunnelInterface struct { + Identifier *int64 `json:"identifier,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *GatewayLoadBalancerTunnelProtocol `json:"protocol,omitempty"` + Type *GatewayLoadBalancerTunnelInterfaceType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_inboundnatrule.go b/resource-manager/network/2024-01-01/privatelinkservices/model_inboundnatrule.go new file mode 100644 index 00000000000..acd7d0aa709 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_inboundnatrule.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundNatRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_inboundnatrulepropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_inboundnatrulepropertiesformat.go new file mode 100644 index 00000000000..8bf73e3faf8 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_inboundnatrulepropertiesformat.go @@ -0,0 +1,19 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendIPConfiguration *NetworkInterfaceIPConfiguration `json:"backendIPConfiguration,omitempty"` + BackendPort *int64 `json:"backendPort,omitempty"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + FrontendPortRangeEnd *int64 `json:"frontendPortRangeEnd,omitempty"` + FrontendPortRangeStart *int64 `json:"frontendPortRangeStart,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol *TransportProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_ipconfiguration.go b/resource-manager/network/2024-01-01/privatelinkservices/model_ipconfiguration.go new file mode 100644 index 00000000000..3ad6065a48e --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_ipconfiguration.go @@ -0,0 +1,11 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_ipconfigurationprofile.go b/resource-manager/network/2024-01-01/privatelinkservices/model_ipconfigurationprofile.go new file mode 100644 index 00000000000..0b4a7cbc860 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_ipconfigurationprofile.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationProfilePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_ipconfigurationprofilepropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_ipconfigurationprofilepropertiesformat.go new file mode 100644 index 00000000000..f1bae207cc2 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_ipconfigurationprofilepropertiesformat.go @@ -0,0 +1,9 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfilePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_ipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_ipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..2852a27e2c3 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_ipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_iptag.go b/resource-manager/network/2024-01-01/privatelinkservices/model_iptag.go new file mode 100644 index 00000000000..a7e33392ad2 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_iptag.go @@ -0,0 +1,9 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPTag struct { + IPTagType *string `json:"ipTagType,omitempty"` + Tag *string `json:"tag,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_loadbalancerbackendaddress.go b/resource-manager/network/2024-01-01/privatelinkservices/model_loadbalancerbackendaddress.go new file mode 100644 index 00000000000..09bc3c7f06c --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_loadbalancerbackendaddress.go @@ -0,0 +1,9 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddress struct { + Name *string `json:"name,omitempty"` + Properties *LoadBalancerBackendAddressPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_loadbalancerbackendaddresspropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_loadbalancerbackendaddresspropertiesformat.go new file mode 100644 index 00000000000..a567721ac6c --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_loadbalancerbackendaddresspropertiesformat.go @@ -0,0 +1,14 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPropertiesFormat struct { + AdminState *LoadBalancerBackendAddressAdminState `json:"adminState,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + InboundNatRulesPortMapping *[]NatRulePortMapping `json:"inboundNatRulesPortMapping,omitempty"` + LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIPConfiguration,omitempty"` + NetworkInterfaceIPConfiguration *SubResource `json:"networkInterfaceIPConfiguration,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_natgateway.go b/resource-manager/network/2024-01-01/privatelinkservices/model_natgateway.go new file mode 100644 index 00000000000..077d2bc5d5f --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_natgateway.go @@ -0,0 +1,20 @@ +package privatelinkservices + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"` + Sku *NatGatewaySku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_natgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_natgatewaypropertiesformat.go new file mode 100644 index 00000000000..85150f10453 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_natgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayPropertiesFormat struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]SubResource `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_natgatewaysku.go b/resource-manager/network/2024-01-01/privatelinkservices/model_natgatewaysku.go new file mode 100644 index 00000000000..ceae4c33372 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_natgatewaysku.go @@ -0,0 +1,8 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySku struct { + Name *NatGatewaySkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_natruleportmapping.go b/resource-manager/network/2024-01-01/privatelinkservices/model_natruleportmapping.go new file mode 100644 index 00000000000..e081a336375 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_natruleportmapping.go @@ -0,0 +1,10 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulePortMapping struct { + BackendPort *int64 `json:"backendPort,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + InboundNatRuleName *string `json:"inboundNatRuleName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterface.go b/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterface.go new file mode 100644 index 00000000000..6ac282778d7 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterface.go @@ -0,0 +1,19 @@ +package privatelinkservices + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterface struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfacePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterfacednssettings.go b/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterfacednssettings.go new file mode 100644 index 00000000000..b7993919c62 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterfacednssettings.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceDnsSettings struct { + AppliedDnsServers *[]string `json:"appliedDnsServers,omitempty"` + DnsServers *[]string `json:"dnsServers,omitempty"` + InternalDnsNameLabel *string `json:"internalDnsNameLabel,omitempty"` + InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty"` + InternalFqdn *string `json:"internalFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterfaceipconfiguration.go b/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterfaceipconfiguration.go new file mode 100644 index 00000000000..766f136f852 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterfaceipconfiguration.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go b/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go new file mode 100644 index 00000000000..4e4cefa66b4 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go @@ -0,0 +1,10 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties struct { + Fqdns *[]string `json:"fqdns,omitempty"` + GroupId *string `json:"groupId,omitempty"` + RequiredMemberName *string `json:"requiredMemberName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterfaceipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterfaceipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..9574d828560 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterfaceipconfigurationpropertiesformat.go @@ -0,0 +1,22 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPropertiesFormat struct { + ApplicationGatewayBackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"applicationGatewayBackendAddressPools,omitempty"` + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + LoadBalancerBackendAddressPools *[]BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"` + LoadBalancerInboundNatRules *[]InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressPrefixLength *int64 `json:"privateIPAddressPrefixLength,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + PrivateLinkConnectionProperties *NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties `json:"privateLinkConnectionProperties,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` + VirtualNetworkTaps *[]VirtualNetworkTap `json:"virtualNetworkTaps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterfacepropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterfacepropertiesformat.go new file mode 100644 index 00000000000..1c2bfc6ae43 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterfacepropertiesformat.go @@ -0,0 +1,29 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfacePropertiesFormat struct { + AuxiliaryMode *NetworkInterfaceAuxiliaryMode `json:"auxiliaryMode,omitempty"` + AuxiliarySku *NetworkInterfaceAuxiliarySku `json:"auxiliarySku,omitempty"` + DisableTcpStateTracking *bool `json:"disableTcpStateTracking,omitempty"` + DnsSettings *NetworkInterfaceDnsSettings `json:"dnsSettings,omitempty"` + DscpConfiguration *SubResource `json:"dscpConfiguration,omitempty"` + EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"` + EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"` + HostedWorkloads *[]string `json:"hostedWorkloads,omitempty"` + IPConfigurations *[]NetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + MacAddress *string `json:"macAddress,omitempty"` + MigrationPhase *NetworkInterfaceMigrationPhase `json:"migrationPhase,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + NicType *NetworkInterfaceNicType `json:"nicType,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkService *PrivateLinkService `json:"privateLinkService,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + TapConfigurations *[]NetworkInterfaceTapConfiguration `json:"tapConfigurations,omitempty"` + VirtualMachine *SubResource `json:"virtualMachine,omitempty"` + VnetEncryptionSupported *bool `json:"vnetEncryptionSupported,omitempty"` + WorkloadType *string `json:"workloadType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterfacetapconfiguration.go b/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterfacetapconfiguration.go new file mode 100644 index 00000000000..66b7aeeab62 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterfacetapconfiguration.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceTapConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterfacetapconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterfacetapconfigurationpropertiesformat.go new file mode 100644 index 00000000000..307c8944af0 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_networkinterfacetapconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualNetworkTap *VirtualNetworkTap `json:"virtualNetworkTap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_networksecuritygroup.go b/resource-manager/network/2024-01-01/privatelinkservices/model_networksecuritygroup.go new file mode 100644 index 00000000000..1a2792e0f88 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_networksecuritygroup.go @@ -0,0 +1,14 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_networksecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_networksecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..7990d29a1bb --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_networksecuritygrouppropertiesformat.go @@ -0,0 +1,15 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupPropertiesFormat struct { + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + FlowLogs *[]FlowLog `json:"flowLogs,omitempty"` + FlushConnection *bool `json:"flushConnection,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_privateendpoint.go b/resource-manager/network/2024-01-01/privatelinkservices/model_privateendpoint.go new file mode 100644 index 00000000000..d3a77eea754 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_privateendpoint.go @@ -0,0 +1,19 @@ +package privatelinkservices + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpoint struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_privateendpointconnection.go b/resource-manager/network/2024-01-01/privatelinkservices/model_privateendpointconnection.go new file mode 100644 index 00000000000..bb755a70536 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_privateendpointconnection.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_privateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/privatelinkservices/model_privateendpointconnectionproperties.go new file mode 100644 index 00000000000..5966a68df2a --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_privateendpointconnectionproperties.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateEndpointLocation *string `json:"privateEndpointLocation,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_privateendpointipconfiguration.go b/resource-manager/network/2024-01-01/privatelinkservices/model_privateendpointipconfiguration.go new file mode 100644 index 00000000000..6327ca28ff1 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_privateendpointipconfiguration.go @@ -0,0 +1,11 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_privateendpointipconfigurationproperties.go b/resource-manager/network/2024-01-01/privatelinkservices/model_privateendpointipconfigurationproperties.go new file mode 100644 index 00000000000..5e70530aabf --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_privateendpointipconfigurationproperties.go @@ -0,0 +1,10 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfigurationProperties struct { + GroupId *string `json:"groupId,omitempty"` + MemberName *string `json:"memberName,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_privateendpointproperties.go b/resource-manager/network/2024-01-01/privatelinkservices/model_privateendpointproperties.go new file mode 100644 index 00000000000..4d6d18b46a5 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_privateendpointproperties.go @@ -0,0 +1,16 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointProperties struct { + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + CustomDnsConfigs *[]CustomDnsConfigPropertiesFormat `json:"customDnsConfigs,omitempty"` + CustomNetworkInterfaceName *string `json:"customNetworkInterfaceName,omitempty"` + IPConfigurations *[]PrivateEndpointIPConfiguration `json:"ipConfigurations,omitempty"` + ManualPrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"manualPrivateLinkServiceConnections,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"privateLinkServiceConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkservice.go b/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkservice.go new file mode 100644 index 00000000000..4a672116bc2 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkservice.go @@ -0,0 +1,19 @@ +package privatelinkservices + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkService struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkserviceconnection.go b/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkserviceconnection.go new file mode 100644 index 00000000000..eb5e26941fd --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkserviceconnection.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkserviceconnectionproperties.go b/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkserviceconnectionproperties.go new file mode 100644 index 00000000000..a991f868fe8 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkserviceconnectionproperties.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionProperties struct { + GroupIds *[]string `json:"groupIds,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + PrivateLinkServiceId *string `json:"privateLinkServiceId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestMessage *string `json:"requestMessage,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkserviceconnectionstate.go b/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkserviceconnectionstate.go new file mode 100644 index 00000000000..f227e3d5e6c --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkserviceconnectionstate.go @@ -0,0 +1,10 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionState struct { + ActionsRequired *string `json:"actionsRequired,omitempty"` + Description *string `json:"description,omitempty"` + Status *string `json:"status,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkserviceipconfiguration.go b/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkserviceipconfiguration.go new file mode 100644 index 00000000000..de38cfbbde6 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkserviceipconfiguration.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkserviceipconfigurationproperties.go b/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkserviceipconfigurationproperties.go new file mode 100644 index 00000000000..b1809f0d71c --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkserviceipconfigurationproperties.go @@ -0,0 +1,13 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkserviceproperties.go b/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkserviceproperties.go new file mode 100644 index 00000000000..cc7c8cdc0f0 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkserviceproperties.go @@ -0,0 +1,17 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceProperties struct { + Alias *string `json:"alias,omitempty"` + AutoApproval *ResourceSet `json:"autoApproval,omitempty"` + EnableProxyProtocol *bool `json:"enableProxyProtocol,omitempty"` + Fqdns *[]string `json:"fqdns,omitempty"` + IPConfigurations *[]PrivateLinkServiceIPConfiguration `json:"ipConfigurations,omitempty"` + LoadBalancerFrontendIPConfigurations *[]FrontendIPConfiguration `json:"loadBalancerFrontendIpConfigurations,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Visibility *ResourceSet `json:"visibility,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkservicevisibility.go b/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkservicevisibility.go new file mode 100644 index 00000000000..38f95ae51a1 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_privatelinkservicevisibility.go @@ -0,0 +1,8 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceVisibility struct { + Visible *bool `json:"visible,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_publicipaddress.go b/resource-manager/network/2024-01-01/privatelinkservices/model_publicipaddress.go new file mode 100644 index 00000000000..cdcddd86935 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_publicipaddress.go @@ -0,0 +1,22 @@ +package privatelinkservices + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddress struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PublicIPAddressPropertiesFormat `json:"properties,omitempty"` + Sku *PublicIPAddressSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_publicipaddressdnssettings.go b/resource-manager/network/2024-01-01/privatelinkservices/model_publicipaddressdnssettings.go new file mode 100644 index 00000000000..268300edf0b --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_publicipaddressdnssettings.go @@ -0,0 +1,11 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressDnsSettings struct { + DomainNameLabel *string `json:"domainNameLabel,omitempty"` + DomainNameLabelScope *PublicIPAddressDnsSettingsDomainNameLabelScope `json:"domainNameLabelScope,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + ReverseFqdn *string `json:"reverseFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_publicipaddresspropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_publicipaddresspropertiesformat.go new file mode 100644 index 00000000000..2b9a811495b --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_publicipaddresspropertiesformat.go @@ -0,0 +1,23 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressPropertiesFormat struct { + DdosSettings *DdosSettings `json:"ddosSettings,omitempty"` + DeleteOption *DeleteOptions `json:"deleteOption,omitempty"` + DnsSettings *PublicIPAddressDnsSettings `json:"dnsSettings,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty"` + IPTags *[]IPTag `json:"ipTags,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + LinkedPublicIPAddress *PublicIPAddress `json:"linkedPublicIPAddress,omitempty"` + MigrationPhase *PublicIPAddressMigrationPhase `json:"migrationPhase,omitempty"` + NatGateway *NatGateway `json:"natGateway,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"` + PublicIPAllocationMethod *IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServicePublicIPAddress *PublicIPAddress `json:"servicePublicIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_publicipaddresssku.go b/resource-manager/network/2024-01-01/privatelinkservices/model_publicipaddresssku.go new file mode 100644 index 00000000000..80c5ef44ece --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_publicipaddresssku.go @@ -0,0 +1,9 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressSku struct { + Name *PublicIPAddressSkuName `json:"name,omitempty"` + Tier *PublicIPAddressSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_resourcenavigationlink.go b/resource-manager/network/2024-01-01/privatelinkservices/model_resourcenavigationlink.go new file mode 100644 index 00000000000..68ad67e053e --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_resourcenavigationlink.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ResourceNavigationLinkFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_resourcenavigationlinkformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_resourcenavigationlinkformat.go new file mode 100644 index 00000000000..57d6954d294 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_resourcenavigationlinkformat.go @@ -0,0 +1,10 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLinkFormat struct { + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_resourceset.go b/resource-manager/network/2024-01-01/privatelinkservices/model_resourceset.go new file mode 100644 index 00000000000..e923870d39f --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_resourceset.go @@ -0,0 +1,8 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceSet struct { + Subscriptions *[]string `json:"subscriptions,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/privatelinkservices/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..96f98884163 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_route.go b/resource-manager/network/2024-01-01/privatelinkservices/model_route.go new file mode 100644 index 00000000000..901d0eadcc6 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_route.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Route struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RoutePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_routepropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_routepropertiesformat.go new file mode 100644 index 00000000000..12088248968 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_routepropertiesformat.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutePropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + HasBgpOverride *bool `json:"hasBgpOverride,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + NextHopType RouteNextHopType `json:"nextHopType"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_routetable.go b/resource-manager/network/2024-01-01/privatelinkservices/model_routetable.go new file mode 100644 index 00000000000..8afe228ccfd --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_routetable.go @@ -0,0 +1,14 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTable struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteTablePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_routetablepropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_routetablepropertiesformat.go new file mode 100644 index 00000000000..6377cd08fd9 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_routetablepropertiesformat.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTablePropertiesFormat struct { + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Routes *[]Route `json:"routes,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_securityrule.go b/resource-manager/network/2024-01-01/privatelinkservices/model_securityrule.go new file mode 100644 index 00000000000..df53714a81c --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_securityrule.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_securityrulepropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_securityrulepropertiesformat.go new file mode 100644 index 00000000000..52b151efed9 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_securityrulepropertiesformat.go @@ -0,0 +1,23 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulePropertiesFormat struct { + Access SecurityRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction SecurityRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_serviceassociationlink.go b/resource-manager/network/2024-01-01/privatelinkservices/model_serviceassociationlink.go new file mode 100644 index 00000000000..5f9234cbb82 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_serviceassociationlink.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceAssociationLinkPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_serviceassociationlinkpropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_serviceassociationlinkpropertiesformat.go new file mode 100644 index 00000000000..87f29c8ca65 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_serviceassociationlinkpropertiesformat.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLinkPropertiesFormat struct { + AllowDelete *bool `json:"allowDelete,omitempty"` + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + Locations *[]string `json:"locations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_servicedelegationpropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_servicedelegationpropertiesformat.go new file mode 100644 index 00000000000..2ad5375c2ca --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_servicedelegationpropertiesformat.go @@ -0,0 +1,10 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceDelegationPropertiesFormat struct { + Actions *[]string `json:"actions,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_serviceendpointpolicy.go b/resource-manager/network/2024-01-01/privatelinkservices/model_serviceendpointpolicy.go new file mode 100644 index 00000000000..c93c759f93a --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_serviceendpointpolicy.go @@ -0,0 +1,15 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Kind *string `json:"kind,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_serviceendpointpolicydefinition.go b/resource-manager/network/2024-01-01/privatelinkservices/model_serviceendpointpolicydefinition.go new file mode 100644 index 00000000000..d1116eb2a61 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_serviceendpointpolicydefinition.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinition struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_serviceendpointpolicydefinitionpropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_serviceendpointpolicydefinitionpropertiesformat.go new file mode 100644 index 00000000000..7f68e9513e3 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_serviceendpointpolicydefinitionpropertiesformat.go @@ -0,0 +1,11 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionPropertiesFormat struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` + ServiceResources *[]string `json:"serviceResources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_serviceendpointpolicypropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_serviceendpointpolicypropertiesformat.go new file mode 100644 index 00000000000..5af6f94d80f --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_serviceendpointpolicypropertiesformat.go @@ -0,0 +1,13 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyPropertiesFormat struct { + ContextualServiceEndpointPolicies *[]string `json:"contextualServiceEndpointPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServiceAlias *string `json:"serviceAlias,omitempty"` + ServiceEndpointPolicyDefinitions *[]ServiceEndpointPolicyDefinition `json:"serviceEndpointPolicyDefinitions,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_serviceendpointpropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_serviceendpointpropertiesformat.go new file mode 100644 index 00000000000..db38090185b --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_serviceendpointpropertiesformat.go @@ -0,0 +1,11 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPropertiesFormat struct { + Locations *[]string `json:"locations,omitempty"` + NetworkIdentifier *SubResource `json:"networkIdentifier,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_subnet.go b/resource-manager/network/2024-01-01/privatelinkservices/model_subnet.go new file mode 100644 index 00000000000..afb102ed10a --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_subnet.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Subnet struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SubnetPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_subnetpropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_subnetpropertiesformat.go new file mode 100644 index 00000000000..223c45fd44d --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_subnetpropertiesformat.go @@ -0,0 +1,28 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + ApplicationGatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"applicationGatewayIPConfigurations,omitempty"` + DefaultOutboundAccess *bool `json:"defaultOutboundAccess,omitempty"` + Delegations *[]Delegation `json:"delegations,omitempty"` + IPAllocations *[]SubResource `json:"ipAllocations,omitempty"` + IPConfigurationProfiles *[]IPConfigurationProfile `json:"ipConfigurationProfiles,omitempty"` + IPConfigurations *[]IPConfiguration `json:"ipConfigurations,omitempty"` + NatGateway *SubResource `json:"natGateway,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + PrivateEndpointNetworkPolicies *VirtualNetworkPrivateEndpointNetworkPolicies `json:"privateEndpointNetworkPolicies,omitempty"` + PrivateEndpoints *[]PrivateEndpoint `json:"privateEndpoints,omitempty"` + PrivateLinkServiceNetworkPolicies *VirtualNetworkPrivateLinkServiceNetworkPolicies `json:"privateLinkServiceNetworkPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Purpose *string `json:"purpose,omitempty"` + ResourceNavigationLinks *[]ResourceNavigationLink `json:"resourceNavigationLinks,omitempty"` + RouteTable *RouteTable `json:"routeTable,omitempty"` + ServiceAssociationLinks *[]ServiceAssociationLink `json:"serviceAssociationLinks,omitempty"` + ServiceEndpointPolicies *[]ServiceEndpointPolicy `json:"serviceEndpointPolicies,omitempty"` + ServiceEndpoints *[]ServiceEndpointPropertiesFormat `json:"serviceEndpoints,omitempty"` + SharingScope *SharingScope `json:"sharingScope,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_subresource.go b/resource-manager/network/2024-01-01/privatelinkservices/model_subresource.go new file mode 100644 index 00000000000..b9dcdcf56bf --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_subresource.go @@ -0,0 +1,8 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/privatelinkservices/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..c500218a37c --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/privatelinkservices/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..b98eb28874d --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_virtualnetworktap.go b/resource-manager/network/2024-01-01/privatelinkservices/model_virtualnetworktap.go new file mode 100644 index 00000000000..8dbee65a21a --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_virtualnetworktap.go @@ -0,0 +1,14 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkTapPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/model_virtualnetworktappropertiesformat.go b/resource-manager/network/2024-01-01/privatelinkservices/model_virtualnetworktappropertiesformat.go new file mode 100644 index 00000000000..4fb395dbc76 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/model_virtualnetworktappropertiesformat.go @@ -0,0 +1,13 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapPropertiesFormat struct { + DestinationLoadBalancerFrontEndIPConfiguration *FrontendIPConfiguration `json:"destinationLoadBalancerFrontEndIPConfiguration,omitempty"` + DestinationNetworkInterfaceIPConfiguration *NetworkInterfaceIPConfiguration `json:"destinationNetworkInterfaceIPConfiguration,omitempty"` + DestinationPort *int64 `json:"destinationPort,omitempty"` + NetworkInterfaceTapConfigurations *[]NetworkInterfaceTapConfiguration `json:"networkInterfaceTapConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/predicates.go b/resource-manager/network/2024-01-01/privatelinkservices/predicates.go new file mode 100644 index 00000000000..f7e18f9feee --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/predicates.go @@ -0,0 +1,78 @@ +package privatelinkservices + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AutoApprovedPrivateLinkServiceOperationPredicate struct { + PrivateLinkService *string +} + +func (p AutoApprovedPrivateLinkServiceOperationPredicate) Matches(input AutoApprovedPrivateLinkService) bool { + + if p.PrivateLinkService != nil && (input.PrivateLinkService == nil || *p.PrivateLinkService != *input.PrivateLinkService) { + return false + } + + return true +} + +type PrivateEndpointConnectionOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p PrivateEndpointConnectionOperationPredicate) Matches(input PrivateEndpointConnection) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type PrivateLinkServiceOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p PrivateLinkServiceOperationPredicate) Matches(input PrivateLinkService) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/privatelinkservices/version.go b/resource-manager/network/2024-01-01/privatelinkservices/version.go new file mode 100644 index 00000000000..17557d24d45 --- /dev/null +++ b/resource-manager/network/2024-01-01/privatelinkservices/version.go @@ -0,0 +1,12 @@ +package privatelinkservices + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/privatelinkservices/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/README.md b/resource-manager/network/2024-01-01/publicipaddresses/README.md new file mode 100644 index 00000000000..dca882817a3 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/README.md @@ -0,0 +1,133 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/publicipaddresses` Documentation + +The `publicipaddresses` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/publicipaddresses" +``` + + +### Client Initialization + +```go +client := publicipaddresses.NewPublicIPAddressesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `PublicIPAddressesClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := commonids.NewPublicIPAddressID("12345678-1234-9876-4563-123456789012", "example-resource-group", "publicIPAddressValue") + +payload := publicipaddresses.PublicIPAddress{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `PublicIPAddressesClient.DdosProtectionStatus` + +```go +ctx := context.TODO() +id := commonids.NewPublicIPAddressID("12345678-1234-9876-4563-123456789012", "example-resource-group", "publicIPAddressValue") + +if err := client.DdosProtectionStatusThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `PublicIPAddressesClient.Delete` + +```go +ctx := context.TODO() +id := commonids.NewPublicIPAddressID("12345678-1234-9876-4563-123456789012", "example-resource-group", "publicIPAddressValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `PublicIPAddressesClient.Get` + +```go +ctx := context.TODO() +id := commonids.NewPublicIPAddressID("12345678-1234-9876-4563-123456789012", "example-resource-group", "publicIPAddressValue") + +read, err := client.Get(ctx, id, publicipaddresses.DefaultGetOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `PublicIPAddressesClient.List` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `PublicIPAddressesClient.ListAll` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.ListAll(ctx, id)` can be used to do batched pagination +items, err := client.ListAllComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `PublicIPAddressesClient.UpdateTags` + +```go +ctx := context.TODO() +id := commonids.NewPublicIPAddressID("12345678-1234-9876-4563-123456789012", "example-resource-group", "publicIPAddressValue") + +payload := publicipaddresses.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/publicipaddresses/client.go b/resource-manager/network/2024-01-01/publicipaddresses/client.go new file mode 100644 index 00000000000..4c28c537385 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/client.go @@ -0,0 +1,26 @@ +package publicipaddresses + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressesClient struct { + Client *resourcemanager.Client +} + +func NewPublicIPAddressesClientWithBaseURI(sdkApi sdkEnv.Api) (*PublicIPAddressesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "publicipaddresses", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating PublicIPAddressesClient: %+v", err) + } + + return &PublicIPAddressesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/constants.go b/resource-manager/network/2024-01-01/publicipaddresses/constants.go new file mode 100644 index 00000000000..167548baa81 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/constants.go @@ -0,0 +1,1239 @@ +package publicipaddresses + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettingsProtectionMode string + +const ( + DdosSettingsProtectionModeDisabled DdosSettingsProtectionMode = "Disabled" + DdosSettingsProtectionModeEnabled DdosSettingsProtectionMode = "Enabled" + DdosSettingsProtectionModeVirtualNetworkInherited DdosSettingsProtectionMode = "VirtualNetworkInherited" +) + +func PossibleValuesForDdosSettingsProtectionMode() []string { + return []string{ + string(DdosSettingsProtectionModeDisabled), + string(DdosSettingsProtectionModeEnabled), + string(DdosSettingsProtectionModeVirtualNetworkInherited), + } +} + +func (s *DdosSettingsProtectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDdosSettingsProtectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDdosSettingsProtectionMode(input string) (*DdosSettingsProtectionMode, error) { + vals := map[string]DdosSettingsProtectionMode{ + "disabled": DdosSettingsProtectionModeDisabled, + "enabled": DdosSettingsProtectionModeEnabled, + "virtualnetworkinherited": DdosSettingsProtectionModeVirtualNetworkInherited, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DdosSettingsProtectionMode(input) + return &out, nil +} + +type DeleteOptions string + +const ( + DeleteOptionsDelete DeleteOptions = "Delete" + DeleteOptionsDetach DeleteOptions = "Detach" +) + +func PossibleValuesForDeleteOptions() []string { + return []string{ + string(DeleteOptionsDelete), + string(DeleteOptionsDetach), + } +} + +func (s *DeleteOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteOptions(input string) (*DeleteOptions, error) { + vals := map[string]DeleteOptions{ + "delete": DeleteOptionsDelete, + "detach": DeleteOptionsDetach, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteOptions(input) + return &out, nil +} + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelInterfaceType string + +const ( + GatewayLoadBalancerTunnelInterfaceTypeExternal GatewayLoadBalancerTunnelInterfaceType = "External" + GatewayLoadBalancerTunnelInterfaceTypeInternal GatewayLoadBalancerTunnelInterfaceType = "Internal" + GatewayLoadBalancerTunnelInterfaceTypeNone GatewayLoadBalancerTunnelInterfaceType = "None" +) + +func PossibleValuesForGatewayLoadBalancerTunnelInterfaceType() []string { + return []string{ + string(GatewayLoadBalancerTunnelInterfaceTypeExternal), + string(GatewayLoadBalancerTunnelInterfaceTypeInternal), + string(GatewayLoadBalancerTunnelInterfaceTypeNone), + } +} + +func (s *GatewayLoadBalancerTunnelInterfaceType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelInterfaceType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelInterfaceType(input string) (*GatewayLoadBalancerTunnelInterfaceType, error) { + vals := map[string]GatewayLoadBalancerTunnelInterfaceType{ + "external": GatewayLoadBalancerTunnelInterfaceTypeExternal, + "internal": GatewayLoadBalancerTunnelInterfaceTypeInternal, + "none": GatewayLoadBalancerTunnelInterfaceTypeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelInterfaceType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelProtocol string + +const ( + GatewayLoadBalancerTunnelProtocolNative GatewayLoadBalancerTunnelProtocol = "Native" + GatewayLoadBalancerTunnelProtocolNone GatewayLoadBalancerTunnelProtocol = "None" + GatewayLoadBalancerTunnelProtocolVXLAN GatewayLoadBalancerTunnelProtocol = "VXLAN" +) + +func PossibleValuesForGatewayLoadBalancerTunnelProtocol() []string { + return []string{ + string(GatewayLoadBalancerTunnelProtocolNative), + string(GatewayLoadBalancerTunnelProtocolNone), + string(GatewayLoadBalancerTunnelProtocolVXLAN), + } +} + +func (s *GatewayLoadBalancerTunnelProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelProtocol(input string) (*GatewayLoadBalancerTunnelProtocol, error) { + vals := map[string]GatewayLoadBalancerTunnelProtocol{ + "native": GatewayLoadBalancerTunnelProtocolNative, + "none": GatewayLoadBalancerTunnelProtocolNone, + "vxlan": GatewayLoadBalancerTunnelProtocolVXLAN, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelProtocol(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} + +type IsWorkloadProtected string + +const ( + IsWorkloadProtectedFalse IsWorkloadProtected = "False" + IsWorkloadProtectedTrue IsWorkloadProtected = "True" +) + +func PossibleValuesForIsWorkloadProtected() []string { + return []string{ + string(IsWorkloadProtectedFalse), + string(IsWorkloadProtectedTrue), + } +} + +func (s *IsWorkloadProtected) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIsWorkloadProtected(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIsWorkloadProtected(input string) (*IsWorkloadProtected, error) { + vals := map[string]IsWorkloadProtected{ + "false": IsWorkloadProtectedFalse, + "true": IsWorkloadProtectedTrue, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IsWorkloadProtected(input) + return &out, nil +} + +type LoadBalancerBackendAddressAdminState string + +const ( + LoadBalancerBackendAddressAdminStateDown LoadBalancerBackendAddressAdminState = "Down" + LoadBalancerBackendAddressAdminStateNone LoadBalancerBackendAddressAdminState = "None" + LoadBalancerBackendAddressAdminStateUp LoadBalancerBackendAddressAdminState = "Up" +) + +func PossibleValuesForLoadBalancerBackendAddressAdminState() []string { + return []string{ + string(LoadBalancerBackendAddressAdminStateDown), + string(LoadBalancerBackendAddressAdminStateNone), + string(LoadBalancerBackendAddressAdminStateUp), + } +} + +func (s *LoadBalancerBackendAddressAdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerBackendAddressAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerBackendAddressAdminState(input string) (*LoadBalancerBackendAddressAdminState, error) { + vals := map[string]LoadBalancerBackendAddressAdminState{ + "down": LoadBalancerBackendAddressAdminStateDown, + "none": LoadBalancerBackendAddressAdminStateNone, + "up": LoadBalancerBackendAddressAdminStateUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerBackendAddressAdminState(input) + return &out, nil +} + +type NatGatewaySkuName string + +const ( + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +func PossibleValuesForNatGatewaySkuName() []string { + return []string{ + string(NatGatewaySkuNameStandard), + } +} + +func (s *NatGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNatGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNatGatewaySkuName(input string) (*NatGatewaySkuName, error) { + vals := map[string]NatGatewaySkuName{ + "standard": NatGatewaySkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NatGatewaySkuName(input) + return &out, nil +} + +type NetworkInterfaceAuxiliaryMode string + +const ( + NetworkInterfaceAuxiliaryModeAcceleratedConnections NetworkInterfaceAuxiliaryMode = "AcceleratedConnections" + NetworkInterfaceAuxiliaryModeFloating NetworkInterfaceAuxiliaryMode = "Floating" + NetworkInterfaceAuxiliaryModeMaxConnections NetworkInterfaceAuxiliaryMode = "MaxConnections" + NetworkInterfaceAuxiliaryModeNone NetworkInterfaceAuxiliaryMode = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliaryMode() []string { + return []string{ + string(NetworkInterfaceAuxiliaryModeAcceleratedConnections), + string(NetworkInterfaceAuxiliaryModeFloating), + string(NetworkInterfaceAuxiliaryModeMaxConnections), + string(NetworkInterfaceAuxiliaryModeNone), + } +} + +func (s *NetworkInterfaceAuxiliaryMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliaryMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliaryMode(input string) (*NetworkInterfaceAuxiliaryMode, error) { + vals := map[string]NetworkInterfaceAuxiliaryMode{ + "acceleratedconnections": NetworkInterfaceAuxiliaryModeAcceleratedConnections, + "floating": NetworkInterfaceAuxiliaryModeFloating, + "maxconnections": NetworkInterfaceAuxiliaryModeMaxConnections, + "none": NetworkInterfaceAuxiliaryModeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliaryMode(input) + return &out, nil +} + +type NetworkInterfaceAuxiliarySku string + +const ( + NetworkInterfaceAuxiliarySkuAEight NetworkInterfaceAuxiliarySku = "A8" + NetworkInterfaceAuxiliarySkuAFour NetworkInterfaceAuxiliarySku = "A4" + NetworkInterfaceAuxiliarySkuAOne NetworkInterfaceAuxiliarySku = "A1" + NetworkInterfaceAuxiliarySkuATwo NetworkInterfaceAuxiliarySku = "A2" + NetworkInterfaceAuxiliarySkuNone NetworkInterfaceAuxiliarySku = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliarySku() []string { + return []string{ + string(NetworkInterfaceAuxiliarySkuAEight), + string(NetworkInterfaceAuxiliarySkuAFour), + string(NetworkInterfaceAuxiliarySkuAOne), + string(NetworkInterfaceAuxiliarySkuATwo), + string(NetworkInterfaceAuxiliarySkuNone), + } +} + +func (s *NetworkInterfaceAuxiliarySku) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliarySku(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliarySku(input string) (*NetworkInterfaceAuxiliarySku, error) { + vals := map[string]NetworkInterfaceAuxiliarySku{ + "a8": NetworkInterfaceAuxiliarySkuAEight, + "a4": NetworkInterfaceAuxiliarySkuAFour, + "a1": NetworkInterfaceAuxiliarySkuAOne, + "a2": NetworkInterfaceAuxiliarySkuATwo, + "none": NetworkInterfaceAuxiliarySkuNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliarySku(input) + return &out, nil +} + +type NetworkInterfaceMigrationPhase string + +const ( + NetworkInterfaceMigrationPhaseAbort NetworkInterfaceMigrationPhase = "Abort" + NetworkInterfaceMigrationPhaseCommit NetworkInterfaceMigrationPhase = "Commit" + NetworkInterfaceMigrationPhaseCommitted NetworkInterfaceMigrationPhase = "Committed" + NetworkInterfaceMigrationPhaseNone NetworkInterfaceMigrationPhase = "None" + NetworkInterfaceMigrationPhasePrepare NetworkInterfaceMigrationPhase = "Prepare" +) + +func PossibleValuesForNetworkInterfaceMigrationPhase() []string { + return []string{ + string(NetworkInterfaceMigrationPhaseAbort), + string(NetworkInterfaceMigrationPhaseCommit), + string(NetworkInterfaceMigrationPhaseCommitted), + string(NetworkInterfaceMigrationPhaseNone), + string(NetworkInterfaceMigrationPhasePrepare), + } +} + +func (s *NetworkInterfaceMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceMigrationPhase(input string) (*NetworkInterfaceMigrationPhase, error) { + vals := map[string]NetworkInterfaceMigrationPhase{ + "abort": NetworkInterfaceMigrationPhaseAbort, + "commit": NetworkInterfaceMigrationPhaseCommit, + "committed": NetworkInterfaceMigrationPhaseCommitted, + "none": NetworkInterfaceMigrationPhaseNone, + "prepare": NetworkInterfaceMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceMigrationPhase(input) + return &out, nil +} + +type NetworkInterfaceNicType string + +const ( + NetworkInterfaceNicTypeElastic NetworkInterfaceNicType = "Elastic" + NetworkInterfaceNicTypeStandard NetworkInterfaceNicType = "Standard" +) + +func PossibleValuesForNetworkInterfaceNicType() []string { + return []string{ + string(NetworkInterfaceNicTypeElastic), + string(NetworkInterfaceNicTypeStandard), + } +} + +func (s *NetworkInterfaceNicType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceNicType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceNicType(input string) (*NetworkInterfaceNicType, error) { + vals := map[string]NetworkInterfaceNicType{ + "elastic": NetworkInterfaceNicTypeElastic, + "standard": NetworkInterfaceNicTypeStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceNicType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type PublicIPAddressDnsSettingsDomainNameLabelScope string + +const ( + PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "NoReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "ResourceGroupReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "SubscriptionReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "TenantReuse" +) + +func PossibleValuesForPublicIPAddressDnsSettingsDomainNameLabelScope() []string { + return []string{ + string(PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse), + } +} + +func (s *PublicIPAddressDnsSettingsDomainNameLabelScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressDnsSettingsDomainNameLabelScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressDnsSettingsDomainNameLabelScope(input string) (*PublicIPAddressDnsSettingsDomainNameLabelScope, error) { + vals := map[string]PublicIPAddressDnsSettingsDomainNameLabelScope{ + "noreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse, + "resourcegroupreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse, + "subscriptionreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse, + "tenantreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressDnsSettingsDomainNameLabelScope(input) + return &out, nil +} + +type PublicIPAddressMigrationPhase string + +const ( + PublicIPAddressMigrationPhaseAbort PublicIPAddressMigrationPhase = "Abort" + PublicIPAddressMigrationPhaseCommit PublicIPAddressMigrationPhase = "Commit" + PublicIPAddressMigrationPhaseCommitted PublicIPAddressMigrationPhase = "Committed" + PublicIPAddressMigrationPhaseNone PublicIPAddressMigrationPhase = "None" + PublicIPAddressMigrationPhasePrepare PublicIPAddressMigrationPhase = "Prepare" +) + +func PossibleValuesForPublicIPAddressMigrationPhase() []string { + return []string{ + string(PublicIPAddressMigrationPhaseAbort), + string(PublicIPAddressMigrationPhaseCommit), + string(PublicIPAddressMigrationPhaseCommitted), + string(PublicIPAddressMigrationPhaseNone), + string(PublicIPAddressMigrationPhasePrepare), + } +} + +func (s *PublicIPAddressMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressMigrationPhase(input string) (*PublicIPAddressMigrationPhase, error) { + vals := map[string]PublicIPAddressMigrationPhase{ + "abort": PublicIPAddressMigrationPhaseAbort, + "commit": PublicIPAddressMigrationPhaseCommit, + "committed": PublicIPAddressMigrationPhaseCommitted, + "none": PublicIPAddressMigrationPhaseNone, + "prepare": PublicIPAddressMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressMigrationPhase(input) + return &out, nil +} + +type PublicIPAddressSkuName string + +const ( + PublicIPAddressSkuNameBasic PublicIPAddressSkuName = "Basic" + PublicIPAddressSkuNameStandard PublicIPAddressSkuName = "Standard" +) + +func PossibleValuesForPublicIPAddressSkuName() []string { + return []string{ + string(PublicIPAddressSkuNameBasic), + string(PublicIPAddressSkuNameStandard), + } +} + +func (s *PublicIPAddressSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuName(input string) (*PublicIPAddressSkuName, error) { + vals := map[string]PublicIPAddressSkuName{ + "basic": PublicIPAddressSkuNameBasic, + "standard": PublicIPAddressSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuName(input) + return &out, nil +} + +type PublicIPAddressSkuTier string + +const ( + PublicIPAddressSkuTierGlobal PublicIPAddressSkuTier = "Global" + PublicIPAddressSkuTierRegional PublicIPAddressSkuTier = "Regional" +) + +func PossibleValuesForPublicIPAddressSkuTier() []string { + return []string{ + string(PublicIPAddressSkuTierGlobal), + string(PublicIPAddressSkuTierRegional), + } +} + +func (s *PublicIPAddressSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuTier(input string) (*PublicIPAddressSkuTier, error) { + vals := map[string]PublicIPAddressSkuTier{ + "global": PublicIPAddressSkuTierGlobal, + "regional": PublicIPAddressSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuTier(input) + return &out, nil +} + +type RouteNextHopType string + +const ( + RouteNextHopTypeInternet RouteNextHopType = "Internet" + RouteNextHopTypeNone RouteNextHopType = "None" + RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" + RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" + RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" +) + +func PossibleValuesForRouteNextHopType() []string { + return []string{ + string(RouteNextHopTypeInternet), + string(RouteNextHopTypeNone), + string(RouteNextHopTypeVirtualAppliance), + string(RouteNextHopTypeVirtualNetworkGateway), + string(RouteNextHopTypeVnetLocal), + } +} + +func (s *RouteNextHopType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteNextHopType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteNextHopType(input string) (*RouteNextHopType, error) { + vals := map[string]RouteNextHopType{ + "internet": RouteNextHopTypeInternet, + "none": RouteNextHopTypeNone, + "virtualappliance": RouteNextHopTypeVirtualAppliance, + "virtualnetworkgateway": RouteNextHopTypeVirtualNetworkGateway, + "vnetlocal": RouteNextHopTypeVnetLocal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteNextHopType(input) + return &out, nil +} + +type SecurityRuleAccess string + +const ( + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +func PossibleValuesForSecurityRuleAccess() []string { + return []string{ + string(SecurityRuleAccessAllow), + string(SecurityRuleAccessDeny), + } +} + +func (s *SecurityRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleAccess(input string) (*SecurityRuleAccess, error) { + vals := map[string]SecurityRuleAccess{ + "allow": SecurityRuleAccessAllow, + "deny": SecurityRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleAccess(input) + return &out, nil +} + +type SecurityRuleDirection string + +const ( + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityRuleDirection() []string { + return []string{ + string(SecurityRuleDirectionInbound), + string(SecurityRuleDirectionOutbound), + } +} + +func (s *SecurityRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleDirection(input string) (*SecurityRuleDirection, error) { + vals := map[string]SecurityRuleDirection{ + "inbound": SecurityRuleDirectionInbound, + "outbound": SecurityRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleDirection(input) + return &out, nil +} + +type SecurityRuleProtocol string + +const ( + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + SecurityRuleProtocolAny SecurityRuleProtocol = "*" + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + SecurityRuleProtocolTcp SecurityRuleProtocol = "Tcp" + SecurityRuleProtocolUdp SecurityRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityRuleProtocol() []string { + return []string{ + string(SecurityRuleProtocolAh), + string(SecurityRuleProtocolAny), + string(SecurityRuleProtocolEsp), + string(SecurityRuleProtocolIcmp), + string(SecurityRuleProtocolTcp), + string(SecurityRuleProtocolUdp), + } +} + +func (s *SecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleProtocol(input string) (*SecurityRuleProtocol, error) { + vals := map[string]SecurityRuleProtocol{ + "ah": SecurityRuleProtocolAh, + "*": SecurityRuleProtocolAny, + "esp": SecurityRuleProtocolEsp, + "icmp": SecurityRuleProtocolIcmp, + "tcp": SecurityRuleProtocolTcp, + "udp": SecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleProtocol(input) + return &out, nil +} + +type SharingScope string + +const ( + SharingScopeDelegatedServices SharingScope = "DelegatedServices" + SharingScopeTenant SharingScope = "Tenant" +) + +func PossibleValuesForSharingScope() []string { + return []string{ + string(SharingScopeDelegatedServices), + string(SharingScopeTenant), + } +} + +func (s *SharingScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSharingScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSharingScope(input string) (*SharingScope, error) { + vals := map[string]SharingScope{ + "delegatedservices": SharingScopeDelegatedServices, + "tenant": SharingScopeTenant, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SharingScope(input) + return &out, nil +} + +type SyncMode string + +const ( + SyncModeAutomatic SyncMode = "Automatic" + SyncModeManual SyncMode = "Manual" +) + +func PossibleValuesForSyncMode() []string { + return []string{ + string(SyncModeAutomatic), + string(SyncModeManual), + } +} + +func (s *SyncMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSyncMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSyncMode(input string) (*SyncMode, error) { + vals := map[string]SyncMode{ + "automatic": SyncModeAutomatic, + "manual": SyncModeManual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SyncMode(input) + return &out, nil +} + +type TransportProtocol string + +const ( + TransportProtocolAll TransportProtocol = "All" + TransportProtocolTcp TransportProtocol = "Tcp" + TransportProtocolUdp TransportProtocol = "Udp" +) + +func PossibleValuesForTransportProtocol() []string { + return []string{ + string(TransportProtocolAll), + string(TransportProtocolTcp), + string(TransportProtocolUdp), + } +} + +func (s *TransportProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseTransportProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseTransportProtocol(input string) (*TransportProtocol, error) { + vals := map[string]TransportProtocol{ + "all": TransportProtocolAll, + "tcp": TransportProtocolTcp, + "udp": TransportProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := TransportProtocol(input) + return &out, nil +} + +type VirtualNetworkPrivateEndpointNetworkPolicies string + +const ( + VirtualNetworkPrivateEndpointNetworkPoliciesDisabled VirtualNetworkPrivateEndpointNetworkPolicies = "Disabled" + VirtualNetworkPrivateEndpointNetworkPoliciesEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "Enabled" + VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "NetworkSecurityGroupEnabled" + VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "RouteTableEnabled" +) + +func PossibleValuesForVirtualNetworkPrivateEndpointNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateEndpointNetworkPoliciesDisabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled), + } +} + +func (s *VirtualNetworkPrivateEndpointNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateEndpointNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateEndpointNetworkPolicies(input string) (*VirtualNetworkPrivateEndpointNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateEndpointNetworkPolicies{ + "disabled": VirtualNetworkPrivateEndpointNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateEndpointNetworkPoliciesEnabled, + "networksecuritygroupenabled": VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled, + "routetableenabled": VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateEndpointNetworkPolicies(input) + return &out, nil +} + +type VirtualNetworkPrivateLinkServiceNetworkPolicies string + +const ( + VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Disabled" + VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Enabled" +) + +func PossibleValuesForVirtualNetworkPrivateLinkServiceNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled), + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled), + } +} + +func (s *VirtualNetworkPrivateLinkServiceNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateLinkServiceNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateLinkServiceNetworkPolicies(input string) (*VirtualNetworkPrivateLinkServiceNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateLinkServiceNetworkPolicies{ + "disabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateLinkServiceNetworkPolicies(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/method_createorupdate.go b/resource-manager/network/2024-01-01/publicipaddresses/method_createorupdate.go new file mode 100644 index 00000000000..fca7faa2130 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/method_createorupdate.go @@ -0,0 +1,76 @@ +package publicipaddresses + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *PublicIPAddress +} + +// CreateOrUpdate ... +func (c PublicIPAddressesClient) CreateOrUpdate(ctx context.Context, id commonids.PublicIPAddressId, input PublicIPAddress) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c PublicIPAddressesClient) CreateOrUpdateThenPoll(ctx context.Context, id commonids.PublicIPAddressId, input PublicIPAddress) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/method_ddosprotectionstatus.go b/resource-manager/network/2024-01-01/publicipaddresses/method_ddosprotectionstatus.go new file mode 100644 index 00000000000..29e07596f6d --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/method_ddosprotectionstatus.go @@ -0,0 +1,72 @@ +package publicipaddresses + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosProtectionStatusOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *PublicIPDdosProtectionStatusResult +} + +// DdosProtectionStatus ... +func (c PublicIPAddressesClient) DdosProtectionStatus(ctx context.Context, id commonids.PublicIPAddressId) (result DdosProtectionStatusOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/ddosProtectionStatus", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DdosProtectionStatusThenPoll performs DdosProtectionStatus then polls until it's completed +func (c PublicIPAddressesClient) DdosProtectionStatusThenPoll(ctx context.Context, id commonids.PublicIPAddressId) error { + result, err := c.DdosProtectionStatus(ctx, id) + if err != nil { + return fmt.Errorf("performing DdosProtectionStatus: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after DdosProtectionStatus: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/method_delete.go b/resource-manager/network/2024-01-01/publicipaddresses/method_delete.go new file mode 100644 index 00000000000..20c57a22e75 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/method_delete.go @@ -0,0 +1,72 @@ +package publicipaddresses + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c PublicIPAddressesClient) Delete(ctx context.Context, id commonids.PublicIPAddressId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c PublicIPAddressesClient) DeleteThenPoll(ctx context.Context, id commonids.PublicIPAddressId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/method_get.go b/resource-manager/network/2024-01-01/publicipaddresses/method_get.go new file mode 100644 index 00000000000..c5f5e5e145e --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/method_get.go @@ -0,0 +1,84 @@ +package publicipaddresses + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *PublicIPAddress +} + +type GetOperationOptions struct { + Expand *string +} + +func DefaultGetOperationOptions() GetOperationOptions { + return GetOperationOptions{} +} + +func (o GetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// Get ... +func (c PublicIPAddressesClient) Get(ctx context.Context, id commonids.PublicIPAddressId, options GetOperationOptions) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model PublicIPAddress + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/method_list.go b/resource-manager/network/2024-01-01/publicipaddresses/method_list.go new file mode 100644 index 00000000000..9c8fb822580 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/method_list.go @@ -0,0 +1,93 @@ +package publicipaddresses + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]PublicIPAddress +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []PublicIPAddress +} + +// List ... +func (c PublicIPAddressesClient) List(ctx context.Context, id commonids.ResourceGroupId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/publicIPAddresses", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]PublicIPAddress `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c PublicIPAddressesClient) ListComplete(ctx context.Context, id commonids.ResourceGroupId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, PublicIPAddressOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c PublicIPAddressesClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate PublicIPAddressOperationPredicate) (result ListCompleteResult, err error) { + items := make([]PublicIPAddress, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/method_listall.go b/resource-manager/network/2024-01-01/publicipaddresses/method_listall.go new file mode 100644 index 00000000000..81f1cf1ccf2 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/method_listall.go @@ -0,0 +1,93 @@ +package publicipaddresses + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAllOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]PublicIPAddress +} + +type ListAllCompleteResult struct { + LatestHttpResponse *http.Response + Items []PublicIPAddress +} + +// ListAll ... +func (c PublicIPAddressesClient) ListAll(ctx context.Context, id commonids.SubscriptionId) (result ListAllOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/publicIPAddresses", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]PublicIPAddress `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListAllComplete retrieves all the results into a single object +func (c PublicIPAddressesClient) ListAllComplete(ctx context.Context, id commonids.SubscriptionId) (ListAllCompleteResult, error) { + return c.ListAllCompleteMatchingPredicate(ctx, id, PublicIPAddressOperationPredicate{}) +} + +// ListAllCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c PublicIPAddressesClient) ListAllCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate PublicIPAddressOperationPredicate) (result ListAllCompleteResult, err error) { + items := make([]PublicIPAddress, 0) + + resp, err := c.ListAll(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListAllCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/method_updatetags.go b/resource-manager/network/2024-01-01/publicipaddresses/method_updatetags.go new file mode 100644 index 00000000000..55be79fcfce --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/method_updatetags.go @@ -0,0 +1,59 @@ +package publicipaddresses + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *PublicIPAddress +} + +// UpdateTags ... +func (c PublicIPAddressesClient) UpdateTags(ctx context.Context, id commonids.PublicIPAddressId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model PublicIPAddress + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_applicationgatewaybackendaddress.go b/resource-manager/network/2024-01-01/publicipaddresses/model_applicationgatewaybackendaddress.go new file mode 100644 index 00000000000..d89d17bbae7 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_applicationgatewaybackendaddress.go @@ -0,0 +1,9 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddress struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_applicationgatewaybackendaddresspool.go b/resource-manager/network/2024-01-01/publicipaddresses/model_applicationgatewaybackendaddresspool.go new file mode 100644 index 00000000000..433f6b69df9 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_applicationgatewaybackendaddresspool.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_applicationgatewaybackendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_applicationgatewaybackendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..14750d210a4 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_applicationgatewaybackendaddresspoolpropertiesformat.go @@ -0,0 +1,10 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPoolPropertiesFormat struct { + BackendAddresses *[]ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"` + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_applicationgatewayipconfiguration.go b/resource-manager/network/2024-01-01/publicipaddresses/model_applicationgatewayipconfiguration.go new file mode 100644 index 00000000000..33311f968a8 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_applicationgatewayipconfiguration.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_applicationgatewayipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_applicationgatewayipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..69ba272007f --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_applicationgatewayipconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/publicipaddresses/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..7ab7c1cc362 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..3de744e7bae --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_backendaddresspool.go b/resource-manager/network/2024-01-01/publicipaddresses/model_backendaddresspool.go new file mode 100644 index 00000000000..c693d24a91b --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_backendaddresspool.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_backendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_backendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..b4b3a346a35 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_backendaddresspoolpropertiesformat.go @@ -0,0 +1,19 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPoolPropertiesFormat struct { + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + DrainPeriodInSeconds *int64 `json:"drainPeriodInSeconds,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancerBackendAddresses *[]LoadBalancerBackendAddress `json:"loadBalancerBackendAddresses,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + Location *string `json:"location,omitempty"` + OutboundRule *SubResource `json:"outboundRule,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SyncMode *SyncMode `json:"syncMode,omitempty"` + TunnelInterfaces *[]GatewayLoadBalancerTunnelInterface `json:"tunnelInterfaces,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_customdnsconfigpropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_customdnsconfigpropertiesformat.go new file mode 100644 index 00000000000..2bbec7ab523 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_customdnsconfigpropertiesformat.go @@ -0,0 +1,9 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomDnsConfigPropertiesFormat struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_ddossettings.go b/resource-manager/network/2024-01-01/publicipaddresses/model_ddossettings.go new file mode 100644 index 00000000000..360538854a2 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_ddossettings.go @@ -0,0 +1,9 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettings struct { + DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"` + ProtectionMode *DdosSettingsProtectionMode `json:"protectionMode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_delegation.go b/resource-manager/network/2024-01-01/publicipaddresses/model_delegation.go new file mode 100644 index 00000000000..1036beaaf72 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_delegation.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Delegation struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceDelegationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_flowlog.go b/resource-manager/network/2024-01-01/publicipaddresses/model_flowlog.go new file mode 100644 index 00000000000..d93575ba159 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_flowlog.go @@ -0,0 +1,19 @@ +package publicipaddresses + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLog struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FlowLogPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/publicipaddresses/model_flowlogformatparameters.go new file mode 100644 index 00000000000..28da49ecc43 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_flowlogpropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_flowlogpropertiesformat.go new file mode 100644 index 00000000000..6690c7ec880 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_flowlogpropertiesformat.go @@ -0,0 +1,15 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogPropertiesFormat struct { + Enabled *bool `json:"enabled,omitempty"` + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` + TargetResourceGuid *string `json:"targetResourceGuid,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_frontendipconfiguration.go b/resource-manager/network/2024-01-01/publicipaddresses/model_frontendipconfiguration.go new file mode 100644 index 00000000000..72aec2b5437 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_frontendipconfiguration.go @@ -0,0 +1,17 @@ +package publicipaddresses + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_frontendipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_frontendipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..2d86f96cffb --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_frontendipconfigurationpropertiesformat.go @@ -0,0 +1,19 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfigurationPropertiesFormat struct { + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + InboundNatPools *[]SubResource `json:"inboundNatPools,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_gatewayloadbalancertunnelinterface.go b/resource-manager/network/2024-01-01/publicipaddresses/model_gatewayloadbalancertunnelinterface.go new file mode 100644 index 00000000000..9d2c813c821 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_gatewayloadbalancertunnelinterface.go @@ -0,0 +1,11 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayLoadBalancerTunnelInterface struct { + Identifier *int64 `json:"identifier,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *GatewayLoadBalancerTunnelProtocol `json:"protocol,omitempty"` + Type *GatewayLoadBalancerTunnelInterfaceType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_inboundnatrule.go b/resource-manager/network/2024-01-01/publicipaddresses/model_inboundnatrule.go new file mode 100644 index 00000000000..bd6a9711828 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_inboundnatrule.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundNatRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_inboundnatrulepropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_inboundnatrulepropertiesformat.go new file mode 100644 index 00000000000..320809245cf --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_inboundnatrulepropertiesformat.go @@ -0,0 +1,19 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendIPConfiguration *NetworkInterfaceIPConfiguration `json:"backendIPConfiguration,omitempty"` + BackendPort *int64 `json:"backendPort,omitempty"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + FrontendPortRangeEnd *int64 `json:"frontendPortRangeEnd,omitempty"` + FrontendPortRangeStart *int64 `json:"frontendPortRangeStart,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol *TransportProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_ipconfiguration.go b/resource-manager/network/2024-01-01/publicipaddresses/model_ipconfiguration.go new file mode 100644 index 00000000000..398840974cd --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_ipconfiguration.go @@ -0,0 +1,11 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_ipconfigurationprofile.go b/resource-manager/network/2024-01-01/publicipaddresses/model_ipconfigurationprofile.go new file mode 100644 index 00000000000..1bf1de27441 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_ipconfigurationprofile.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationProfilePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_ipconfigurationprofilepropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_ipconfigurationprofilepropertiesformat.go new file mode 100644 index 00000000000..1523f28e63d --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_ipconfigurationprofilepropertiesformat.go @@ -0,0 +1,9 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfilePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_ipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_ipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..bb4f647f729 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_ipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_iptag.go b/resource-manager/network/2024-01-01/publicipaddresses/model_iptag.go new file mode 100644 index 00000000000..7ea58148bb2 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_iptag.go @@ -0,0 +1,9 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPTag struct { + IPTagType *string `json:"ipTagType,omitempty"` + Tag *string `json:"tag,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_loadbalancerbackendaddress.go b/resource-manager/network/2024-01-01/publicipaddresses/model_loadbalancerbackendaddress.go new file mode 100644 index 00000000000..e427662f2a6 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_loadbalancerbackendaddress.go @@ -0,0 +1,9 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddress struct { + Name *string `json:"name,omitempty"` + Properties *LoadBalancerBackendAddressPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_loadbalancerbackendaddresspropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_loadbalancerbackendaddresspropertiesformat.go new file mode 100644 index 00000000000..349c22b64f5 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_loadbalancerbackendaddresspropertiesformat.go @@ -0,0 +1,14 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPropertiesFormat struct { + AdminState *LoadBalancerBackendAddressAdminState `json:"adminState,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + InboundNatRulesPortMapping *[]NatRulePortMapping `json:"inboundNatRulesPortMapping,omitempty"` + LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIPConfiguration,omitempty"` + NetworkInterfaceIPConfiguration *SubResource `json:"networkInterfaceIPConfiguration,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_natgateway.go b/resource-manager/network/2024-01-01/publicipaddresses/model_natgateway.go new file mode 100644 index 00000000000..fc10c7874b7 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_natgateway.go @@ -0,0 +1,20 @@ +package publicipaddresses + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"` + Sku *NatGatewaySku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_natgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_natgatewaypropertiesformat.go new file mode 100644 index 00000000000..3a740fb997b --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_natgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayPropertiesFormat struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]SubResource `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_natgatewaysku.go b/resource-manager/network/2024-01-01/publicipaddresses/model_natgatewaysku.go new file mode 100644 index 00000000000..764ce1ec4aa --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_natgatewaysku.go @@ -0,0 +1,8 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySku struct { + Name *NatGatewaySkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_natruleportmapping.go b/resource-manager/network/2024-01-01/publicipaddresses/model_natruleportmapping.go new file mode 100644 index 00000000000..8c9fe6cf53d --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_natruleportmapping.go @@ -0,0 +1,10 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulePortMapping struct { + BackendPort *int64 `json:"backendPort,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + InboundNatRuleName *string `json:"inboundNatRuleName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterface.go b/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterface.go new file mode 100644 index 00000000000..5297e480153 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterface.go @@ -0,0 +1,19 @@ +package publicipaddresses + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterface struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfacePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterfacednssettings.go b/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterfacednssettings.go new file mode 100644 index 00000000000..b5db798efaa --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterfacednssettings.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceDnsSettings struct { + AppliedDnsServers *[]string `json:"appliedDnsServers,omitempty"` + DnsServers *[]string `json:"dnsServers,omitempty"` + InternalDnsNameLabel *string `json:"internalDnsNameLabel,omitempty"` + InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty"` + InternalFqdn *string `json:"internalFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterfaceipconfiguration.go b/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterfaceipconfiguration.go new file mode 100644 index 00000000000..9840f48b636 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterfaceipconfiguration.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go b/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go new file mode 100644 index 00000000000..7815eb1f03a --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go @@ -0,0 +1,10 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties struct { + Fqdns *[]string `json:"fqdns,omitempty"` + GroupId *string `json:"groupId,omitempty"` + RequiredMemberName *string `json:"requiredMemberName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterfaceipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterfaceipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..fefc0a7c7d9 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterfaceipconfigurationpropertiesformat.go @@ -0,0 +1,22 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPropertiesFormat struct { + ApplicationGatewayBackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"applicationGatewayBackendAddressPools,omitempty"` + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + LoadBalancerBackendAddressPools *[]BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"` + LoadBalancerInboundNatRules *[]InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressPrefixLength *int64 `json:"privateIPAddressPrefixLength,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + PrivateLinkConnectionProperties *NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties `json:"privateLinkConnectionProperties,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` + VirtualNetworkTaps *[]VirtualNetworkTap `json:"virtualNetworkTaps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterfacepropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterfacepropertiesformat.go new file mode 100644 index 00000000000..b50c25d8086 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterfacepropertiesformat.go @@ -0,0 +1,29 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfacePropertiesFormat struct { + AuxiliaryMode *NetworkInterfaceAuxiliaryMode `json:"auxiliaryMode,omitempty"` + AuxiliarySku *NetworkInterfaceAuxiliarySku `json:"auxiliarySku,omitempty"` + DisableTcpStateTracking *bool `json:"disableTcpStateTracking,omitempty"` + DnsSettings *NetworkInterfaceDnsSettings `json:"dnsSettings,omitempty"` + DscpConfiguration *SubResource `json:"dscpConfiguration,omitempty"` + EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"` + EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"` + HostedWorkloads *[]string `json:"hostedWorkloads,omitempty"` + IPConfigurations *[]NetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + MacAddress *string `json:"macAddress,omitempty"` + MigrationPhase *NetworkInterfaceMigrationPhase `json:"migrationPhase,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + NicType *NetworkInterfaceNicType `json:"nicType,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkService *PrivateLinkService `json:"privateLinkService,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + TapConfigurations *[]NetworkInterfaceTapConfiguration `json:"tapConfigurations,omitempty"` + VirtualMachine *SubResource `json:"virtualMachine,omitempty"` + VnetEncryptionSupported *bool `json:"vnetEncryptionSupported,omitempty"` + WorkloadType *string `json:"workloadType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterfacetapconfiguration.go b/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterfacetapconfiguration.go new file mode 100644 index 00000000000..060a9d5285a --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterfacetapconfiguration.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceTapConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterfacetapconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterfacetapconfigurationpropertiesformat.go new file mode 100644 index 00000000000..d229b2dfb8d --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_networkinterfacetapconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualNetworkTap *VirtualNetworkTap `json:"virtualNetworkTap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_networksecuritygroup.go b/resource-manager/network/2024-01-01/publicipaddresses/model_networksecuritygroup.go new file mode 100644 index 00000000000..485cb7f8e07 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_networksecuritygroup.go @@ -0,0 +1,14 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_networksecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_networksecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..8fef2ca403a --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_networksecuritygrouppropertiesformat.go @@ -0,0 +1,15 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupPropertiesFormat struct { + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + FlowLogs *[]FlowLog `json:"flowLogs,omitempty"` + FlushConnection *bool `json:"flushConnection,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_privateendpoint.go b/resource-manager/network/2024-01-01/publicipaddresses/model_privateendpoint.go new file mode 100644 index 00000000000..dd63348ae6f --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_privateendpoint.go @@ -0,0 +1,19 @@ +package publicipaddresses + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpoint struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_privateendpointconnection.go b/resource-manager/network/2024-01-01/publicipaddresses/model_privateendpointconnection.go new file mode 100644 index 00000000000..b449098f79d --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_privateendpointconnection.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_privateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/publicipaddresses/model_privateendpointconnectionproperties.go new file mode 100644 index 00000000000..8a20b5b22e7 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_privateendpointconnectionproperties.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateEndpointLocation *string `json:"privateEndpointLocation,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_privateendpointipconfiguration.go b/resource-manager/network/2024-01-01/publicipaddresses/model_privateendpointipconfiguration.go new file mode 100644 index 00000000000..e75d758ed00 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_privateendpointipconfiguration.go @@ -0,0 +1,11 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_privateendpointipconfigurationproperties.go b/resource-manager/network/2024-01-01/publicipaddresses/model_privateendpointipconfigurationproperties.go new file mode 100644 index 00000000000..42574e02e61 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_privateendpointipconfigurationproperties.go @@ -0,0 +1,10 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfigurationProperties struct { + GroupId *string `json:"groupId,omitempty"` + MemberName *string `json:"memberName,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_privateendpointproperties.go b/resource-manager/network/2024-01-01/publicipaddresses/model_privateendpointproperties.go new file mode 100644 index 00000000000..a0108e9c621 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_privateendpointproperties.go @@ -0,0 +1,16 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointProperties struct { + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + CustomDnsConfigs *[]CustomDnsConfigPropertiesFormat `json:"customDnsConfigs,omitempty"` + CustomNetworkInterfaceName *string `json:"customNetworkInterfaceName,omitempty"` + IPConfigurations *[]PrivateEndpointIPConfiguration `json:"ipConfigurations,omitempty"` + ManualPrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"manualPrivateLinkServiceConnections,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"privateLinkServiceConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_privatelinkservice.go b/resource-manager/network/2024-01-01/publicipaddresses/model_privatelinkservice.go new file mode 100644 index 00000000000..b4d87fc1513 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_privatelinkservice.go @@ -0,0 +1,19 @@ +package publicipaddresses + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkService struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_privatelinkserviceconnection.go b/resource-manager/network/2024-01-01/publicipaddresses/model_privatelinkserviceconnection.go new file mode 100644 index 00000000000..2039fef8e1a --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_privatelinkserviceconnection.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_privatelinkserviceconnectionproperties.go b/resource-manager/network/2024-01-01/publicipaddresses/model_privatelinkserviceconnectionproperties.go new file mode 100644 index 00000000000..37f23eb3b44 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_privatelinkserviceconnectionproperties.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionProperties struct { + GroupIds *[]string `json:"groupIds,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + PrivateLinkServiceId *string `json:"privateLinkServiceId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestMessage *string `json:"requestMessage,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_privatelinkserviceconnectionstate.go b/resource-manager/network/2024-01-01/publicipaddresses/model_privatelinkserviceconnectionstate.go new file mode 100644 index 00000000000..ee170e64109 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_privatelinkserviceconnectionstate.go @@ -0,0 +1,10 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionState struct { + ActionsRequired *string `json:"actionsRequired,omitempty"` + Description *string `json:"description,omitempty"` + Status *string `json:"status,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_privatelinkserviceipconfiguration.go b/resource-manager/network/2024-01-01/publicipaddresses/model_privatelinkserviceipconfiguration.go new file mode 100644 index 00000000000..8dce57f93b6 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_privatelinkserviceipconfiguration.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_privatelinkserviceipconfigurationproperties.go b/resource-manager/network/2024-01-01/publicipaddresses/model_privatelinkserviceipconfigurationproperties.go new file mode 100644 index 00000000000..17839c3231f --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_privatelinkserviceipconfigurationproperties.go @@ -0,0 +1,13 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_privatelinkserviceproperties.go b/resource-manager/network/2024-01-01/publicipaddresses/model_privatelinkserviceproperties.go new file mode 100644 index 00000000000..7307dfa6a24 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_privatelinkserviceproperties.go @@ -0,0 +1,17 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceProperties struct { + Alias *string `json:"alias,omitempty"` + AutoApproval *ResourceSet `json:"autoApproval,omitempty"` + EnableProxyProtocol *bool `json:"enableProxyProtocol,omitempty"` + Fqdns *[]string `json:"fqdns,omitempty"` + IPConfigurations *[]PrivateLinkServiceIPConfiguration `json:"ipConfigurations,omitempty"` + LoadBalancerFrontendIPConfigurations *[]FrontendIPConfiguration `json:"loadBalancerFrontendIpConfigurations,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Visibility *ResourceSet `json:"visibility,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_publicipaddress.go b/resource-manager/network/2024-01-01/publicipaddresses/model_publicipaddress.go new file mode 100644 index 00000000000..6be86648487 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_publicipaddress.go @@ -0,0 +1,22 @@ +package publicipaddresses + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddress struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PublicIPAddressPropertiesFormat `json:"properties,omitempty"` + Sku *PublicIPAddressSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_publicipaddressdnssettings.go b/resource-manager/network/2024-01-01/publicipaddresses/model_publicipaddressdnssettings.go new file mode 100644 index 00000000000..19bd5c73bdd --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_publicipaddressdnssettings.go @@ -0,0 +1,11 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressDnsSettings struct { + DomainNameLabel *string `json:"domainNameLabel,omitempty"` + DomainNameLabelScope *PublicIPAddressDnsSettingsDomainNameLabelScope `json:"domainNameLabelScope,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + ReverseFqdn *string `json:"reverseFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_publicipaddresspropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_publicipaddresspropertiesformat.go new file mode 100644 index 00000000000..90c1d772012 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_publicipaddresspropertiesformat.go @@ -0,0 +1,23 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressPropertiesFormat struct { + DdosSettings *DdosSettings `json:"ddosSettings,omitempty"` + DeleteOption *DeleteOptions `json:"deleteOption,omitempty"` + DnsSettings *PublicIPAddressDnsSettings `json:"dnsSettings,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty"` + IPTags *[]IPTag `json:"ipTags,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + LinkedPublicIPAddress *PublicIPAddress `json:"linkedPublicIPAddress,omitempty"` + MigrationPhase *PublicIPAddressMigrationPhase `json:"migrationPhase,omitempty"` + NatGateway *NatGateway `json:"natGateway,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"` + PublicIPAllocationMethod *IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServicePublicIPAddress *PublicIPAddress `json:"servicePublicIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_publicipaddresssku.go b/resource-manager/network/2024-01-01/publicipaddresses/model_publicipaddresssku.go new file mode 100644 index 00000000000..af0178060c9 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_publicipaddresssku.go @@ -0,0 +1,9 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressSku struct { + Name *PublicIPAddressSkuName `json:"name,omitempty"` + Tier *PublicIPAddressSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_publicipddosprotectionstatusresult.go b/resource-manager/network/2024-01-01/publicipaddresses/model_publicipddosprotectionstatusresult.go new file mode 100644 index 00000000000..dbf51354f05 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_publicipddosprotectionstatusresult.go @@ -0,0 +1,11 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPDdosProtectionStatusResult struct { + DdosProtectionPlanId *string `json:"ddosProtectionPlanId,omitempty"` + IsWorkloadProtected *IsWorkloadProtected `json:"isWorkloadProtected,omitempty"` + PublicIPAddress *string `json:"publicIpAddress,omitempty"` + PublicIPAddressId *string `json:"publicIpAddressId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_resourcenavigationlink.go b/resource-manager/network/2024-01-01/publicipaddresses/model_resourcenavigationlink.go new file mode 100644 index 00000000000..8df0e65c796 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_resourcenavigationlink.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ResourceNavigationLinkFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_resourcenavigationlinkformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_resourcenavigationlinkformat.go new file mode 100644 index 00000000000..912dad5e9b9 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_resourcenavigationlinkformat.go @@ -0,0 +1,10 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLinkFormat struct { + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_resourceset.go b/resource-manager/network/2024-01-01/publicipaddresses/model_resourceset.go new file mode 100644 index 00000000000..eb4ec2e13c4 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_resourceset.go @@ -0,0 +1,8 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceSet struct { + Subscriptions *[]string `json:"subscriptions,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/publicipaddresses/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..57e746e6800 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_route.go b/resource-manager/network/2024-01-01/publicipaddresses/model_route.go new file mode 100644 index 00000000000..6aaf9130e49 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_route.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Route struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RoutePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_routepropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_routepropertiesformat.go new file mode 100644 index 00000000000..19e40f46ddb --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_routepropertiesformat.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutePropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + HasBgpOverride *bool `json:"hasBgpOverride,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + NextHopType RouteNextHopType `json:"nextHopType"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_routetable.go b/resource-manager/network/2024-01-01/publicipaddresses/model_routetable.go new file mode 100644 index 00000000000..eed83ddcb84 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_routetable.go @@ -0,0 +1,14 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTable struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteTablePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_routetablepropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_routetablepropertiesformat.go new file mode 100644 index 00000000000..f408090b5c7 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_routetablepropertiesformat.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTablePropertiesFormat struct { + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Routes *[]Route `json:"routes,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_securityrule.go b/resource-manager/network/2024-01-01/publicipaddresses/model_securityrule.go new file mode 100644 index 00000000000..056a5506bcc --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_securityrule.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_securityrulepropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_securityrulepropertiesformat.go new file mode 100644 index 00000000000..e076569ccb4 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_securityrulepropertiesformat.go @@ -0,0 +1,23 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulePropertiesFormat struct { + Access SecurityRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction SecurityRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_serviceassociationlink.go b/resource-manager/network/2024-01-01/publicipaddresses/model_serviceassociationlink.go new file mode 100644 index 00000000000..80405186b49 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_serviceassociationlink.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceAssociationLinkPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_serviceassociationlinkpropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_serviceassociationlinkpropertiesformat.go new file mode 100644 index 00000000000..e0afefd43a1 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_serviceassociationlinkpropertiesformat.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLinkPropertiesFormat struct { + AllowDelete *bool `json:"allowDelete,omitempty"` + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + Locations *[]string `json:"locations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_servicedelegationpropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_servicedelegationpropertiesformat.go new file mode 100644 index 00000000000..dfdf08665d4 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_servicedelegationpropertiesformat.go @@ -0,0 +1,10 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceDelegationPropertiesFormat struct { + Actions *[]string `json:"actions,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_serviceendpointpolicy.go b/resource-manager/network/2024-01-01/publicipaddresses/model_serviceendpointpolicy.go new file mode 100644 index 00000000000..2937667f2df --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_serviceendpointpolicy.go @@ -0,0 +1,15 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Kind *string `json:"kind,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_serviceendpointpolicydefinition.go b/resource-manager/network/2024-01-01/publicipaddresses/model_serviceendpointpolicydefinition.go new file mode 100644 index 00000000000..a5c2fb10189 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_serviceendpointpolicydefinition.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinition struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_serviceendpointpolicydefinitionpropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_serviceendpointpolicydefinitionpropertiesformat.go new file mode 100644 index 00000000000..6eae5a09363 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_serviceendpointpolicydefinitionpropertiesformat.go @@ -0,0 +1,11 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionPropertiesFormat struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` + ServiceResources *[]string `json:"serviceResources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_serviceendpointpolicypropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_serviceendpointpolicypropertiesformat.go new file mode 100644 index 00000000000..77840b5f2bd --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_serviceendpointpolicypropertiesformat.go @@ -0,0 +1,13 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyPropertiesFormat struct { + ContextualServiceEndpointPolicies *[]string `json:"contextualServiceEndpointPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServiceAlias *string `json:"serviceAlias,omitempty"` + ServiceEndpointPolicyDefinitions *[]ServiceEndpointPolicyDefinition `json:"serviceEndpointPolicyDefinitions,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_serviceendpointpropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_serviceendpointpropertiesformat.go new file mode 100644 index 00000000000..b40e6fcd671 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_serviceendpointpropertiesformat.go @@ -0,0 +1,11 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPropertiesFormat struct { + Locations *[]string `json:"locations,omitempty"` + NetworkIdentifier *SubResource `json:"networkIdentifier,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_subnet.go b/resource-manager/network/2024-01-01/publicipaddresses/model_subnet.go new file mode 100644 index 00000000000..4dc6901bd98 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_subnet.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Subnet struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SubnetPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_subnetpropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_subnetpropertiesformat.go new file mode 100644 index 00000000000..72cc7de8610 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_subnetpropertiesformat.go @@ -0,0 +1,28 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + ApplicationGatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"applicationGatewayIPConfigurations,omitempty"` + DefaultOutboundAccess *bool `json:"defaultOutboundAccess,omitempty"` + Delegations *[]Delegation `json:"delegations,omitempty"` + IPAllocations *[]SubResource `json:"ipAllocations,omitempty"` + IPConfigurationProfiles *[]IPConfigurationProfile `json:"ipConfigurationProfiles,omitempty"` + IPConfigurations *[]IPConfiguration `json:"ipConfigurations,omitempty"` + NatGateway *SubResource `json:"natGateway,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + PrivateEndpointNetworkPolicies *VirtualNetworkPrivateEndpointNetworkPolicies `json:"privateEndpointNetworkPolicies,omitempty"` + PrivateEndpoints *[]PrivateEndpoint `json:"privateEndpoints,omitempty"` + PrivateLinkServiceNetworkPolicies *VirtualNetworkPrivateLinkServiceNetworkPolicies `json:"privateLinkServiceNetworkPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Purpose *string `json:"purpose,omitempty"` + ResourceNavigationLinks *[]ResourceNavigationLink `json:"resourceNavigationLinks,omitempty"` + RouteTable *RouteTable `json:"routeTable,omitempty"` + ServiceAssociationLinks *[]ServiceAssociationLink `json:"serviceAssociationLinks,omitempty"` + ServiceEndpointPolicies *[]ServiceEndpointPolicy `json:"serviceEndpointPolicies,omitempty"` + ServiceEndpoints *[]ServiceEndpointPropertiesFormat `json:"serviceEndpoints,omitempty"` + SharingScope *SharingScope `json:"sharingScope,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_subresource.go b/resource-manager/network/2024-01-01/publicipaddresses/model_subresource.go new file mode 100644 index 00000000000..f4a7d6a3248 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_subresource.go @@ -0,0 +1,8 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_tagsobject.go b/resource-manager/network/2024-01-01/publicipaddresses/model_tagsobject.go new file mode 100644 index 00000000000..717ed6f5d3d --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_tagsobject.go @@ -0,0 +1,8 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/publicipaddresses/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..f3cbae91cdc --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/publicipaddresses/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..4e34016e12e --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_virtualnetworktap.go b/resource-manager/network/2024-01-01/publicipaddresses/model_virtualnetworktap.go new file mode 100644 index 00000000000..b4791998c22 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_virtualnetworktap.go @@ -0,0 +1,14 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkTapPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/model_virtualnetworktappropertiesformat.go b/resource-manager/network/2024-01-01/publicipaddresses/model_virtualnetworktappropertiesformat.go new file mode 100644 index 00000000000..4f32bce3226 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/model_virtualnetworktappropertiesformat.go @@ -0,0 +1,13 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapPropertiesFormat struct { + DestinationLoadBalancerFrontEndIPConfiguration *FrontendIPConfiguration `json:"destinationLoadBalancerFrontEndIPConfiguration,omitempty"` + DestinationNetworkInterfaceIPConfiguration *NetworkInterfaceIPConfiguration `json:"destinationNetworkInterfaceIPConfiguration,omitempty"` + DestinationPort *int64 `json:"destinationPort,omitempty"` + NetworkInterfaceTapConfigurations *[]NetworkInterfaceTapConfiguration `json:"networkInterfaceTapConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/predicates.go b/resource-manager/network/2024-01-01/publicipaddresses/predicates.go new file mode 100644 index 00000000000..07d29ffa733 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/predicates.go @@ -0,0 +1,37 @@ +package publicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p PublicIPAddressOperationPredicate) Matches(input PublicIPAddress) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/publicipaddresses/version.go b/resource-manager/network/2024-01-01/publicipaddresses/version.go new file mode 100644 index 00000000000..a201b13accd --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipaddresses/version.go @@ -0,0 +1,12 @@ +package publicipaddresses + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/publicipaddresses/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/publicipprefixes/README.md b/resource-manager/network/2024-01-01/publicipprefixes/README.md new file mode 100644 index 00000000000..342f00ae818 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipprefixes/README.md @@ -0,0 +1,121 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/publicipprefixes` Documentation + +The `publicipprefixes` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/publicipprefixes" +``` + + +### Client Initialization + +```go +client := publicipprefixes.NewPublicIPPrefixesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `PublicIPPrefixesClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := publicipprefixes.NewPublicIPPrefixID("12345678-1234-9876-4563-123456789012", "example-resource-group", "publicIPPrefixValue") + +payload := publicipprefixes.PublicIPPrefix{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `PublicIPPrefixesClient.Delete` + +```go +ctx := context.TODO() +id := publicipprefixes.NewPublicIPPrefixID("12345678-1234-9876-4563-123456789012", "example-resource-group", "publicIPPrefixValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `PublicIPPrefixesClient.Get` + +```go +ctx := context.TODO() +id := publicipprefixes.NewPublicIPPrefixID("12345678-1234-9876-4563-123456789012", "example-resource-group", "publicIPPrefixValue") + +read, err := client.Get(ctx, id, publicipprefixes.DefaultGetOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `PublicIPPrefixesClient.List` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `PublicIPPrefixesClient.ListAll` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.ListAll(ctx, id)` can be used to do batched pagination +items, err := client.ListAllComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `PublicIPPrefixesClient.UpdateTags` + +```go +ctx := context.TODO() +id := publicipprefixes.NewPublicIPPrefixID("12345678-1234-9876-4563-123456789012", "example-resource-group", "publicIPPrefixValue") + +payload := publicipprefixes.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/publicipprefixes/client.go b/resource-manager/network/2024-01-01/publicipprefixes/client.go new file mode 100644 index 00000000000..7dfe8ac9af1 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipprefixes/client.go @@ -0,0 +1,26 @@ +package publicipprefixes + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPPrefixesClient struct { + Client *resourcemanager.Client +} + +func NewPublicIPPrefixesClientWithBaseURI(sdkApi sdkEnv.Api) (*PublicIPPrefixesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "publicipprefixes", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating PublicIPPrefixesClient: %+v", err) + } + + return &PublicIPPrefixesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/publicipprefixes/constants.go b/resource-manager/network/2024-01-01/publicipprefixes/constants.go new file mode 100644 index 00000000000..a8c1328b07b --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipprefixes/constants.go @@ -0,0 +1,215 @@ +package publicipprefixes + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} + +type NatGatewaySkuName string + +const ( + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +func PossibleValuesForNatGatewaySkuName() []string { + return []string{ + string(NatGatewaySkuNameStandard), + } +} + +func (s *NatGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNatGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNatGatewaySkuName(input string) (*NatGatewaySkuName, error) { + vals := map[string]NatGatewaySkuName{ + "standard": NatGatewaySkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NatGatewaySkuName(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type PublicIPPrefixSkuName string + +const ( + PublicIPPrefixSkuNameStandard PublicIPPrefixSkuName = "Standard" +) + +func PossibleValuesForPublicIPPrefixSkuName() []string { + return []string{ + string(PublicIPPrefixSkuNameStandard), + } +} + +func (s *PublicIPPrefixSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPPrefixSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPPrefixSkuName(input string) (*PublicIPPrefixSkuName, error) { + vals := map[string]PublicIPPrefixSkuName{ + "standard": PublicIPPrefixSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPPrefixSkuName(input) + return &out, nil +} + +type PublicIPPrefixSkuTier string + +const ( + PublicIPPrefixSkuTierGlobal PublicIPPrefixSkuTier = "Global" + PublicIPPrefixSkuTierRegional PublicIPPrefixSkuTier = "Regional" +) + +func PossibleValuesForPublicIPPrefixSkuTier() []string { + return []string{ + string(PublicIPPrefixSkuTierGlobal), + string(PublicIPPrefixSkuTierRegional), + } +} + +func (s *PublicIPPrefixSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPPrefixSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPPrefixSkuTier(input string) (*PublicIPPrefixSkuTier, error) { + vals := map[string]PublicIPPrefixSkuTier{ + "global": PublicIPPrefixSkuTierGlobal, + "regional": PublicIPPrefixSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPPrefixSkuTier(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/publicipprefixes/id_publicipprefix.go b/resource-manager/network/2024-01-01/publicipprefixes/id_publicipprefix.go new file mode 100644 index 00000000000..2fe61b6d66b --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipprefixes/id_publicipprefix.go @@ -0,0 +1,130 @@ +package publicipprefixes + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&PublicIPPrefixId{}) +} + +var _ resourceids.ResourceId = &PublicIPPrefixId{} + +// PublicIPPrefixId is a struct representing the Resource ID for a Public I P Prefix +type PublicIPPrefixId struct { + SubscriptionId string + ResourceGroupName string + PublicIPPrefixName string +} + +// NewPublicIPPrefixID returns a new PublicIPPrefixId struct +func NewPublicIPPrefixID(subscriptionId string, resourceGroupName string, publicIPPrefixName string) PublicIPPrefixId { + return PublicIPPrefixId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + PublicIPPrefixName: publicIPPrefixName, + } +} + +// ParsePublicIPPrefixID parses 'input' into a PublicIPPrefixId +func ParsePublicIPPrefixID(input string) (*PublicIPPrefixId, error) { + parser := resourceids.NewParserFromResourceIdType(&PublicIPPrefixId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PublicIPPrefixId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParsePublicIPPrefixIDInsensitively parses 'input' case-insensitively into a PublicIPPrefixId +// note: this method should only be used for API response data and not user input +func ParsePublicIPPrefixIDInsensitively(input string) (*PublicIPPrefixId, error) { + parser := resourceids.NewParserFromResourceIdType(&PublicIPPrefixId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := PublicIPPrefixId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *PublicIPPrefixId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.PublicIPPrefixName, ok = input.Parsed["publicIPPrefixName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "publicIPPrefixName", input) + } + + return nil +} + +// ValidatePublicIPPrefixID checks that 'input' can be parsed as a Public I P Prefix ID +func ValidatePublicIPPrefixID(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 := ParsePublicIPPrefixID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Public I P Prefix ID +func (id PublicIPPrefixId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/publicIPPrefixes/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.PublicIPPrefixName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Public I P Prefix ID +func (id PublicIPPrefixId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticPublicIPPrefixes", "publicIPPrefixes", "publicIPPrefixes"), + resourceids.UserSpecifiedSegment("publicIPPrefixName", "publicIPPrefixValue"), + } +} + +// String returns a human-readable description of this Public I P Prefix ID +func (id PublicIPPrefixId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Public I P Prefix Name: %q", id.PublicIPPrefixName), + } + return fmt.Sprintf("Public I P Prefix (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/publicipprefixes/id_publicipprefix_test.go b/resource-manager/network/2024-01-01/publicipprefixes/id_publicipprefix_test.go new file mode 100644 index 00000000000..6ec1cd54e2b --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipprefixes/id_publicipprefix_test.go @@ -0,0 +1,282 @@ +package publicipprefixes + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &PublicIPPrefixId{} + +func TestNewPublicIPPrefixID(t *testing.T) { + id := NewPublicIPPrefixID("12345678-1234-9876-4563-123456789012", "example-resource-group", "publicIPPrefixValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.PublicIPPrefixName != "publicIPPrefixValue" { + t.Fatalf("Expected %q but got %q for Segment 'PublicIPPrefixName'", id.PublicIPPrefixName, "publicIPPrefixValue") + } +} + +func TestFormatPublicIPPrefixID(t *testing.T) { + actual := NewPublicIPPrefixID("12345678-1234-9876-4563-123456789012", "example-resource-group", "publicIPPrefixValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/publicIPPrefixes/publicIPPrefixValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParsePublicIPPrefixID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PublicIPPrefixId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/publicIPPrefixes", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/publicIPPrefixes/publicIPPrefixValue", + Expected: &PublicIPPrefixId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + PublicIPPrefixName: "publicIPPrefixValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/publicIPPrefixes/publicIPPrefixValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePublicIPPrefixID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.PublicIPPrefixName != v.Expected.PublicIPPrefixName { + t.Fatalf("Expected %q but got %q for PublicIPPrefixName", v.Expected.PublicIPPrefixName, actual.PublicIPPrefixName) + } + + } +} + +func TestParsePublicIPPrefixIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *PublicIPPrefixId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/publicIPPrefixes", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/pUbLiCiPpReFiXeS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/publicIPPrefixes/publicIPPrefixValue", + Expected: &PublicIPPrefixId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + PublicIPPrefixName: "publicIPPrefixValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/publicIPPrefixes/publicIPPrefixValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/pUbLiCiPpReFiXeS/pUbLiCiPpReFiXvAlUe", + Expected: &PublicIPPrefixId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + PublicIPPrefixName: "pUbLiCiPpReFiXvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/pUbLiCiPpReFiXeS/pUbLiCiPpReFiXvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParsePublicIPPrefixIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.PublicIPPrefixName != v.Expected.PublicIPPrefixName { + t.Fatalf("Expected %q but got %q for PublicIPPrefixName", v.Expected.PublicIPPrefixName, actual.PublicIPPrefixName) + } + + } +} + +func TestSegmentsForPublicIPPrefixId(t *testing.T) { + segments := PublicIPPrefixId{}.Segments() + if len(segments) == 0 { + t.Fatalf("PublicIPPrefixId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/publicipprefixes/method_createorupdate.go b/resource-manager/network/2024-01-01/publicipprefixes/method_createorupdate.go new file mode 100644 index 00000000000..eb586e03d6c --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipprefixes/method_createorupdate.go @@ -0,0 +1,75 @@ +package publicipprefixes + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *PublicIPPrefix +} + +// CreateOrUpdate ... +func (c PublicIPPrefixesClient) CreateOrUpdate(ctx context.Context, id PublicIPPrefixId, input PublicIPPrefix) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c PublicIPPrefixesClient) CreateOrUpdateThenPoll(ctx context.Context, id PublicIPPrefixId, input PublicIPPrefix) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/publicipprefixes/method_delete.go b/resource-manager/network/2024-01-01/publicipprefixes/method_delete.go new file mode 100644 index 00000000000..4ef74511d04 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipprefixes/method_delete.go @@ -0,0 +1,71 @@ +package publicipprefixes + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c PublicIPPrefixesClient) Delete(ctx context.Context, id PublicIPPrefixId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c PublicIPPrefixesClient) DeleteThenPoll(ctx context.Context, id PublicIPPrefixId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/publicipprefixes/method_get.go b/resource-manager/network/2024-01-01/publicipprefixes/method_get.go new file mode 100644 index 00000000000..099ab527016 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipprefixes/method_get.go @@ -0,0 +1,83 @@ +package publicipprefixes + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *PublicIPPrefix +} + +type GetOperationOptions struct { + Expand *string +} + +func DefaultGetOperationOptions() GetOperationOptions { + return GetOperationOptions{} +} + +func (o GetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// Get ... +func (c PublicIPPrefixesClient) Get(ctx context.Context, id PublicIPPrefixId, options GetOperationOptions) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model PublicIPPrefix + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/publicipprefixes/method_list.go b/resource-manager/network/2024-01-01/publicipprefixes/method_list.go new file mode 100644 index 00000000000..c413af54862 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipprefixes/method_list.go @@ -0,0 +1,93 @@ +package publicipprefixes + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]PublicIPPrefix +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []PublicIPPrefix +} + +// List ... +func (c PublicIPPrefixesClient) List(ctx context.Context, id commonids.ResourceGroupId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/publicIPPrefixes", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]PublicIPPrefix `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c PublicIPPrefixesClient) ListComplete(ctx context.Context, id commonids.ResourceGroupId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, PublicIPPrefixOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c PublicIPPrefixesClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate PublicIPPrefixOperationPredicate) (result ListCompleteResult, err error) { + items := make([]PublicIPPrefix, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/publicipprefixes/method_listall.go b/resource-manager/network/2024-01-01/publicipprefixes/method_listall.go new file mode 100644 index 00000000000..c140ae5d7bb --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipprefixes/method_listall.go @@ -0,0 +1,93 @@ +package publicipprefixes + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAllOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]PublicIPPrefix +} + +type ListAllCompleteResult struct { + LatestHttpResponse *http.Response + Items []PublicIPPrefix +} + +// ListAll ... +func (c PublicIPPrefixesClient) ListAll(ctx context.Context, id commonids.SubscriptionId) (result ListAllOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/publicIPPrefixes", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]PublicIPPrefix `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListAllComplete retrieves all the results into a single object +func (c PublicIPPrefixesClient) ListAllComplete(ctx context.Context, id commonids.SubscriptionId) (ListAllCompleteResult, error) { + return c.ListAllCompleteMatchingPredicate(ctx, id, PublicIPPrefixOperationPredicate{}) +} + +// ListAllCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c PublicIPPrefixesClient) ListAllCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate PublicIPPrefixOperationPredicate) (result ListAllCompleteResult, err error) { + items := make([]PublicIPPrefix, 0) + + resp, err := c.ListAll(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListAllCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/publicipprefixes/method_updatetags.go b/resource-manager/network/2024-01-01/publicipprefixes/method_updatetags.go new file mode 100644 index 00000000000..e5257fc9717 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipprefixes/method_updatetags.go @@ -0,0 +1,58 @@ +package publicipprefixes + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *PublicIPPrefix +} + +// UpdateTags ... +func (c PublicIPPrefixesClient) UpdateTags(ctx context.Context, id PublicIPPrefixId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model PublicIPPrefix + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/publicipprefixes/model_iptag.go b/resource-manager/network/2024-01-01/publicipprefixes/model_iptag.go new file mode 100644 index 00000000000..e1bbbc73a6e --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipprefixes/model_iptag.go @@ -0,0 +1,9 @@ +package publicipprefixes + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPTag struct { + IPTagType *string `json:"ipTagType,omitempty"` + Tag *string `json:"tag,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipprefixes/model_natgateway.go b/resource-manager/network/2024-01-01/publicipprefixes/model_natgateway.go new file mode 100644 index 00000000000..170eeff6848 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipprefixes/model_natgateway.go @@ -0,0 +1,20 @@ +package publicipprefixes + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"` + Sku *NatGatewaySku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipprefixes/model_natgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/publicipprefixes/model_natgatewaypropertiesformat.go new file mode 100644 index 00000000000..5c1f46d3737 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipprefixes/model_natgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package publicipprefixes + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayPropertiesFormat struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]SubResource `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipprefixes/model_natgatewaysku.go b/resource-manager/network/2024-01-01/publicipprefixes/model_natgatewaysku.go new file mode 100644 index 00000000000..465e471e903 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipprefixes/model_natgatewaysku.go @@ -0,0 +1,8 @@ +package publicipprefixes + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySku struct { + Name *NatGatewaySkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipprefixes/model_publicipprefix.go b/resource-manager/network/2024-01-01/publicipprefixes/model_publicipprefix.go new file mode 100644 index 00000000000..6679bada47d --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipprefixes/model_publicipprefix.go @@ -0,0 +1,22 @@ +package publicipprefixes + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPPrefix struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PublicIPPrefixPropertiesFormat `json:"properties,omitempty"` + Sku *PublicIPPrefixSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipprefixes/model_publicipprefixpropertiesformat.go b/resource-manager/network/2024-01-01/publicipprefixes/model_publicipprefixpropertiesformat.go new file mode 100644 index 00000000000..32b58a818b3 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipprefixes/model_publicipprefixpropertiesformat.go @@ -0,0 +1,17 @@ +package publicipprefixes + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPPrefixPropertiesFormat struct { + CustomIPPrefix *SubResource `json:"customIPPrefix,omitempty"` + IPPrefix *string `json:"ipPrefix,omitempty"` + IPTags *[]IPTag `json:"ipTags,omitempty"` + LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIpConfiguration,omitempty"` + NatGateway *NatGateway `json:"natGateway,omitempty"` + PrefixLength *int64 `json:"prefixLength,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"` + PublicIPAddresses *[]ReferencedPublicIPAddress `json:"publicIPAddresses,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipprefixes/model_publicipprefixsku.go b/resource-manager/network/2024-01-01/publicipprefixes/model_publicipprefixsku.go new file mode 100644 index 00000000000..0737b92dee1 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipprefixes/model_publicipprefixsku.go @@ -0,0 +1,9 @@ +package publicipprefixes + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPPrefixSku struct { + Name *PublicIPPrefixSkuName `json:"name,omitempty"` + Tier *PublicIPPrefixSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipprefixes/model_referencedpublicipaddress.go b/resource-manager/network/2024-01-01/publicipprefixes/model_referencedpublicipaddress.go new file mode 100644 index 00000000000..26027a800a2 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipprefixes/model_referencedpublicipaddress.go @@ -0,0 +1,8 @@ +package publicipprefixes + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ReferencedPublicIPAddress struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipprefixes/model_subresource.go b/resource-manager/network/2024-01-01/publicipprefixes/model_subresource.go new file mode 100644 index 00000000000..53e3c780cbf --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipprefixes/model_subresource.go @@ -0,0 +1,8 @@ +package publicipprefixes + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipprefixes/model_tagsobject.go b/resource-manager/network/2024-01-01/publicipprefixes/model_tagsobject.go new file mode 100644 index 00000000000..6a82f86f28f --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipprefixes/model_tagsobject.go @@ -0,0 +1,8 @@ +package publicipprefixes + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/publicipprefixes/predicates.go b/resource-manager/network/2024-01-01/publicipprefixes/predicates.go new file mode 100644 index 00000000000..7deb3ca2bbf --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipprefixes/predicates.go @@ -0,0 +1,37 @@ +package publicipprefixes + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPPrefixOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p PublicIPPrefixOperationPredicate) Matches(input PublicIPPrefix) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/publicipprefixes/version.go b/resource-manager/network/2024-01-01/publicipprefixes/version.go new file mode 100644 index 00000000000..e38e72be5e6 --- /dev/null +++ b/resource-manager/network/2024-01-01/publicipprefixes/version.go @@ -0,0 +1,12 @@ +package publicipprefixes + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/publicipprefixes/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/routefilterrules/README.md b/resource-manager/network/2024-01-01/routefilterrules/README.md new file mode 100644 index 00000000000..60264b5a9ce --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilterrules/README.md @@ -0,0 +1,82 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/routefilterrules` Documentation + +The `routefilterrules` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/routefilterrules" +``` + + +### Client Initialization + +```go +client := routefilterrules.NewRouteFilterRulesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `RouteFilterRulesClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := routefilterrules.NewRouteFilterRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeFilterValue", "routeFilterRuleValue") + +payload := routefilterrules.RouteFilterRule{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `RouteFilterRulesClient.Delete` + +```go +ctx := context.TODO() +id := routefilterrules.NewRouteFilterRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeFilterValue", "routeFilterRuleValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `RouteFilterRulesClient.Get` + +```go +ctx := context.TODO() +id := routefilterrules.NewRouteFilterRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeFilterValue", "routeFilterRuleValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `RouteFilterRulesClient.ListByRouteFilter` + +```go +ctx := context.TODO() +id := routefilterrules.NewRouteFilterID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeFilterValue") + +// alternatively `client.ListByRouteFilter(ctx, id)` can be used to do batched pagination +items, err := client.ListByRouteFilterComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/routefilterrules/client.go b/resource-manager/network/2024-01-01/routefilterrules/client.go new file mode 100644 index 00000000000..018917d75d9 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilterrules/client.go @@ -0,0 +1,26 @@ +package routefilterrules + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteFilterRulesClient struct { + Client *resourcemanager.Client +} + +func NewRouteFilterRulesClientWithBaseURI(sdkApi sdkEnv.Api) (*RouteFilterRulesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "routefilterrules", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating RouteFilterRulesClient: %+v", err) + } + + return &RouteFilterRulesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/routefilterrules/constants.go b/resource-manager/network/2024-01-01/routefilterrules/constants.go new file mode 100644 index 00000000000..cf65052c645 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilterrules/constants.go @@ -0,0 +1,136 @@ +package routefilterrules + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Access string + +const ( + AccessAllow Access = "Allow" + AccessDeny Access = "Deny" +) + +func PossibleValuesForAccess() []string { + return []string{ + string(AccessAllow), + string(AccessDeny), + } +} + +func (s *Access) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAccess(input string) (*Access, error) { + vals := map[string]Access{ + "allow": AccessAllow, + "deny": AccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := Access(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type RouteFilterRuleType string + +const ( + RouteFilterRuleTypeCommunity RouteFilterRuleType = "Community" +) + +func PossibleValuesForRouteFilterRuleType() []string { + return []string{ + string(RouteFilterRuleTypeCommunity), + } +} + +func (s *RouteFilterRuleType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteFilterRuleType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteFilterRuleType(input string) (*RouteFilterRuleType, error) { + vals := map[string]RouteFilterRuleType{ + "community": RouteFilterRuleTypeCommunity, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteFilterRuleType(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/routefilterrules/id_routefilter.go b/resource-manager/network/2024-01-01/routefilterrules/id_routefilter.go new file mode 100644 index 00000000000..fc7b97a96ea --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilterrules/id_routefilter.go @@ -0,0 +1,130 @@ +package routefilterrules + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&RouteFilterId{}) +} + +var _ resourceids.ResourceId = &RouteFilterId{} + +// RouteFilterId is a struct representing the Resource ID for a Route Filter +type RouteFilterId struct { + SubscriptionId string + ResourceGroupName string + RouteFilterName string +} + +// NewRouteFilterID returns a new RouteFilterId struct +func NewRouteFilterID(subscriptionId string, resourceGroupName string, routeFilterName string) RouteFilterId { + return RouteFilterId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + RouteFilterName: routeFilterName, + } +} + +// ParseRouteFilterID parses 'input' into a RouteFilterId +func ParseRouteFilterID(input string) (*RouteFilterId, error) { + parser := resourceids.NewParserFromResourceIdType(&RouteFilterId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RouteFilterId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseRouteFilterIDInsensitively parses 'input' case-insensitively into a RouteFilterId +// note: this method should only be used for API response data and not user input +func ParseRouteFilterIDInsensitively(input string) (*RouteFilterId, error) { + parser := resourceids.NewParserFromResourceIdType(&RouteFilterId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RouteFilterId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *RouteFilterId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.RouteFilterName, ok = input.Parsed["routeFilterName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "routeFilterName", input) + } + + return nil +} + +// ValidateRouteFilterID checks that 'input' can be parsed as a Route Filter ID +func ValidateRouteFilterID(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 := ParseRouteFilterID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Route Filter ID +func (id RouteFilterId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/routeFilters/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.RouteFilterName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Route Filter ID +func (id RouteFilterId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticRouteFilters", "routeFilters", "routeFilters"), + resourceids.UserSpecifiedSegment("routeFilterName", "routeFilterValue"), + } +} + +// String returns a human-readable description of this Route Filter ID +func (id RouteFilterId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Route Filter Name: %q", id.RouteFilterName), + } + return fmt.Sprintf("Route Filter (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/routefilterrules/id_routefilter_test.go b/resource-manager/network/2024-01-01/routefilterrules/id_routefilter_test.go new file mode 100644 index 00000000000..50f5cbaeb48 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilterrules/id_routefilter_test.go @@ -0,0 +1,282 @@ +package routefilterrules + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &RouteFilterId{} + +func TestNewRouteFilterID(t *testing.T) { + id := NewRouteFilterID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeFilterValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.RouteFilterName != "routeFilterValue" { + t.Fatalf("Expected %q but got %q for Segment 'RouteFilterName'", id.RouteFilterName, "routeFilterValue") + } +} + +func TestFormatRouteFilterID(t *testing.T) { + actual := NewRouteFilterID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeFilterValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters/routeFilterValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseRouteFilterID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RouteFilterId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters/routeFilterValue", + Expected: &RouteFilterId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + RouteFilterName: "routeFilterValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters/routeFilterValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRouteFilterID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.RouteFilterName != v.Expected.RouteFilterName { + t.Fatalf("Expected %q but got %q for RouteFilterName", v.Expected.RouteFilterName, actual.RouteFilterName) + } + + } +} + +func TestParseRouteFilterIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RouteFilterId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/rOuTeFiLtErS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters/routeFilterValue", + Expected: &RouteFilterId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + RouteFilterName: "routeFilterValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters/routeFilterValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/rOuTeFiLtErS/rOuTeFiLtErVaLuE", + Expected: &RouteFilterId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + RouteFilterName: "rOuTeFiLtErVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/rOuTeFiLtErS/rOuTeFiLtErVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRouteFilterIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.RouteFilterName != v.Expected.RouteFilterName { + t.Fatalf("Expected %q but got %q for RouteFilterName", v.Expected.RouteFilterName, actual.RouteFilterName) + } + + } +} + +func TestSegmentsForRouteFilterId(t *testing.T) { + segments := RouteFilterId{}.Segments() + if len(segments) == 0 { + t.Fatalf("RouteFilterId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/routefilterrules/id_routefilterrule.go b/resource-manager/network/2024-01-01/routefilterrules/id_routefilterrule.go new file mode 100644 index 00000000000..ef13326b0c4 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilterrules/id_routefilterrule.go @@ -0,0 +1,139 @@ +package routefilterrules + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&RouteFilterRuleId{}) +} + +var _ resourceids.ResourceId = &RouteFilterRuleId{} + +// RouteFilterRuleId is a struct representing the Resource ID for a Route Filter Rule +type RouteFilterRuleId struct { + SubscriptionId string + ResourceGroupName string + RouteFilterName string + RouteFilterRuleName string +} + +// NewRouteFilterRuleID returns a new RouteFilterRuleId struct +func NewRouteFilterRuleID(subscriptionId string, resourceGroupName string, routeFilterName string, routeFilterRuleName string) RouteFilterRuleId { + return RouteFilterRuleId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + RouteFilterName: routeFilterName, + RouteFilterRuleName: routeFilterRuleName, + } +} + +// ParseRouteFilterRuleID parses 'input' into a RouteFilterRuleId +func ParseRouteFilterRuleID(input string) (*RouteFilterRuleId, error) { + parser := resourceids.NewParserFromResourceIdType(&RouteFilterRuleId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RouteFilterRuleId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseRouteFilterRuleIDInsensitively parses 'input' case-insensitively into a RouteFilterRuleId +// note: this method should only be used for API response data and not user input +func ParseRouteFilterRuleIDInsensitively(input string) (*RouteFilterRuleId, error) { + parser := resourceids.NewParserFromResourceIdType(&RouteFilterRuleId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RouteFilterRuleId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *RouteFilterRuleId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.RouteFilterName, ok = input.Parsed["routeFilterName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "routeFilterName", input) + } + + if id.RouteFilterRuleName, ok = input.Parsed["routeFilterRuleName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "routeFilterRuleName", input) + } + + return nil +} + +// ValidateRouteFilterRuleID checks that 'input' can be parsed as a Route Filter Rule ID +func ValidateRouteFilterRuleID(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 := ParseRouteFilterRuleID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Route Filter Rule ID +func (id RouteFilterRuleId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/routeFilters/%s/routeFilterRules/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.RouteFilterName, id.RouteFilterRuleName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Route Filter Rule ID +func (id RouteFilterRuleId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticRouteFilters", "routeFilters", "routeFilters"), + resourceids.UserSpecifiedSegment("routeFilterName", "routeFilterValue"), + resourceids.StaticSegment("staticRouteFilterRules", "routeFilterRules", "routeFilterRules"), + resourceids.UserSpecifiedSegment("routeFilterRuleName", "routeFilterRuleValue"), + } +} + +// String returns a human-readable description of this Route Filter Rule ID +func (id RouteFilterRuleId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Route Filter Name: %q", id.RouteFilterName), + fmt.Sprintf("Route Filter Rule Name: %q", id.RouteFilterRuleName), + } + return fmt.Sprintf("Route Filter Rule (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/routefilterrules/id_routefilterrule_test.go b/resource-manager/network/2024-01-01/routefilterrules/id_routefilterrule_test.go new file mode 100644 index 00000000000..2df370136c3 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilterrules/id_routefilterrule_test.go @@ -0,0 +1,327 @@ +package routefilterrules + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &RouteFilterRuleId{} + +func TestNewRouteFilterRuleID(t *testing.T) { + id := NewRouteFilterRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeFilterValue", "routeFilterRuleValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.RouteFilterName != "routeFilterValue" { + t.Fatalf("Expected %q but got %q for Segment 'RouteFilterName'", id.RouteFilterName, "routeFilterValue") + } + + if id.RouteFilterRuleName != "routeFilterRuleValue" { + t.Fatalf("Expected %q but got %q for Segment 'RouteFilterRuleName'", id.RouteFilterRuleName, "routeFilterRuleValue") + } +} + +func TestFormatRouteFilterRuleID(t *testing.T) { + actual := NewRouteFilterRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeFilterValue", "routeFilterRuleValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters/routeFilterValue/routeFilterRules/routeFilterRuleValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseRouteFilterRuleID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RouteFilterRuleId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters/routeFilterValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters/routeFilterValue/routeFilterRules", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters/routeFilterValue/routeFilterRules/routeFilterRuleValue", + Expected: &RouteFilterRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + RouteFilterName: "routeFilterValue", + RouteFilterRuleName: "routeFilterRuleValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters/routeFilterValue/routeFilterRules/routeFilterRuleValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRouteFilterRuleID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.RouteFilterName != v.Expected.RouteFilterName { + t.Fatalf("Expected %q but got %q for RouteFilterName", v.Expected.RouteFilterName, actual.RouteFilterName) + } + + if actual.RouteFilterRuleName != v.Expected.RouteFilterRuleName { + t.Fatalf("Expected %q but got %q for RouteFilterRuleName", v.Expected.RouteFilterRuleName, actual.RouteFilterRuleName) + } + + } +} + +func TestParseRouteFilterRuleIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RouteFilterRuleId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/rOuTeFiLtErS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters/routeFilterValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/rOuTeFiLtErS/rOuTeFiLtErVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters/routeFilterValue/routeFilterRules", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/rOuTeFiLtErS/rOuTeFiLtErVaLuE/rOuTeFiLtErRuLeS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters/routeFilterValue/routeFilterRules/routeFilterRuleValue", + Expected: &RouteFilterRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + RouteFilterName: "routeFilterValue", + RouteFilterRuleName: "routeFilterRuleValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters/routeFilterValue/routeFilterRules/routeFilterRuleValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/rOuTeFiLtErS/rOuTeFiLtErVaLuE/rOuTeFiLtErRuLeS/rOuTeFiLtErRuLeVaLuE", + Expected: &RouteFilterRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + RouteFilterName: "rOuTeFiLtErVaLuE", + RouteFilterRuleName: "rOuTeFiLtErRuLeVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/rOuTeFiLtErS/rOuTeFiLtErVaLuE/rOuTeFiLtErRuLeS/rOuTeFiLtErRuLeVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRouteFilterRuleIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.RouteFilterName != v.Expected.RouteFilterName { + t.Fatalf("Expected %q but got %q for RouteFilterName", v.Expected.RouteFilterName, actual.RouteFilterName) + } + + if actual.RouteFilterRuleName != v.Expected.RouteFilterRuleName { + t.Fatalf("Expected %q but got %q for RouteFilterRuleName", v.Expected.RouteFilterRuleName, actual.RouteFilterRuleName) + } + + } +} + +func TestSegmentsForRouteFilterRuleId(t *testing.T) { + segments := RouteFilterRuleId{}.Segments() + if len(segments) == 0 { + t.Fatalf("RouteFilterRuleId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/routefilterrules/method_createorupdate.go b/resource-manager/network/2024-01-01/routefilterrules/method_createorupdate.go new file mode 100644 index 00000000000..6e1717e3fce --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilterrules/method_createorupdate.go @@ -0,0 +1,75 @@ +package routefilterrules + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *RouteFilterRule +} + +// CreateOrUpdate ... +func (c RouteFilterRulesClient) CreateOrUpdate(ctx context.Context, id RouteFilterRuleId, input RouteFilterRule) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c RouteFilterRulesClient) CreateOrUpdateThenPoll(ctx context.Context, id RouteFilterRuleId, input RouteFilterRule) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/routefilterrules/method_delete.go b/resource-manager/network/2024-01-01/routefilterrules/method_delete.go new file mode 100644 index 00000000000..bbac130984b --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilterrules/method_delete.go @@ -0,0 +1,71 @@ +package routefilterrules + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c RouteFilterRulesClient) Delete(ctx context.Context, id RouteFilterRuleId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c RouteFilterRulesClient) DeleteThenPoll(ctx context.Context, id RouteFilterRuleId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/routefilterrules/method_get.go b/resource-manager/network/2024-01-01/routefilterrules/method_get.go new file mode 100644 index 00000000000..c28ac994637 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilterrules/method_get.go @@ -0,0 +1,54 @@ +package routefilterrules + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *RouteFilterRule +} + +// Get ... +func (c RouteFilterRulesClient) Get(ctx context.Context, id RouteFilterRuleId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model RouteFilterRule + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/routefilterrules/method_listbyroutefilter.go b/resource-manager/network/2024-01-01/routefilterrules/method_listbyroutefilter.go new file mode 100644 index 00000000000..6e367988a54 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilterrules/method_listbyroutefilter.go @@ -0,0 +1,92 @@ +package routefilterrules + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListByRouteFilterOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]RouteFilterRule +} + +type ListByRouteFilterCompleteResult struct { + LatestHttpResponse *http.Response + Items []RouteFilterRule +} + +// ListByRouteFilter ... +func (c RouteFilterRulesClient) ListByRouteFilter(ctx context.Context, id RouteFilterId) (result ListByRouteFilterOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/routeFilterRules", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]RouteFilterRule `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListByRouteFilterComplete retrieves all the results into a single object +func (c RouteFilterRulesClient) ListByRouteFilterComplete(ctx context.Context, id RouteFilterId) (ListByRouteFilterCompleteResult, error) { + return c.ListByRouteFilterCompleteMatchingPredicate(ctx, id, RouteFilterRuleOperationPredicate{}) +} + +// ListByRouteFilterCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c RouteFilterRulesClient) ListByRouteFilterCompleteMatchingPredicate(ctx context.Context, id RouteFilterId, predicate RouteFilterRuleOperationPredicate) (result ListByRouteFilterCompleteResult, err error) { + items := make([]RouteFilterRule, 0) + + resp, err := c.ListByRouteFilter(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListByRouteFilterCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/routefilterrules/model_routefilterrule.go b/resource-manager/network/2024-01-01/routefilterrules/model_routefilterrule.go new file mode 100644 index 00000000000..d3ad4488a83 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilterrules/model_routefilterrule.go @@ -0,0 +1,12 @@ +package routefilterrules + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteFilterRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteFilterRulePropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routefilterrules/model_routefilterrulepropertiesformat.go b/resource-manager/network/2024-01-01/routefilterrules/model_routefilterrulepropertiesformat.go new file mode 100644 index 00000000000..e59fbff04f1 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilterrules/model_routefilterrulepropertiesformat.go @@ -0,0 +1,11 @@ +package routefilterrules + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteFilterRulePropertiesFormat struct { + Access Access `json:"access"` + Communities []string `json:"communities"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RouteFilterRuleType RouteFilterRuleType `json:"routeFilterRuleType"` +} diff --git a/resource-manager/network/2024-01-01/routefilterrules/predicates.go b/resource-manager/network/2024-01-01/routefilterrules/predicates.go new file mode 100644 index 00000000000..3067b052089 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilterrules/predicates.go @@ -0,0 +1,32 @@ +package routefilterrules + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteFilterRuleOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string +} + +func (p RouteFilterRuleOperationPredicate) Matches(input RouteFilterRule) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/routefilterrules/version.go b/resource-manager/network/2024-01-01/routefilterrules/version.go new file mode 100644 index 00000000000..29b88191f83 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilterrules/version.go @@ -0,0 +1,12 @@ +package routefilterrules + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/routefilterrules/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/routefilters/README.md b/resource-manager/network/2024-01-01/routefilters/README.md new file mode 100644 index 00000000000..203adcd8979 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/README.md @@ -0,0 +1,121 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/routefilters` Documentation + +The `routefilters` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/routefilters" +``` + + +### Client Initialization + +```go +client := routefilters.NewRouteFiltersClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `RouteFiltersClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := routefilters.NewRouteFilterID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeFilterValue") + +payload := routefilters.RouteFilter{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `RouteFiltersClient.Delete` + +```go +ctx := context.TODO() +id := routefilters.NewRouteFilterID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeFilterValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `RouteFiltersClient.Get` + +```go +ctx := context.TODO() +id := routefilters.NewRouteFilterID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeFilterValue") + +read, err := client.Get(ctx, id, routefilters.DefaultGetOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `RouteFiltersClient.List` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `RouteFiltersClient.ListByResourceGroup` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.ListByResourceGroup(ctx, id)` can be used to do batched pagination +items, err := client.ListByResourceGroupComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `RouteFiltersClient.UpdateTags` + +```go +ctx := context.TODO() +id := routefilters.NewRouteFilterID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeFilterValue") + +payload := routefilters.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/routefilters/client.go b/resource-manager/network/2024-01-01/routefilters/client.go new file mode 100644 index 00000000000..e4faeb1d622 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/client.go @@ -0,0 +1,26 @@ +package routefilters + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteFiltersClient struct { + Client *resourcemanager.Client +} + +func NewRouteFiltersClientWithBaseURI(sdkApi sdkEnv.Api) (*RouteFiltersClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "routefilters", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating RouteFiltersClient: %+v", err) + } + + return &RouteFiltersClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/routefilters/constants.go b/resource-manager/network/2024-01-01/routefilters/constants.go new file mode 100644 index 00000000000..47cec86d290 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/constants.go @@ -0,0 +1,353 @@ +package routefilters + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Access string + +const ( + AccessAllow Access = "Allow" + AccessDeny Access = "Deny" +) + +func PossibleValuesForAccess() []string { + return []string{ + string(AccessAllow), + string(AccessDeny), + } +} + +func (s *Access) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAccess(input string) (*Access, error) { + vals := map[string]Access{ + "allow": AccessAllow, + "deny": AccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := Access(input) + return &out, nil +} + +type CircuitConnectionStatus string + +const ( + CircuitConnectionStatusConnected CircuitConnectionStatus = "Connected" + CircuitConnectionStatusConnecting CircuitConnectionStatus = "Connecting" + CircuitConnectionStatusDisconnected CircuitConnectionStatus = "Disconnected" +) + +func PossibleValuesForCircuitConnectionStatus() []string { + return []string{ + string(CircuitConnectionStatusConnected), + string(CircuitConnectionStatusConnecting), + string(CircuitConnectionStatusDisconnected), + } +} + +func (s *CircuitConnectionStatus) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseCircuitConnectionStatus(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseCircuitConnectionStatus(input string) (*CircuitConnectionStatus, error) { + vals := map[string]CircuitConnectionStatus{ + "connected": CircuitConnectionStatusConnected, + "connecting": CircuitConnectionStatusConnecting, + "disconnected": CircuitConnectionStatusDisconnected, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := CircuitConnectionStatus(input) + return &out, nil +} + +type ExpressRouteCircuitPeeringAdvertisedPublicPrefixState string + +const ( + ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfigured ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "Configured" + ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfiguring ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "Configuring" + ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateNotConfigured ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "NotConfigured" + ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateValidationNeeded ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "ValidationNeeded" +) + +func PossibleValuesForExpressRouteCircuitPeeringAdvertisedPublicPrefixState() []string { + return []string{ + string(ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfigured), + string(ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfiguring), + string(ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateNotConfigured), + string(ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateValidationNeeded), + } +} + +func (s *ExpressRouteCircuitPeeringAdvertisedPublicPrefixState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRouteCircuitPeeringAdvertisedPublicPrefixState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRouteCircuitPeeringAdvertisedPublicPrefixState(input string) (*ExpressRouteCircuitPeeringAdvertisedPublicPrefixState, error) { + vals := map[string]ExpressRouteCircuitPeeringAdvertisedPublicPrefixState{ + "configured": ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfigured, + "configuring": ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateConfiguring, + "notconfigured": ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateNotConfigured, + "validationneeded": ExpressRouteCircuitPeeringAdvertisedPublicPrefixStateValidationNeeded, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRouteCircuitPeeringAdvertisedPublicPrefixState(input) + return &out, nil +} + +type ExpressRouteCircuitPeeringState string + +const ( + ExpressRouteCircuitPeeringStateDisabled ExpressRouteCircuitPeeringState = "Disabled" + ExpressRouteCircuitPeeringStateEnabled ExpressRouteCircuitPeeringState = "Enabled" +) + +func PossibleValuesForExpressRouteCircuitPeeringState() []string { + return []string{ + string(ExpressRouteCircuitPeeringStateDisabled), + string(ExpressRouteCircuitPeeringStateEnabled), + } +} + +func (s *ExpressRouteCircuitPeeringState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRouteCircuitPeeringState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRouteCircuitPeeringState(input string) (*ExpressRouteCircuitPeeringState, error) { + vals := map[string]ExpressRouteCircuitPeeringState{ + "disabled": ExpressRouteCircuitPeeringStateDisabled, + "enabled": ExpressRouteCircuitPeeringStateEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRouteCircuitPeeringState(input) + return &out, nil +} + +type ExpressRoutePeeringState string + +const ( + ExpressRoutePeeringStateDisabled ExpressRoutePeeringState = "Disabled" + ExpressRoutePeeringStateEnabled ExpressRoutePeeringState = "Enabled" +) + +func PossibleValuesForExpressRoutePeeringState() []string { + return []string{ + string(ExpressRoutePeeringStateDisabled), + string(ExpressRoutePeeringStateEnabled), + } +} + +func (s *ExpressRoutePeeringState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRoutePeeringState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRoutePeeringState(input string) (*ExpressRoutePeeringState, error) { + vals := map[string]ExpressRoutePeeringState{ + "disabled": ExpressRoutePeeringStateDisabled, + "enabled": ExpressRoutePeeringStateEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRoutePeeringState(input) + return &out, nil +} + +type ExpressRoutePeeringType string + +const ( + ExpressRoutePeeringTypeAzurePrivatePeering ExpressRoutePeeringType = "AzurePrivatePeering" + ExpressRoutePeeringTypeAzurePublicPeering ExpressRoutePeeringType = "AzurePublicPeering" + ExpressRoutePeeringTypeMicrosoftPeering ExpressRoutePeeringType = "MicrosoftPeering" +) + +func PossibleValuesForExpressRoutePeeringType() []string { + return []string{ + string(ExpressRoutePeeringTypeAzurePrivatePeering), + string(ExpressRoutePeeringTypeAzurePublicPeering), + string(ExpressRoutePeeringTypeMicrosoftPeering), + } +} + +func (s *ExpressRoutePeeringType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseExpressRoutePeeringType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseExpressRoutePeeringType(input string) (*ExpressRoutePeeringType, error) { + vals := map[string]ExpressRoutePeeringType{ + "azureprivatepeering": ExpressRoutePeeringTypeAzurePrivatePeering, + "azurepublicpeering": ExpressRoutePeeringTypeAzurePublicPeering, + "microsoftpeering": ExpressRoutePeeringTypeMicrosoftPeering, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ExpressRoutePeeringType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type RouteFilterRuleType string + +const ( + RouteFilterRuleTypeCommunity RouteFilterRuleType = "Community" +) + +func PossibleValuesForRouteFilterRuleType() []string { + return []string{ + string(RouteFilterRuleTypeCommunity), + } +} + +func (s *RouteFilterRuleType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteFilterRuleType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteFilterRuleType(input string) (*RouteFilterRuleType, error) { + vals := map[string]RouteFilterRuleType{ + "community": RouteFilterRuleTypeCommunity, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteFilterRuleType(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/routefilters/id_routefilter.go b/resource-manager/network/2024-01-01/routefilters/id_routefilter.go new file mode 100644 index 00000000000..18b55731fae --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/id_routefilter.go @@ -0,0 +1,130 @@ +package routefilters + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&RouteFilterId{}) +} + +var _ resourceids.ResourceId = &RouteFilterId{} + +// RouteFilterId is a struct representing the Resource ID for a Route Filter +type RouteFilterId struct { + SubscriptionId string + ResourceGroupName string + RouteFilterName string +} + +// NewRouteFilterID returns a new RouteFilterId struct +func NewRouteFilterID(subscriptionId string, resourceGroupName string, routeFilterName string) RouteFilterId { + return RouteFilterId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + RouteFilterName: routeFilterName, + } +} + +// ParseRouteFilterID parses 'input' into a RouteFilterId +func ParseRouteFilterID(input string) (*RouteFilterId, error) { + parser := resourceids.NewParserFromResourceIdType(&RouteFilterId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RouteFilterId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseRouteFilterIDInsensitively parses 'input' case-insensitively into a RouteFilterId +// note: this method should only be used for API response data and not user input +func ParseRouteFilterIDInsensitively(input string) (*RouteFilterId, error) { + parser := resourceids.NewParserFromResourceIdType(&RouteFilterId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RouteFilterId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *RouteFilterId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.RouteFilterName, ok = input.Parsed["routeFilterName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "routeFilterName", input) + } + + return nil +} + +// ValidateRouteFilterID checks that 'input' can be parsed as a Route Filter ID +func ValidateRouteFilterID(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 := ParseRouteFilterID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Route Filter ID +func (id RouteFilterId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/routeFilters/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.RouteFilterName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Route Filter ID +func (id RouteFilterId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticRouteFilters", "routeFilters", "routeFilters"), + resourceids.UserSpecifiedSegment("routeFilterName", "routeFilterValue"), + } +} + +// String returns a human-readable description of this Route Filter ID +func (id RouteFilterId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Route Filter Name: %q", id.RouteFilterName), + } + return fmt.Sprintf("Route Filter (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/routefilters/id_routefilter_test.go b/resource-manager/network/2024-01-01/routefilters/id_routefilter_test.go new file mode 100644 index 00000000000..c49325e7a59 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/id_routefilter_test.go @@ -0,0 +1,282 @@ +package routefilters + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &RouteFilterId{} + +func TestNewRouteFilterID(t *testing.T) { + id := NewRouteFilterID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeFilterValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.RouteFilterName != "routeFilterValue" { + t.Fatalf("Expected %q but got %q for Segment 'RouteFilterName'", id.RouteFilterName, "routeFilterValue") + } +} + +func TestFormatRouteFilterID(t *testing.T) { + actual := NewRouteFilterID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeFilterValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters/routeFilterValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseRouteFilterID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RouteFilterId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters/routeFilterValue", + Expected: &RouteFilterId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + RouteFilterName: "routeFilterValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters/routeFilterValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRouteFilterID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.RouteFilterName != v.Expected.RouteFilterName { + t.Fatalf("Expected %q but got %q for RouteFilterName", v.Expected.RouteFilterName, actual.RouteFilterName) + } + + } +} + +func TestParseRouteFilterIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RouteFilterId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/rOuTeFiLtErS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters/routeFilterValue", + Expected: &RouteFilterId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + RouteFilterName: "routeFilterValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeFilters/routeFilterValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/rOuTeFiLtErS/rOuTeFiLtErVaLuE", + Expected: &RouteFilterId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + RouteFilterName: "rOuTeFiLtErVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/rOuTeFiLtErS/rOuTeFiLtErVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRouteFilterIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.RouteFilterName != v.Expected.RouteFilterName { + t.Fatalf("Expected %q but got %q for RouteFilterName", v.Expected.RouteFilterName, actual.RouteFilterName) + } + + } +} + +func TestSegmentsForRouteFilterId(t *testing.T) { + segments := RouteFilterId{}.Segments() + if len(segments) == 0 { + t.Fatalf("RouteFilterId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/routefilters/method_createorupdate.go b/resource-manager/network/2024-01-01/routefilters/method_createorupdate.go new file mode 100644 index 00000000000..4881008706e --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/method_createorupdate.go @@ -0,0 +1,75 @@ +package routefilters + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *RouteFilter +} + +// CreateOrUpdate ... +func (c RouteFiltersClient) CreateOrUpdate(ctx context.Context, id RouteFilterId, input RouteFilter) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c RouteFiltersClient) CreateOrUpdateThenPoll(ctx context.Context, id RouteFilterId, input RouteFilter) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/routefilters/method_delete.go b/resource-manager/network/2024-01-01/routefilters/method_delete.go new file mode 100644 index 00000000000..1a389b5108c --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/method_delete.go @@ -0,0 +1,71 @@ +package routefilters + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c RouteFiltersClient) Delete(ctx context.Context, id RouteFilterId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c RouteFiltersClient) DeleteThenPoll(ctx context.Context, id RouteFilterId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/routefilters/method_get.go b/resource-manager/network/2024-01-01/routefilters/method_get.go new file mode 100644 index 00000000000..55c6ee5fa8f --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/method_get.go @@ -0,0 +1,83 @@ +package routefilters + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *RouteFilter +} + +type GetOperationOptions struct { + Expand *string +} + +func DefaultGetOperationOptions() GetOperationOptions { + return GetOperationOptions{} +} + +func (o GetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// Get ... +func (c RouteFiltersClient) Get(ctx context.Context, id RouteFilterId, options GetOperationOptions) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model RouteFilter + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/routefilters/method_list.go b/resource-manager/network/2024-01-01/routefilters/method_list.go new file mode 100644 index 00000000000..934ec1fccd5 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/method_list.go @@ -0,0 +1,93 @@ +package routefilters + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]RouteFilter +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []RouteFilter +} + +// List ... +func (c RouteFiltersClient) List(ctx context.Context, id commonids.SubscriptionId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/routeFilters", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]RouteFilter `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c RouteFiltersClient) ListComplete(ctx context.Context, id commonids.SubscriptionId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, RouteFilterOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c RouteFiltersClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate RouteFilterOperationPredicate) (result ListCompleteResult, err error) { + items := make([]RouteFilter, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/routefilters/method_listbyresourcegroup.go b/resource-manager/network/2024-01-01/routefilters/method_listbyresourcegroup.go new file mode 100644 index 00000000000..a320717ba09 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/method_listbyresourcegroup.go @@ -0,0 +1,93 @@ +package routefilters + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListByResourceGroupOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]RouteFilter +} + +type ListByResourceGroupCompleteResult struct { + LatestHttpResponse *http.Response + Items []RouteFilter +} + +// ListByResourceGroup ... +func (c RouteFiltersClient) ListByResourceGroup(ctx context.Context, id commonids.ResourceGroupId) (result ListByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/routeFilters", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]RouteFilter `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListByResourceGroupComplete retrieves all the results into a single object +func (c RouteFiltersClient) ListByResourceGroupComplete(ctx context.Context, id commonids.ResourceGroupId) (ListByResourceGroupCompleteResult, error) { + return c.ListByResourceGroupCompleteMatchingPredicate(ctx, id, RouteFilterOperationPredicate{}) +} + +// ListByResourceGroupCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c RouteFiltersClient) ListByResourceGroupCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate RouteFilterOperationPredicate) (result ListByResourceGroupCompleteResult, err error) { + items := make([]RouteFilter, 0) + + resp, err := c.ListByResourceGroup(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListByResourceGroupCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/routefilters/method_updatetags.go b/resource-manager/network/2024-01-01/routefilters/method_updatetags.go new file mode 100644 index 00000000000..33bbd5301d9 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/method_updatetags.go @@ -0,0 +1,58 @@ +package routefilters + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *RouteFilter +} + +// UpdateTags ... +func (c RouteFiltersClient) UpdateTags(ctx context.Context, id RouteFilterId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model RouteFilter + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/routefilters/model_expressroutecircuitconnection.go b/resource-manager/network/2024-01-01/routefilters/model_expressroutecircuitconnection.go new file mode 100644 index 00000000000..b4ee9836dca --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/model_expressroutecircuitconnection.go @@ -0,0 +1,12 @@ +package routefilters + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ExpressRouteCircuitConnectionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routefilters/model_expressroutecircuitconnectionpropertiesformat.go b/resource-manager/network/2024-01-01/routefilters/model_expressroutecircuitconnectionpropertiesformat.go new file mode 100644 index 00000000000..2e9948e07f4 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/model_expressroutecircuitconnectionpropertiesformat.go @@ -0,0 +1,14 @@ +package routefilters + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitConnectionPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AuthorizationKey *string `json:"authorizationKey,omitempty"` + CircuitConnectionStatus *CircuitConnectionStatus `json:"circuitConnectionStatus,omitempty"` + ExpressRouteCircuitPeering *SubResource `json:"expressRouteCircuitPeering,omitempty"` + IPv6CircuitConnectionConfig *IPv6CircuitConnectionConfig `json:"ipv6CircuitConnectionConfig,omitempty"` + PeerExpressRouteCircuitPeering *SubResource `json:"peerExpressRouteCircuitPeering,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routefilters/model_expressroutecircuitpeering.go b/resource-manager/network/2024-01-01/routefilters/model_expressroutecircuitpeering.go new file mode 100644 index 00000000000..79ef27f6ed8 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/model_expressroutecircuitpeering.go @@ -0,0 +1,12 @@ +package routefilters + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitPeering struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ExpressRouteCircuitPeeringPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routefilters/model_expressroutecircuitpeeringconfig.go b/resource-manager/network/2024-01-01/routefilters/model_expressroutecircuitpeeringconfig.go new file mode 100644 index 00000000000..43de7805714 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/model_expressroutecircuitpeeringconfig.go @@ -0,0 +1,13 @@ +package routefilters + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitPeeringConfig struct { + AdvertisedCommunities *[]string `json:"advertisedCommunities,omitempty"` + AdvertisedPublicPrefixes *[]string `json:"advertisedPublicPrefixes,omitempty"` + AdvertisedPublicPrefixesState *ExpressRouteCircuitPeeringAdvertisedPublicPrefixState `json:"advertisedPublicPrefixesState,omitempty"` + CustomerASN *int64 `json:"customerASN,omitempty"` + LegacyMode *int64 `json:"legacyMode,omitempty"` + RoutingRegistryName *string `json:"routingRegistryName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routefilters/model_expressroutecircuitpeeringpropertiesformat.go b/resource-manager/network/2024-01-01/routefilters/model_expressroutecircuitpeeringpropertiesformat.go new file mode 100644 index 00000000000..1f5f8e7a726 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/model_expressroutecircuitpeeringpropertiesformat.go @@ -0,0 +1,27 @@ +package routefilters + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitPeeringPropertiesFormat struct { + AzureASN *int64 `json:"azureASN,omitempty"` + Connections *[]ExpressRouteCircuitConnection `json:"connections,omitempty"` + ExpressRouteConnection *ExpressRouteConnectionId `json:"expressRouteConnection,omitempty"` + GatewayManagerEtag *string `json:"gatewayManagerEtag,omitempty"` + IPv6PeeringConfig *IPv6ExpressRouteCircuitPeeringConfig `json:"ipv6PeeringConfig,omitempty"` + LastModifiedBy *string `json:"lastModifiedBy,omitempty"` + MicrosoftPeeringConfig *ExpressRouteCircuitPeeringConfig `json:"microsoftPeeringConfig,omitempty"` + PeerASN *int64 `json:"peerASN,omitempty"` + PeeredConnections *[]PeerExpressRouteCircuitConnection `json:"peeredConnections,omitempty"` + PeeringType *ExpressRoutePeeringType `json:"peeringType,omitempty"` + PrimaryAzurePort *string `json:"primaryAzurePort,omitempty"` + PrimaryPeerAddressPrefix *string `json:"primaryPeerAddressPrefix,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RouteFilter *SubResource `json:"routeFilter,omitempty"` + SecondaryAzurePort *string `json:"secondaryAzurePort,omitempty"` + SecondaryPeerAddressPrefix *string `json:"secondaryPeerAddressPrefix,omitempty"` + SharedKey *string `json:"sharedKey,omitempty"` + State *ExpressRoutePeeringState `json:"state,omitempty"` + Stats *ExpressRouteCircuitStats `json:"stats,omitempty"` + VlanId *int64 `json:"vlanId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routefilters/model_expressroutecircuitstats.go b/resource-manager/network/2024-01-01/routefilters/model_expressroutecircuitstats.go new file mode 100644 index 00000000000..b57109bba40 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/model_expressroutecircuitstats.go @@ -0,0 +1,11 @@ +package routefilters + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteCircuitStats struct { + PrimarybytesIn *int64 `json:"primarybytesIn,omitempty"` + PrimarybytesOut *int64 `json:"primarybytesOut,omitempty"` + SecondarybytesIn *int64 `json:"secondarybytesIn,omitempty"` + SecondarybytesOut *int64 `json:"secondarybytesOut,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routefilters/model_expressrouteconnectionid.go b/resource-manager/network/2024-01-01/routefilters/model_expressrouteconnectionid.go new file mode 100644 index 00000000000..8d033b8e0e1 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/model_expressrouteconnectionid.go @@ -0,0 +1,8 @@ +package routefilters + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExpressRouteConnectionId struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routefilters/model_ipv6circuitconnectionconfig.go b/resource-manager/network/2024-01-01/routefilters/model_ipv6circuitconnectionconfig.go new file mode 100644 index 00000000000..036a19fa8aa --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/model_ipv6circuitconnectionconfig.go @@ -0,0 +1,9 @@ +package routefilters + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPv6CircuitConnectionConfig struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + CircuitConnectionStatus *CircuitConnectionStatus `json:"circuitConnectionStatus,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routefilters/model_ipv6expressroutecircuitpeeringconfig.go b/resource-manager/network/2024-01-01/routefilters/model_ipv6expressroutecircuitpeeringconfig.go new file mode 100644 index 00000000000..66f1810d2ef --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/model_ipv6expressroutecircuitpeeringconfig.go @@ -0,0 +1,12 @@ +package routefilters + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPv6ExpressRouteCircuitPeeringConfig struct { + MicrosoftPeeringConfig *ExpressRouteCircuitPeeringConfig `json:"microsoftPeeringConfig,omitempty"` + PrimaryPeerAddressPrefix *string `json:"primaryPeerAddressPrefix,omitempty"` + RouteFilter *SubResource `json:"routeFilter,omitempty"` + SecondaryPeerAddressPrefix *string `json:"secondaryPeerAddressPrefix,omitempty"` + State *ExpressRouteCircuitPeeringState `json:"state,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routefilters/model_peerexpressroutecircuitconnection.go b/resource-manager/network/2024-01-01/routefilters/model_peerexpressroutecircuitconnection.go new file mode 100644 index 00000000000..1cceefb8321 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/model_peerexpressroutecircuitconnection.go @@ -0,0 +1,12 @@ +package routefilters + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PeerExpressRouteCircuitConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PeerExpressRouteCircuitConnectionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routefilters/model_peerexpressroutecircuitconnectionpropertiesformat.go b/resource-manager/network/2024-01-01/routefilters/model_peerexpressroutecircuitconnectionpropertiesformat.go new file mode 100644 index 00000000000..ae3652f5c1b --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/model_peerexpressroutecircuitconnectionpropertiesformat.go @@ -0,0 +1,14 @@ +package routefilters + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PeerExpressRouteCircuitConnectionPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AuthResourceGuid *string `json:"authResourceGuid,omitempty"` + CircuitConnectionStatus *CircuitConnectionStatus `json:"circuitConnectionStatus,omitempty"` + ConnectionName *string `json:"connectionName,omitempty"` + ExpressRouteCircuitPeering *SubResource `json:"expressRouteCircuitPeering,omitempty"` + PeerExpressRouteCircuitPeering *SubResource `json:"peerExpressRouteCircuitPeering,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routefilters/model_routefilter.go b/resource-manager/network/2024-01-01/routefilters/model_routefilter.go new file mode 100644 index 00000000000..932567d03cc --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/model_routefilter.go @@ -0,0 +1,14 @@ +package routefilters + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteFilter struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteFilterPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routefilters/model_routefilterpropertiesformat.go b/resource-manager/network/2024-01-01/routefilters/model_routefilterpropertiesformat.go new file mode 100644 index 00000000000..3442c803e11 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/model_routefilterpropertiesformat.go @@ -0,0 +1,11 @@ +package routefilters + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteFilterPropertiesFormat struct { + IPv6Peerings *[]ExpressRouteCircuitPeering `json:"ipv6Peerings,omitempty"` + Peerings *[]ExpressRouteCircuitPeering `json:"peerings,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Rules *[]RouteFilterRule `json:"rules,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routefilters/model_routefilterrule.go b/resource-manager/network/2024-01-01/routefilters/model_routefilterrule.go new file mode 100644 index 00000000000..7bce6e5cdbc --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/model_routefilterrule.go @@ -0,0 +1,12 @@ +package routefilters + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteFilterRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteFilterRulePropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routefilters/model_routefilterrulepropertiesformat.go b/resource-manager/network/2024-01-01/routefilters/model_routefilterrulepropertiesformat.go new file mode 100644 index 00000000000..70f71e0d28d --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/model_routefilterrulepropertiesformat.go @@ -0,0 +1,11 @@ +package routefilters + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteFilterRulePropertiesFormat struct { + Access Access `json:"access"` + Communities []string `json:"communities"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RouteFilterRuleType RouteFilterRuleType `json:"routeFilterRuleType"` +} diff --git a/resource-manager/network/2024-01-01/routefilters/model_subresource.go b/resource-manager/network/2024-01-01/routefilters/model_subresource.go new file mode 100644 index 00000000000..18344aa65b5 --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/model_subresource.go @@ -0,0 +1,8 @@ +package routefilters + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routefilters/model_tagsobject.go b/resource-manager/network/2024-01-01/routefilters/model_tagsobject.go new file mode 100644 index 00000000000..7657d1402ea --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/model_tagsobject.go @@ -0,0 +1,8 @@ +package routefilters + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routefilters/predicates.go b/resource-manager/network/2024-01-01/routefilters/predicates.go new file mode 100644 index 00000000000..333d40af18b --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/predicates.go @@ -0,0 +1,37 @@ +package routefilters + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteFilterOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p RouteFilterOperationPredicate) Matches(input RouteFilter) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/routefilters/version.go b/resource-manager/network/2024-01-01/routefilters/version.go new file mode 100644 index 00000000000..8d5f3bd95ec --- /dev/null +++ b/resource-manager/network/2024-01-01/routefilters/version.go @@ -0,0 +1,12 @@ +package routefilters + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/routefilters/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/routes/README.md b/resource-manager/network/2024-01-01/routes/README.md new file mode 100644 index 00000000000..9de653bb58d --- /dev/null +++ b/resource-manager/network/2024-01-01/routes/README.md @@ -0,0 +1,82 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/routes` Documentation + +The `routes` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/routes" +``` + + +### Client Initialization + +```go +client := routes.NewRoutesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `RoutesClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := routes.NewRouteID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeTableValue", "routeValue") + +payload := routes.Route{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `RoutesClient.Delete` + +```go +ctx := context.TODO() +id := routes.NewRouteID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeTableValue", "routeValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `RoutesClient.Get` + +```go +ctx := context.TODO() +id := routes.NewRouteID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeTableValue", "routeValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `RoutesClient.List` + +```go +ctx := context.TODO() +id := routes.NewRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeTableValue") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/routes/client.go b/resource-manager/network/2024-01-01/routes/client.go new file mode 100644 index 00000000000..4372f694741 --- /dev/null +++ b/resource-manager/network/2024-01-01/routes/client.go @@ -0,0 +1,26 @@ +package routes + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutesClient struct { + Client *resourcemanager.Client +} + +func NewRoutesClientWithBaseURI(sdkApi sdkEnv.Api) (*RoutesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "routes", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating RoutesClient: %+v", err) + } + + return &RoutesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/routes/constants.go b/resource-manager/network/2024-01-01/routes/constants.go new file mode 100644 index 00000000000..e26bed906c5 --- /dev/null +++ b/resource-manager/network/2024-01-01/routes/constants.go @@ -0,0 +1,107 @@ +package routes + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type RouteNextHopType string + +const ( + RouteNextHopTypeInternet RouteNextHopType = "Internet" + RouteNextHopTypeNone RouteNextHopType = "None" + RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" + RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" + RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" +) + +func PossibleValuesForRouteNextHopType() []string { + return []string{ + string(RouteNextHopTypeInternet), + string(RouteNextHopTypeNone), + string(RouteNextHopTypeVirtualAppliance), + string(RouteNextHopTypeVirtualNetworkGateway), + string(RouteNextHopTypeVnetLocal), + } +} + +func (s *RouteNextHopType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteNextHopType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteNextHopType(input string) (*RouteNextHopType, error) { + vals := map[string]RouteNextHopType{ + "internet": RouteNextHopTypeInternet, + "none": RouteNextHopTypeNone, + "virtualappliance": RouteNextHopTypeVirtualAppliance, + "virtualnetworkgateway": RouteNextHopTypeVirtualNetworkGateway, + "vnetlocal": RouteNextHopTypeVnetLocal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteNextHopType(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/routes/id_route.go b/resource-manager/network/2024-01-01/routes/id_route.go new file mode 100644 index 00000000000..c9e2c02ee1f --- /dev/null +++ b/resource-manager/network/2024-01-01/routes/id_route.go @@ -0,0 +1,139 @@ +package routes + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&RouteId{}) +} + +var _ resourceids.ResourceId = &RouteId{} + +// RouteId is a struct representing the Resource ID for a Route +type RouteId struct { + SubscriptionId string + ResourceGroupName string + RouteTableName string + RouteName string +} + +// NewRouteID returns a new RouteId struct +func NewRouteID(subscriptionId string, resourceGroupName string, routeTableName string, routeName string) RouteId { + return RouteId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + RouteTableName: routeTableName, + RouteName: routeName, + } +} + +// ParseRouteID parses 'input' into a RouteId +func ParseRouteID(input string) (*RouteId, error) { + parser := resourceids.NewParserFromResourceIdType(&RouteId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RouteId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseRouteIDInsensitively parses 'input' case-insensitively into a RouteId +// note: this method should only be used for API response data and not user input +func ParseRouteIDInsensitively(input string) (*RouteId, error) { + parser := resourceids.NewParserFromResourceIdType(&RouteId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RouteId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *RouteId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.RouteTableName, ok = input.Parsed["routeTableName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "routeTableName", input) + } + + if id.RouteName, ok = input.Parsed["routeName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "routeName", input) + } + + return nil +} + +// ValidateRouteID checks that 'input' can be parsed as a Route ID +func ValidateRouteID(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 := ParseRouteID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Route ID +func (id RouteId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/routeTables/%s/routes/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.RouteTableName, id.RouteName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Route ID +func (id RouteId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticRouteTables", "routeTables", "routeTables"), + resourceids.UserSpecifiedSegment("routeTableName", "routeTableValue"), + resourceids.StaticSegment("staticRoutes", "routes", "routes"), + resourceids.UserSpecifiedSegment("routeName", "routeValue"), + } +} + +// String returns a human-readable description of this Route ID +func (id RouteId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Route Table Name: %q", id.RouteTableName), + fmt.Sprintf("Route Name: %q", id.RouteName), + } + return fmt.Sprintf("Route (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/routes/id_route_test.go b/resource-manager/network/2024-01-01/routes/id_route_test.go new file mode 100644 index 00000000000..2ab68ea9f0b --- /dev/null +++ b/resource-manager/network/2024-01-01/routes/id_route_test.go @@ -0,0 +1,327 @@ +package routes + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &RouteId{} + +func TestNewRouteID(t *testing.T) { + id := NewRouteID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeTableValue", "routeValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.RouteTableName != "routeTableValue" { + t.Fatalf("Expected %q but got %q for Segment 'RouteTableName'", id.RouteTableName, "routeTableValue") + } + + if id.RouteName != "routeValue" { + t.Fatalf("Expected %q but got %q for Segment 'RouteName'", id.RouteName, "routeValue") + } +} + +func TestFormatRouteID(t *testing.T) { + actual := NewRouteID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeTableValue", "routeValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables/routeTableValue/routes/routeValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseRouteID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RouteId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables/routeTableValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables/routeTableValue/routes", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables/routeTableValue/routes/routeValue", + Expected: &RouteId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + RouteTableName: "routeTableValue", + RouteName: "routeValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables/routeTableValue/routes/routeValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRouteID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.RouteTableName != v.Expected.RouteTableName { + t.Fatalf("Expected %q but got %q for RouteTableName", v.Expected.RouteTableName, actual.RouteTableName) + } + + if actual.RouteName != v.Expected.RouteName { + t.Fatalf("Expected %q but got %q for RouteName", v.Expected.RouteName, actual.RouteName) + } + + } +} + +func TestParseRouteIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RouteId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/rOuTeTaBlEs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables/routeTableValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/rOuTeTaBlEs/rOuTeTaBlEvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables/routeTableValue/routes", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/rOuTeTaBlEs/rOuTeTaBlEvAlUe/rOuTeS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables/routeTableValue/routes/routeValue", + Expected: &RouteId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + RouteTableName: "routeTableValue", + RouteName: "routeValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables/routeTableValue/routes/routeValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/rOuTeTaBlEs/rOuTeTaBlEvAlUe/rOuTeS/rOuTeVaLuE", + Expected: &RouteId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + RouteTableName: "rOuTeTaBlEvAlUe", + RouteName: "rOuTeVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/rOuTeTaBlEs/rOuTeTaBlEvAlUe/rOuTeS/rOuTeVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRouteIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.RouteTableName != v.Expected.RouteTableName { + t.Fatalf("Expected %q but got %q for RouteTableName", v.Expected.RouteTableName, actual.RouteTableName) + } + + if actual.RouteName != v.Expected.RouteName { + t.Fatalf("Expected %q but got %q for RouteName", v.Expected.RouteName, actual.RouteName) + } + + } +} + +func TestSegmentsForRouteId(t *testing.T) { + segments := RouteId{}.Segments() + if len(segments) == 0 { + t.Fatalf("RouteId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/routes/id_routetable.go b/resource-manager/network/2024-01-01/routes/id_routetable.go new file mode 100644 index 00000000000..459719bc26c --- /dev/null +++ b/resource-manager/network/2024-01-01/routes/id_routetable.go @@ -0,0 +1,130 @@ +package routes + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&RouteTableId{}) +} + +var _ resourceids.ResourceId = &RouteTableId{} + +// RouteTableId is a struct representing the Resource ID for a Route Table +type RouteTableId struct { + SubscriptionId string + ResourceGroupName string + RouteTableName string +} + +// NewRouteTableID returns a new RouteTableId struct +func NewRouteTableID(subscriptionId string, resourceGroupName string, routeTableName string) RouteTableId { + return RouteTableId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + RouteTableName: routeTableName, + } +} + +// ParseRouteTableID parses 'input' into a RouteTableId +func ParseRouteTableID(input string) (*RouteTableId, error) { + parser := resourceids.NewParserFromResourceIdType(&RouteTableId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RouteTableId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseRouteTableIDInsensitively parses 'input' case-insensitively into a RouteTableId +// note: this method should only be used for API response data and not user input +func ParseRouteTableIDInsensitively(input string) (*RouteTableId, error) { + parser := resourceids.NewParserFromResourceIdType(&RouteTableId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RouteTableId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *RouteTableId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.RouteTableName, ok = input.Parsed["routeTableName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "routeTableName", input) + } + + return nil +} + +// ValidateRouteTableID checks that 'input' can be parsed as a Route Table ID +func ValidateRouteTableID(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 := ParseRouteTableID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Route Table ID +func (id RouteTableId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/routeTables/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.RouteTableName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Route Table ID +func (id RouteTableId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticRouteTables", "routeTables", "routeTables"), + resourceids.UserSpecifiedSegment("routeTableName", "routeTableValue"), + } +} + +// String returns a human-readable description of this Route Table ID +func (id RouteTableId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Route Table Name: %q", id.RouteTableName), + } + return fmt.Sprintf("Route Table (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/routes/id_routetable_test.go b/resource-manager/network/2024-01-01/routes/id_routetable_test.go new file mode 100644 index 00000000000..8f3218d149a --- /dev/null +++ b/resource-manager/network/2024-01-01/routes/id_routetable_test.go @@ -0,0 +1,282 @@ +package routes + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &RouteTableId{} + +func TestNewRouteTableID(t *testing.T) { + id := NewRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeTableValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.RouteTableName != "routeTableValue" { + t.Fatalf("Expected %q but got %q for Segment 'RouteTableName'", id.RouteTableName, "routeTableValue") + } +} + +func TestFormatRouteTableID(t *testing.T) { + actual := NewRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeTableValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables/routeTableValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseRouteTableID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RouteTableId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables/routeTableValue", + Expected: &RouteTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + RouteTableName: "routeTableValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables/routeTableValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRouteTableID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.RouteTableName != v.Expected.RouteTableName { + t.Fatalf("Expected %q but got %q for RouteTableName", v.Expected.RouteTableName, actual.RouteTableName) + } + + } +} + +func TestParseRouteTableIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RouteTableId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/rOuTeTaBlEs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables/routeTableValue", + Expected: &RouteTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + RouteTableName: "routeTableValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables/routeTableValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/rOuTeTaBlEs/rOuTeTaBlEvAlUe", + Expected: &RouteTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + RouteTableName: "rOuTeTaBlEvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/rOuTeTaBlEs/rOuTeTaBlEvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRouteTableIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.RouteTableName != v.Expected.RouteTableName { + t.Fatalf("Expected %q but got %q for RouteTableName", v.Expected.RouteTableName, actual.RouteTableName) + } + + } +} + +func TestSegmentsForRouteTableId(t *testing.T) { + segments := RouteTableId{}.Segments() + if len(segments) == 0 { + t.Fatalf("RouteTableId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/routes/method_createorupdate.go b/resource-manager/network/2024-01-01/routes/method_createorupdate.go new file mode 100644 index 00000000000..29b466f45ef --- /dev/null +++ b/resource-manager/network/2024-01-01/routes/method_createorupdate.go @@ -0,0 +1,75 @@ +package routes + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *Route +} + +// CreateOrUpdate ... +func (c RoutesClient) CreateOrUpdate(ctx context.Context, id RouteId, input Route) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c RoutesClient) CreateOrUpdateThenPoll(ctx context.Context, id RouteId, input Route) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/routes/method_delete.go b/resource-manager/network/2024-01-01/routes/method_delete.go new file mode 100644 index 00000000000..f6cee23c133 --- /dev/null +++ b/resource-manager/network/2024-01-01/routes/method_delete.go @@ -0,0 +1,71 @@ +package routes + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c RoutesClient) Delete(ctx context.Context, id RouteId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c RoutesClient) DeleteThenPoll(ctx context.Context, id RouteId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/routes/method_get.go b/resource-manager/network/2024-01-01/routes/method_get.go new file mode 100644 index 00000000000..8f641d28c5b --- /dev/null +++ b/resource-manager/network/2024-01-01/routes/method_get.go @@ -0,0 +1,54 @@ +package routes + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *Route +} + +// Get ... +func (c RoutesClient) Get(ctx context.Context, id RouteId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model Route + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/routes/method_list.go b/resource-manager/network/2024-01-01/routes/method_list.go new file mode 100644 index 00000000000..b54de6d4c7a --- /dev/null +++ b/resource-manager/network/2024-01-01/routes/method_list.go @@ -0,0 +1,92 @@ +package routes + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]Route +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []Route +} + +// List ... +func (c RoutesClient) List(ctx context.Context, id RouteTableId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/routes", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]Route `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c RoutesClient) ListComplete(ctx context.Context, id RouteTableId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, RouteOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c RoutesClient) ListCompleteMatchingPredicate(ctx context.Context, id RouteTableId, predicate RouteOperationPredicate) (result ListCompleteResult, err error) { + items := make([]Route, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/routes/model_route.go b/resource-manager/network/2024-01-01/routes/model_route.go new file mode 100644 index 00000000000..364b3bb3322 --- /dev/null +++ b/resource-manager/network/2024-01-01/routes/model_route.go @@ -0,0 +1,12 @@ +package routes + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Route struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RoutePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routes/model_routepropertiesformat.go b/resource-manager/network/2024-01-01/routes/model_routepropertiesformat.go new file mode 100644 index 00000000000..82a30d0f4e0 --- /dev/null +++ b/resource-manager/network/2024-01-01/routes/model_routepropertiesformat.go @@ -0,0 +1,12 @@ +package routes + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutePropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + HasBgpOverride *bool `json:"hasBgpOverride,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + NextHopType RouteNextHopType `json:"nextHopType"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routes/predicates.go b/resource-manager/network/2024-01-01/routes/predicates.go new file mode 100644 index 00000000000..b0ff24a6573 --- /dev/null +++ b/resource-manager/network/2024-01-01/routes/predicates.go @@ -0,0 +1,32 @@ +package routes + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p RouteOperationPredicate) Matches(input Route) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/routes/version.go b/resource-manager/network/2024-01-01/routes/version.go new file mode 100644 index 00000000000..43a078e27f9 --- /dev/null +++ b/resource-manager/network/2024-01-01/routes/version.go @@ -0,0 +1,12 @@ +package routes + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/routes/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/routetables/README.md b/resource-manager/network/2024-01-01/routetables/README.md new file mode 100644 index 00000000000..bff08a2b926 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/README.md @@ -0,0 +1,121 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/routetables` Documentation + +The `routetables` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/routetables" +``` + + +### Client Initialization + +```go +client := routetables.NewRouteTablesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `RouteTablesClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := routetables.NewRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeTableValue") + +payload := routetables.RouteTable{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `RouteTablesClient.Delete` + +```go +ctx := context.TODO() +id := routetables.NewRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeTableValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `RouteTablesClient.Get` + +```go +ctx := context.TODO() +id := routetables.NewRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeTableValue") + +read, err := client.Get(ctx, id, routetables.DefaultGetOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `RouteTablesClient.List` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `RouteTablesClient.ListAll` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.ListAll(ctx, id)` can be used to do batched pagination +items, err := client.ListAllComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `RouteTablesClient.UpdateTags` + +```go +ctx := context.TODO() +id := routetables.NewRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeTableValue") + +payload := routetables.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/routetables/client.go b/resource-manager/network/2024-01-01/routetables/client.go new file mode 100644 index 00000000000..26c9fb104ad --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/client.go @@ -0,0 +1,26 @@ +package routetables + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTablesClient struct { + Client *resourcemanager.Client +} + +func NewRouteTablesClientWithBaseURI(sdkApi sdkEnv.Api) (*RouteTablesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "routetables", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating RouteTablesClient: %+v", err) + } + + return &RouteTablesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/routetables/constants.go b/resource-manager/network/2024-01-01/routetables/constants.go new file mode 100644 index 00000000000..035ce69edd5 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/constants.go @@ -0,0 +1,1198 @@ +package routetables + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettingsProtectionMode string + +const ( + DdosSettingsProtectionModeDisabled DdosSettingsProtectionMode = "Disabled" + DdosSettingsProtectionModeEnabled DdosSettingsProtectionMode = "Enabled" + DdosSettingsProtectionModeVirtualNetworkInherited DdosSettingsProtectionMode = "VirtualNetworkInherited" +) + +func PossibleValuesForDdosSettingsProtectionMode() []string { + return []string{ + string(DdosSettingsProtectionModeDisabled), + string(DdosSettingsProtectionModeEnabled), + string(DdosSettingsProtectionModeVirtualNetworkInherited), + } +} + +func (s *DdosSettingsProtectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDdosSettingsProtectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDdosSettingsProtectionMode(input string) (*DdosSettingsProtectionMode, error) { + vals := map[string]DdosSettingsProtectionMode{ + "disabled": DdosSettingsProtectionModeDisabled, + "enabled": DdosSettingsProtectionModeEnabled, + "virtualnetworkinherited": DdosSettingsProtectionModeVirtualNetworkInherited, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DdosSettingsProtectionMode(input) + return &out, nil +} + +type DeleteOptions string + +const ( + DeleteOptionsDelete DeleteOptions = "Delete" + DeleteOptionsDetach DeleteOptions = "Detach" +) + +func PossibleValuesForDeleteOptions() []string { + return []string{ + string(DeleteOptionsDelete), + string(DeleteOptionsDetach), + } +} + +func (s *DeleteOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteOptions(input string) (*DeleteOptions, error) { + vals := map[string]DeleteOptions{ + "delete": DeleteOptionsDelete, + "detach": DeleteOptionsDetach, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteOptions(input) + return &out, nil +} + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelInterfaceType string + +const ( + GatewayLoadBalancerTunnelInterfaceTypeExternal GatewayLoadBalancerTunnelInterfaceType = "External" + GatewayLoadBalancerTunnelInterfaceTypeInternal GatewayLoadBalancerTunnelInterfaceType = "Internal" + GatewayLoadBalancerTunnelInterfaceTypeNone GatewayLoadBalancerTunnelInterfaceType = "None" +) + +func PossibleValuesForGatewayLoadBalancerTunnelInterfaceType() []string { + return []string{ + string(GatewayLoadBalancerTunnelInterfaceTypeExternal), + string(GatewayLoadBalancerTunnelInterfaceTypeInternal), + string(GatewayLoadBalancerTunnelInterfaceTypeNone), + } +} + +func (s *GatewayLoadBalancerTunnelInterfaceType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelInterfaceType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelInterfaceType(input string) (*GatewayLoadBalancerTunnelInterfaceType, error) { + vals := map[string]GatewayLoadBalancerTunnelInterfaceType{ + "external": GatewayLoadBalancerTunnelInterfaceTypeExternal, + "internal": GatewayLoadBalancerTunnelInterfaceTypeInternal, + "none": GatewayLoadBalancerTunnelInterfaceTypeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelInterfaceType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelProtocol string + +const ( + GatewayLoadBalancerTunnelProtocolNative GatewayLoadBalancerTunnelProtocol = "Native" + GatewayLoadBalancerTunnelProtocolNone GatewayLoadBalancerTunnelProtocol = "None" + GatewayLoadBalancerTunnelProtocolVXLAN GatewayLoadBalancerTunnelProtocol = "VXLAN" +) + +func PossibleValuesForGatewayLoadBalancerTunnelProtocol() []string { + return []string{ + string(GatewayLoadBalancerTunnelProtocolNative), + string(GatewayLoadBalancerTunnelProtocolNone), + string(GatewayLoadBalancerTunnelProtocolVXLAN), + } +} + +func (s *GatewayLoadBalancerTunnelProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelProtocol(input string) (*GatewayLoadBalancerTunnelProtocol, error) { + vals := map[string]GatewayLoadBalancerTunnelProtocol{ + "native": GatewayLoadBalancerTunnelProtocolNative, + "none": GatewayLoadBalancerTunnelProtocolNone, + "vxlan": GatewayLoadBalancerTunnelProtocolVXLAN, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelProtocol(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} + +type LoadBalancerBackendAddressAdminState string + +const ( + LoadBalancerBackendAddressAdminStateDown LoadBalancerBackendAddressAdminState = "Down" + LoadBalancerBackendAddressAdminStateNone LoadBalancerBackendAddressAdminState = "None" + LoadBalancerBackendAddressAdminStateUp LoadBalancerBackendAddressAdminState = "Up" +) + +func PossibleValuesForLoadBalancerBackendAddressAdminState() []string { + return []string{ + string(LoadBalancerBackendAddressAdminStateDown), + string(LoadBalancerBackendAddressAdminStateNone), + string(LoadBalancerBackendAddressAdminStateUp), + } +} + +func (s *LoadBalancerBackendAddressAdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerBackendAddressAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerBackendAddressAdminState(input string) (*LoadBalancerBackendAddressAdminState, error) { + vals := map[string]LoadBalancerBackendAddressAdminState{ + "down": LoadBalancerBackendAddressAdminStateDown, + "none": LoadBalancerBackendAddressAdminStateNone, + "up": LoadBalancerBackendAddressAdminStateUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerBackendAddressAdminState(input) + return &out, nil +} + +type NatGatewaySkuName string + +const ( + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +func PossibleValuesForNatGatewaySkuName() []string { + return []string{ + string(NatGatewaySkuNameStandard), + } +} + +func (s *NatGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNatGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNatGatewaySkuName(input string) (*NatGatewaySkuName, error) { + vals := map[string]NatGatewaySkuName{ + "standard": NatGatewaySkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NatGatewaySkuName(input) + return &out, nil +} + +type NetworkInterfaceAuxiliaryMode string + +const ( + NetworkInterfaceAuxiliaryModeAcceleratedConnections NetworkInterfaceAuxiliaryMode = "AcceleratedConnections" + NetworkInterfaceAuxiliaryModeFloating NetworkInterfaceAuxiliaryMode = "Floating" + NetworkInterfaceAuxiliaryModeMaxConnections NetworkInterfaceAuxiliaryMode = "MaxConnections" + NetworkInterfaceAuxiliaryModeNone NetworkInterfaceAuxiliaryMode = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliaryMode() []string { + return []string{ + string(NetworkInterfaceAuxiliaryModeAcceleratedConnections), + string(NetworkInterfaceAuxiliaryModeFloating), + string(NetworkInterfaceAuxiliaryModeMaxConnections), + string(NetworkInterfaceAuxiliaryModeNone), + } +} + +func (s *NetworkInterfaceAuxiliaryMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliaryMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliaryMode(input string) (*NetworkInterfaceAuxiliaryMode, error) { + vals := map[string]NetworkInterfaceAuxiliaryMode{ + "acceleratedconnections": NetworkInterfaceAuxiliaryModeAcceleratedConnections, + "floating": NetworkInterfaceAuxiliaryModeFloating, + "maxconnections": NetworkInterfaceAuxiliaryModeMaxConnections, + "none": NetworkInterfaceAuxiliaryModeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliaryMode(input) + return &out, nil +} + +type NetworkInterfaceAuxiliarySku string + +const ( + NetworkInterfaceAuxiliarySkuAEight NetworkInterfaceAuxiliarySku = "A8" + NetworkInterfaceAuxiliarySkuAFour NetworkInterfaceAuxiliarySku = "A4" + NetworkInterfaceAuxiliarySkuAOne NetworkInterfaceAuxiliarySku = "A1" + NetworkInterfaceAuxiliarySkuATwo NetworkInterfaceAuxiliarySku = "A2" + NetworkInterfaceAuxiliarySkuNone NetworkInterfaceAuxiliarySku = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliarySku() []string { + return []string{ + string(NetworkInterfaceAuxiliarySkuAEight), + string(NetworkInterfaceAuxiliarySkuAFour), + string(NetworkInterfaceAuxiliarySkuAOne), + string(NetworkInterfaceAuxiliarySkuATwo), + string(NetworkInterfaceAuxiliarySkuNone), + } +} + +func (s *NetworkInterfaceAuxiliarySku) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliarySku(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliarySku(input string) (*NetworkInterfaceAuxiliarySku, error) { + vals := map[string]NetworkInterfaceAuxiliarySku{ + "a8": NetworkInterfaceAuxiliarySkuAEight, + "a4": NetworkInterfaceAuxiliarySkuAFour, + "a1": NetworkInterfaceAuxiliarySkuAOne, + "a2": NetworkInterfaceAuxiliarySkuATwo, + "none": NetworkInterfaceAuxiliarySkuNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliarySku(input) + return &out, nil +} + +type NetworkInterfaceMigrationPhase string + +const ( + NetworkInterfaceMigrationPhaseAbort NetworkInterfaceMigrationPhase = "Abort" + NetworkInterfaceMigrationPhaseCommit NetworkInterfaceMigrationPhase = "Commit" + NetworkInterfaceMigrationPhaseCommitted NetworkInterfaceMigrationPhase = "Committed" + NetworkInterfaceMigrationPhaseNone NetworkInterfaceMigrationPhase = "None" + NetworkInterfaceMigrationPhasePrepare NetworkInterfaceMigrationPhase = "Prepare" +) + +func PossibleValuesForNetworkInterfaceMigrationPhase() []string { + return []string{ + string(NetworkInterfaceMigrationPhaseAbort), + string(NetworkInterfaceMigrationPhaseCommit), + string(NetworkInterfaceMigrationPhaseCommitted), + string(NetworkInterfaceMigrationPhaseNone), + string(NetworkInterfaceMigrationPhasePrepare), + } +} + +func (s *NetworkInterfaceMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceMigrationPhase(input string) (*NetworkInterfaceMigrationPhase, error) { + vals := map[string]NetworkInterfaceMigrationPhase{ + "abort": NetworkInterfaceMigrationPhaseAbort, + "commit": NetworkInterfaceMigrationPhaseCommit, + "committed": NetworkInterfaceMigrationPhaseCommitted, + "none": NetworkInterfaceMigrationPhaseNone, + "prepare": NetworkInterfaceMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceMigrationPhase(input) + return &out, nil +} + +type NetworkInterfaceNicType string + +const ( + NetworkInterfaceNicTypeElastic NetworkInterfaceNicType = "Elastic" + NetworkInterfaceNicTypeStandard NetworkInterfaceNicType = "Standard" +) + +func PossibleValuesForNetworkInterfaceNicType() []string { + return []string{ + string(NetworkInterfaceNicTypeElastic), + string(NetworkInterfaceNicTypeStandard), + } +} + +func (s *NetworkInterfaceNicType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceNicType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceNicType(input string) (*NetworkInterfaceNicType, error) { + vals := map[string]NetworkInterfaceNicType{ + "elastic": NetworkInterfaceNicTypeElastic, + "standard": NetworkInterfaceNicTypeStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceNicType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type PublicIPAddressDnsSettingsDomainNameLabelScope string + +const ( + PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "NoReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "ResourceGroupReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "SubscriptionReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "TenantReuse" +) + +func PossibleValuesForPublicIPAddressDnsSettingsDomainNameLabelScope() []string { + return []string{ + string(PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse), + } +} + +func (s *PublicIPAddressDnsSettingsDomainNameLabelScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressDnsSettingsDomainNameLabelScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressDnsSettingsDomainNameLabelScope(input string) (*PublicIPAddressDnsSettingsDomainNameLabelScope, error) { + vals := map[string]PublicIPAddressDnsSettingsDomainNameLabelScope{ + "noreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse, + "resourcegroupreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse, + "subscriptionreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse, + "tenantreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressDnsSettingsDomainNameLabelScope(input) + return &out, nil +} + +type PublicIPAddressMigrationPhase string + +const ( + PublicIPAddressMigrationPhaseAbort PublicIPAddressMigrationPhase = "Abort" + PublicIPAddressMigrationPhaseCommit PublicIPAddressMigrationPhase = "Commit" + PublicIPAddressMigrationPhaseCommitted PublicIPAddressMigrationPhase = "Committed" + PublicIPAddressMigrationPhaseNone PublicIPAddressMigrationPhase = "None" + PublicIPAddressMigrationPhasePrepare PublicIPAddressMigrationPhase = "Prepare" +) + +func PossibleValuesForPublicIPAddressMigrationPhase() []string { + return []string{ + string(PublicIPAddressMigrationPhaseAbort), + string(PublicIPAddressMigrationPhaseCommit), + string(PublicIPAddressMigrationPhaseCommitted), + string(PublicIPAddressMigrationPhaseNone), + string(PublicIPAddressMigrationPhasePrepare), + } +} + +func (s *PublicIPAddressMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressMigrationPhase(input string) (*PublicIPAddressMigrationPhase, error) { + vals := map[string]PublicIPAddressMigrationPhase{ + "abort": PublicIPAddressMigrationPhaseAbort, + "commit": PublicIPAddressMigrationPhaseCommit, + "committed": PublicIPAddressMigrationPhaseCommitted, + "none": PublicIPAddressMigrationPhaseNone, + "prepare": PublicIPAddressMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressMigrationPhase(input) + return &out, nil +} + +type PublicIPAddressSkuName string + +const ( + PublicIPAddressSkuNameBasic PublicIPAddressSkuName = "Basic" + PublicIPAddressSkuNameStandard PublicIPAddressSkuName = "Standard" +) + +func PossibleValuesForPublicIPAddressSkuName() []string { + return []string{ + string(PublicIPAddressSkuNameBasic), + string(PublicIPAddressSkuNameStandard), + } +} + +func (s *PublicIPAddressSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuName(input string) (*PublicIPAddressSkuName, error) { + vals := map[string]PublicIPAddressSkuName{ + "basic": PublicIPAddressSkuNameBasic, + "standard": PublicIPAddressSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuName(input) + return &out, nil +} + +type PublicIPAddressSkuTier string + +const ( + PublicIPAddressSkuTierGlobal PublicIPAddressSkuTier = "Global" + PublicIPAddressSkuTierRegional PublicIPAddressSkuTier = "Regional" +) + +func PossibleValuesForPublicIPAddressSkuTier() []string { + return []string{ + string(PublicIPAddressSkuTierGlobal), + string(PublicIPAddressSkuTierRegional), + } +} + +func (s *PublicIPAddressSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuTier(input string) (*PublicIPAddressSkuTier, error) { + vals := map[string]PublicIPAddressSkuTier{ + "global": PublicIPAddressSkuTierGlobal, + "regional": PublicIPAddressSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuTier(input) + return &out, nil +} + +type RouteNextHopType string + +const ( + RouteNextHopTypeInternet RouteNextHopType = "Internet" + RouteNextHopTypeNone RouteNextHopType = "None" + RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" + RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" + RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" +) + +func PossibleValuesForRouteNextHopType() []string { + return []string{ + string(RouteNextHopTypeInternet), + string(RouteNextHopTypeNone), + string(RouteNextHopTypeVirtualAppliance), + string(RouteNextHopTypeVirtualNetworkGateway), + string(RouteNextHopTypeVnetLocal), + } +} + +func (s *RouteNextHopType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteNextHopType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteNextHopType(input string) (*RouteNextHopType, error) { + vals := map[string]RouteNextHopType{ + "internet": RouteNextHopTypeInternet, + "none": RouteNextHopTypeNone, + "virtualappliance": RouteNextHopTypeVirtualAppliance, + "virtualnetworkgateway": RouteNextHopTypeVirtualNetworkGateway, + "vnetlocal": RouteNextHopTypeVnetLocal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteNextHopType(input) + return &out, nil +} + +type SecurityRuleAccess string + +const ( + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +func PossibleValuesForSecurityRuleAccess() []string { + return []string{ + string(SecurityRuleAccessAllow), + string(SecurityRuleAccessDeny), + } +} + +func (s *SecurityRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleAccess(input string) (*SecurityRuleAccess, error) { + vals := map[string]SecurityRuleAccess{ + "allow": SecurityRuleAccessAllow, + "deny": SecurityRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleAccess(input) + return &out, nil +} + +type SecurityRuleDirection string + +const ( + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityRuleDirection() []string { + return []string{ + string(SecurityRuleDirectionInbound), + string(SecurityRuleDirectionOutbound), + } +} + +func (s *SecurityRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleDirection(input string) (*SecurityRuleDirection, error) { + vals := map[string]SecurityRuleDirection{ + "inbound": SecurityRuleDirectionInbound, + "outbound": SecurityRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleDirection(input) + return &out, nil +} + +type SecurityRuleProtocol string + +const ( + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + SecurityRuleProtocolAny SecurityRuleProtocol = "*" + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + SecurityRuleProtocolTcp SecurityRuleProtocol = "Tcp" + SecurityRuleProtocolUdp SecurityRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityRuleProtocol() []string { + return []string{ + string(SecurityRuleProtocolAh), + string(SecurityRuleProtocolAny), + string(SecurityRuleProtocolEsp), + string(SecurityRuleProtocolIcmp), + string(SecurityRuleProtocolTcp), + string(SecurityRuleProtocolUdp), + } +} + +func (s *SecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleProtocol(input string) (*SecurityRuleProtocol, error) { + vals := map[string]SecurityRuleProtocol{ + "ah": SecurityRuleProtocolAh, + "*": SecurityRuleProtocolAny, + "esp": SecurityRuleProtocolEsp, + "icmp": SecurityRuleProtocolIcmp, + "tcp": SecurityRuleProtocolTcp, + "udp": SecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleProtocol(input) + return &out, nil +} + +type SharingScope string + +const ( + SharingScopeDelegatedServices SharingScope = "DelegatedServices" + SharingScopeTenant SharingScope = "Tenant" +) + +func PossibleValuesForSharingScope() []string { + return []string{ + string(SharingScopeDelegatedServices), + string(SharingScopeTenant), + } +} + +func (s *SharingScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSharingScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSharingScope(input string) (*SharingScope, error) { + vals := map[string]SharingScope{ + "delegatedservices": SharingScopeDelegatedServices, + "tenant": SharingScopeTenant, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SharingScope(input) + return &out, nil +} + +type SyncMode string + +const ( + SyncModeAutomatic SyncMode = "Automatic" + SyncModeManual SyncMode = "Manual" +) + +func PossibleValuesForSyncMode() []string { + return []string{ + string(SyncModeAutomatic), + string(SyncModeManual), + } +} + +func (s *SyncMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSyncMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSyncMode(input string) (*SyncMode, error) { + vals := map[string]SyncMode{ + "automatic": SyncModeAutomatic, + "manual": SyncModeManual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SyncMode(input) + return &out, nil +} + +type TransportProtocol string + +const ( + TransportProtocolAll TransportProtocol = "All" + TransportProtocolTcp TransportProtocol = "Tcp" + TransportProtocolUdp TransportProtocol = "Udp" +) + +func PossibleValuesForTransportProtocol() []string { + return []string{ + string(TransportProtocolAll), + string(TransportProtocolTcp), + string(TransportProtocolUdp), + } +} + +func (s *TransportProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseTransportProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseTransportProtocol(input string) (*TransportProtocol, error) { + vals := map[string]TransportProtocol{ + "all": TransportProtocolAll, + "tcp": TransportProtocolTcp, + "udp": TransportProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := TransportProtocol(input) + return &out, nil +} + +type VirtualNetworkPrivateEndpointNetworkPolicies string + +const ( + VirtualNetworkPrivateEndpointNetworkPoliciesDisabled VirtualNetworkPrivateEndpointNetworkPolicies = "Disabled" + VirtualNetworkPrivateEndpointNetworkPoliciesEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "Enabled" + VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "NetworkSecurityGroupEnabled" + VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "RouteTableEnabled" +) + +func PossibleValuesForVirtualNetworkPrivateEndpointNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateEndpointNetworkPoliciesDisabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled), + } +} + +func (s *VirtualNetworkPrivateEndpointNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateEndpointNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateEndpointNetworkPolicies(input string) (*VirtualNetworkPrivateEndpointNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateEndpointNetworkPolicies{ + "disabled": VirtualNetworkPrivateEndpointNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateEndpointNetworkPoliciesEnabled, + "networksecuritygroupenabled": VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled, + "routetableenabled": VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateEndpointNetworkPolicies(input) + return &out, nil +} + +type VirtualNetworkPrivateLinkServiceNetworkPolicies string + +const ( + VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Disabled" + VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Enabled" +) + +func PossibleValuesForVirtualNetworkPrivateLinkServiceNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled), + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled), + } +} + +func (s *VirtualNetworkPrivateLinkServiceNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateLinkServiceNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateLinkServiceNetworkPolicies(input string) (*VirtualNetworkPrivateLinkServiceNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateLinkServiceNetworkPolicies{ + "disabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateLinkServiceNetworkPolicies(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/routetables/id_routetable.go b/resource-manager/network/2024-01-01/routetables/id_routetable.go new file mode 100644 index 00000000000..0f3c938daf7 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/id_routetable.go @@ -0,0 +1,130 @@ +package routetables + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&RouteTableId{}) +} + +var _ resourceids.ResourceId = &RouteTableId{} + +// RouteTableId is a struct representing the Resource ID for a Route Table +type RouteTableId struct { + SubscriptionId string + ResourceGroupName string + RouteTableName string +} + +// NewRouteTableID returns a new RouteTableId struct +func NewRouteTableID(subscriptionId string, resourceGroupName string, routeTableName string) RouteTableId { + return RouteTableId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + RouteTableName: routeTableName, + } +} + +// ParseRouteTableID parses 'input' into a RouteTableId +func ParseRouteTableID(input string) (*RouteTableId, error) { + parser := resourceids.NewParserFromResourceIdType(&RouteTableId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RouteTableId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseRouteTableIDInsensitively parses 'input' case-insensitively into a RouteTableId +// note: this method should only be used for API response data and not user input +func ParseRouteTableIDInsensitively(input string) (*RouteTableId, error) { + parser := resourceids.NewParserFromResourceIdType(&RouteTableId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RouteTableId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *RouteTableId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.RouteTableName, ok = input.Parsed["routeTableName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "routeTableName", input) + } + + return nil +} + +// ValidateRouteTableID checks that 'input' can be parsed as a Route Table ID +func ValidateRouteTableID(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 := ParseRouteTableID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Route Table ID +func (id RouteTableId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/routeTables/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.RouteTableName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Route Table ID +func (id RouteTableId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticRouteTables", "routeTables", "routeTables"), + resourceids.UserSpecifiedSegment("routeTableName", "routeTableValue"), + } +} + +// String returns a human-readable description of this Route Table ID +func (id RouteTableId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Route Table Name: %q", id.RouteTableName), + } + return fmt.Sprintf("Route Table (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/routetables/id_routetable_test.go b/resource-manager/network/2024-01-01/routetables/id_routetable_test.go new file mode 100644 index 00000000000..daf7d653c71 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/id_routetable_test.go @@ -0,0 +1,282 @@ +package routetables + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &RouteTableId{} + +func TestNewRouteTableID(t *testing.T) { + id := NewRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeTableValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.RouteTableName != "routeTableValue" { + t.Fatalf("Expected %q but got %q for Segment 'RouteTableName'", id.RouteTableName, "routeTableValue") + } +} + +func TestFormatRouteTableID(t *testing.T) { + actual := NewRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "routeTableValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables/routeTableValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseRouteTableID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RouteTableId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables/routeTableValue", + Expected: &RouteTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + RouteTableName: "routeTableValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables/routeTableValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRouteTableID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.RouteTableName != v.Expected.RouteTableName { + t.Fatalf("Expected %q but got %q for RouteTableName", v.Expected.RouteTableName, actual.RouteTableName) + } + + } +} + +func TestParseRouteTableIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RouteTableId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/rOuTeTaBlEs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables/routeTableValue", + Expected: &RouteTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + RouteTableName: "routeTableValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/routeTables/routeTableValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/rOuTeTaBlEs/rOuTeTaBlEvAlUe", + Expected: &RouteTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + RouteTableName: "rOuTeTaBlEvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/rOuTeTaBlEs/rOuTeTaBlEvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRouteTableIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.RouteTableName != v.Expected.RouteTableName { + t.Fatalf("Expected %q but got %q for RouteTableName", v.Expected.RouteTableName, actual.RouteTableName) + } + + } +} + +func TestSegmentsForRouteTableId(t *testing.T) { + segments := RouteTableId{}.Segments() + if len(segments) == 0 { + t.Fatalf("RouteTableId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/routetables/method_createorupdate.go b/resource-manager/network/2024-01-01/routetables/method_createorupdate.go new file mode 100644 index 00000000000..04fdd62101d --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/method_createorupdate.go @@ -0,0 +1,75 @@ +package routetables + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *RouteTable +} + +// CreateOrUpdate ... +func (c RouteTablesClient) CreateOrUpdate(ctx context.Context, id RouteTableId, input RouteTable) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c RouteTablesClient) CreateOrUpdateThenPoll(ctx context.Context, id RouteTableId, input RouteTable) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/routetables/method_delete.go b/resource-manager/network/2024-01-01/routetables/method_delete.go new file mode 100644 index 00000000000..6ef6e0e531d --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/method_delete.go @@ -0,0 +1,71 @@ +package routetables + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c RouteTablesClient) Delete(ctx context.Context, id RouteTableId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c RouteTablesClient) DeleteThenPoll(ctx context.Context, id RouteTableId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/routetables/method_get.go b/resource-manager/network/2024-01-01/routetables/method_get.go new file mode 100644 index 00000000000..519ddb2364a --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/method_get.go @@ -0,0 +1,83 @@ +package routetables + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *RouteTable +} + +type GetOperationOptions struct { + Expand *string +} + +func DefaultGetOperationOptions() GetOperationOptions { + return GetOperationOptions{} +} + +func (o GetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// Get ... +func (c RouteTablesClient) Get(ctx context.Context, id RouteTableId, options GetOperationOptions) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model RouteTable + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/routetables/method_list.go b/resource-manager/network/2024-01-01/routetables/method_list.go new file mode 100644 index 00000000000..2d99a93be80 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/method_list.go @@ -0,0 +1,93 @@ +package routetables + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]RouteTable +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []RouteTable +} + +// List ... +func (c RouteTablesClient) List(ctx context.Context, id commonids.ResourceGroupId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/routeTables", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]RouteTable `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c RouteTablesClient) ListComplete(ctx context.Context, id commonids.ResourceGroupId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, RouteTableOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c RouteTablesClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate RouteTableOperationPredicate) (result ListCompleteResult, err error) { + items := make([]RouteTable, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/routetables/method_listall.go b/resource-manager/network/2024-01-01/routetables/method_listall.go new file mode 100644 index 00000000000..0b505ddf7dc --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/method_listall.go @@ -0,0 +1,93 @@ +package routetables + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAllOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]RouteTable +} + +type ListAllCompleteResult struct { + LatestHttpResponse *http.Response + Items []RouteTable +} + +// ListAll ... +func (c RouteTablesClient) ListAll(ctx context.Context, id commonids.SubscriptionId) (result ListAllOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/routeTables", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]RouteTable `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListAllComplete retrieves all the results into a single object +func (c RouteTablesClient) ListAllComplete(ctx context.Context, id commonids.SubscriptionId) (ListAllCompleteResult, error) { + return c.ListAllCompleteMatchingPredicate(ctx, id, RouteTableOperationPredicate{}) +} + +// ListAllCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c RouteTablesClient) ListAllCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate RouteTableOperationPredicate) (result ListAllCompleteResult, err error) { + items := make([]RouteTable, 0) + + resp, err := c.ListAll(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListAllCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/routetables/method_updatetags.go b/resource-manager/network/2024-01-01/routetables/method_updatetags.go new file mode 100644 index 00000000000..b2db87b8208 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/method_updatetags.go @@ -0,0 +1,58 @@ +package routetables + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *RouteTable +} + +// UpdateTags ... +func (c RouteTablesClient) UpdateTags(ctx context.Context, id RouteTableId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model RouteTable + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/routetables/model_applicationgatewaybackendaddress.go b/resource-manager/network/2024-01-01/routetables/model_applicationgatewaybackendaddress.go new file mode 100644 index 00000000000..3f1666af192 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_applicationgatewaybackendaddress.go @@ -0,0 +1,9 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddress struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_applicationgatewaybackendaddresspool.go b/resource-manager/network/2024-01-01/routetables/model_applicationgatewaybackendaddresspool.go new file mode 100644 index 00000000000..aa535e08a6a --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_applicationgatewaybackendaddresspool.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_applicationgatewaybackendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_applicationgatewaybackendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..26b2afe4fb6 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_applicationgatewaybackendaddresspoolpropertiesformat.go @@ -0,0 +1,10 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPoolPropertiesFormat struct { + BackendAddresses *[]ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"` + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_applicationgatewayipconfiguration.go b/resource-manager/network/2024-01-01/routetables/model_applicationgatewayipconfiguration.go new file mode 100644 index 00000000000..2474ea7f89e --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_applicationgatewayipconfiguration.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_applicationgatewayipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_applicationgatewayipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..b0ea966f8a5 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_applicationgatewayipconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/routetables/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..da94563b915 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..d270ac905b2 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_backendaddresspool.go b/resource-manager/network/2024-01-01/routetables/model_backendaddresspool.go new file mode 100644 index 00000000000..90a55576b63 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_backendaddresspool.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_backendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_backendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..34067eb4dc7 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_backendaddresspoolpropertiesformat.go @@ -0,0 +1,19 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPoolPropertiesFormat struct { + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + DrainPeriodInSeconds *int64 `json:"drainPeriodInSeconds,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancerBackendAddresses *[]LoadBalancerBackendAddress `json:"loadBalancerBackendAddresses,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + Location *string `json:"location,omitempty"` + OutboundRule *SubResource `json:"outboundRule,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SyncMode *SyncMode `json:"syncMode,omitempty"` + TunnelInterfaces *[]GatewayLoadBalancerTunnelInterface `json:"tunnelInterfaces,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_customdnsconfigpropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_customdnsconfigpropertiesformat.go new file mode 100644 index 00000000000..d85f90834ef --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_customdnsconfigpropertiesformat.go @@ -0,0 +1,9 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomDnsConfigPropertiesFormat struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_ddossettings.go b/resource-manager/network/2024-01-01/routetables/model_ddossettings.go new file mode 100644 index 00000000000..ffd9663e361 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_ddossettings.go @@ -0,0 +1,9 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettings struct { + DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"` + ProtectionMode *DdosSettingsProtectionMode `json:"protectionMode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_delegation.go b/resource-manager/network/2024-01-01/routetables/model_delegation.go new file mode 100644 index 00000000000..2098ca8ace8 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_delegation.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Delegation struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceDelegationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_flowlog.go b/resource-manager/network/2024-01-01/routetables/model_flowlog.go new file mode 100644 index 00000000000..34743bfa20f --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_flowlog.go @@ -0,0 +1,19 @@ +package routetables + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLog struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FlowLogPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/routetables/model_flowlogformatparameters.go new file mode 100644 index 00000000000..46d83a48283 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_flowlogpropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_flowlogpropertiesformat.go new file mode 100644 index 00000000000..23f3648b1da --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_flowlogpropertiesformat.go @@ -0,0 +1,15 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogPropertiesFormat struct { + Enabled *bool `json:"enabled,omitempty"` + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` + TargetResourceGuid *string `json:"targetResourceGuid,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_frontendipconfiguration.go b/resource-manager/network/2024-01-01/routetables/model_frontendipconfiguration.go new file mode 100644 index 00000000000..15308372f3a --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_frontendipconfiguration.go @@ -0,0 +1,17 @@ +package routetables + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_frontendipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_frontendipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..c3ba5e8cb16 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_frontendipconfigurationpropertiesformat.go @@ -0,0 +1,19 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfigurationPropertiesFormat struct { + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + InboundNatPools *[]SubResource `json:"inboundNatPools,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_gatewayloadbalancertunnelinterface.go b/resource-manager/network/2024-01-01/routetables/model_gatewayloadbalancertunnelinterface.go new file mode 100644 index 00000000000..f99a910776d --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_gatewayloadbalancertunnelinterface.go @@ -0,0 +1,11 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayLoadBalancerTunnelInterface struct { + Identifier *int64 `json:"identifier,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *GatewayLoadBalancerTunnelProtocol `json:"protocol,omitempty"` + Type *GatewayLoadBalancerTunnelInterfaceType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_inboundnatrule.go b/resource-manager/network/2024-01-01/routetables/model_inboundnatrule.go new file mode 100644 index 00000000000..b540b7a4ff5 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_inboundnatrule.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundNatRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_inboundnatrulepropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_inboundnatrulepropertiesformat.go new file mode 100644 index 00000000000..5fa1c54256c --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_inboundnatrulepropertiesformat.go @@ -0,0 +1,19 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendIPConfiguration *NetworkInterfaceIPConfiguration `json:"backendIPConfiguration,omitempty"` + BackendPort *int64 `json:"backendPort,omitempty"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + FrontendPortRangeEnd *int64 `json:"frontendPortRangeEnd,omitempty"` + FrontendPortRangeStart *int64 `json:"frontendPortRangeStart,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol *TransportProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_ipconfiguration.go b/resource-manager/network/2024-01-01/routetables/model_ipconfiguration.go new file mode 100644 index 00000000000..7f86bd442fd --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_ipconfiguration.go @@ -0,0 +1,11 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_ipconfigurationprofile.go b/resource-manager/network/2024-01-01/routetables/model_ipconfigurationprofile.go new file mode 100644 index 00000000000..10063b56d94 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_ipconfigurationprofile.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationProfilePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_ipconfigurationprofilepropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_ipconfigurationprofilepropertiesformat.go new file mode 100644 index 00000000000..8be23ea8407 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_ipconfigurationprofilepropertiesformat.go @@ -0,0 +1,9 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfilePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_ipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_ipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..33538e3da04 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_ipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_iptag.go b/resource-manager/network/2024-01-01/routetables/model_iptag.go new file mode 100644 index 00000000000..0591a6fbb81 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_iptag.go @@ -0,0 +1,9 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPTag struct { + IPTagType *string `json:"ipTagType,omitempty"` + Tag *string `json:"tag,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_loadbalancerbackendaddress.go b/resource-manager/network/2024-01-01/routetables/model_loadbalancerbackendaddress.go new file mode 100644 index 00000000000..6eb63262bd2 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_loadbalancerbackendaddress.go @@ -0,0 +1,9 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddress struct { + Name *string `json:"name,omitempty"` + Properties *LoadBalancerBackendAddressPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_loadbalancerbackendaddresspropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_loadbalancerbackendaddresspropertiesformat.go new file mode 100644 index 00000000000..b4070586d52 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_loadbalancerbackendaddresspropertiesformat.go @@ -0,0 +1,14 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPropertiesFormat struct { + AdminState *LoadBalancerBackendAddressAdminState `json:"adminState,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + InboundNatRulesPortMapping *[]NatRulePortMapping `json:"inboundNatRulesPortMapping,omitempty"` + LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIPConfiguration,omitempty"` + NetworkInterfaceIPConfiguration *SubResource `json:"networkInterfaceIPConfiguration,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_natgateway.go b/resource-manager/network/2024-01-01/routetables/model_natgateway.go new file mode 100644 index 00000000000..cdcecbfa098 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_natgateway.go @@ -0,0 +1,20 @@ +package routetables + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"` + Sku *NatGatewaySku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_natgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_natgatewaypropertiesformat.go new file mode 100644 index 00000000000..dd643c79c79 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_natgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayPropertiesFormat struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]SubResource `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_natgatewaysku.go b/resource-manager/network/2024-01-01/routetables/model_natgatewaysku.go new file mode 100644 index 00000000000..8e15e8b1250 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_natgatewaysku.go @@ -0,0 +1,8 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySku struct { + Name *NatGatewaySkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_natruleportmapping.go b/resource-manager/network/2024-01-01/routetables/model_natruleportmapping.go new file mode 100644 index 00000000000..665d5f253ce --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_natruleportmapping.go @@ -0,0 +1,10 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulePortMapping struct { + BackendPort *int64 `json:"backendPort,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + InboundNatRuleName *string `json:"inboundNatRuleName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_networkinterface.go b/resource-manager/network/2024-01-01/routetables/model_networkinterface.go new file mode 100644 index 00000000000..fac5f0869e6 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_networkinterface.go @@ -0,0 +1,19 @@ +package routetables + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterface struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfacePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_networkinterfacednssettings.go b/resource-manager/network/2024-01-01/routetables/model_networkinterfacednssettings.go new file mode 100644 index 00000000000..9d476ca2642 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_networkinterfacednssettings.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceDnsSettings struct { + AppliedDnsServers *[]string `json:"appliedDnsServers,omitempty"` + DnsServers *[]string `json:"dnsServers,omitempty"` + InternalDnsNameLabel *string `json:"internalDnsNameLabel,omitempty"` + InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty"` + InternalFqdn *string `json:"internalFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_networkinterfaceipconfiguration.go b/resource-manager/network/2024-01-01/routetables/model_networkinterfaceipconfiguration.go new file mode 100644 index 00000000000..7db216219a1 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_networkinterfaceipconfiguration.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go b/resource-manager/network/2024-01-01/routetables/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go new file mode 100644 index 00000000000..60fdba4dd13 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go @@ -0,0 +1,10 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties struct { + Fqdns *[]string `json:"fqdns,omitempty"` + GroupId *string `json:"groupId,omitempty"` + RequiredMemberName *string `json:"requiredMemberName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_networkinterfaceipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_networkinterfaceipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..e81aa38f5f9 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_networkinterfaceipconfigurationpropertiesformat.go @@ -0,0 +1,22 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPropertiesFormat struct { + ApplicationGatewayBackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"applicationGatewayBackendAddressPools,omitempty"` + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + LoadBalancerBackendAddressPools *[]BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"` + LoadBalancerInboundNatRules *[]InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressPrefixLength *int64 `json:"privateIPAddressPrefixLength,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + PrivateLinkConnectionProperties *NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties `json:"privateLinkConnectionProperties,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` + VirtualNetworkTaps *[]VirtualNetworkTap `json:"virtualNetworkTaps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_networkinterfacepropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_networkinterfacepropertiesformat.go new file mode 100644 index 00000000000..4cc36c8f7f5 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_networkinterfacepropertiesformat.go @@ -0,0 +1,29 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfacePropertiesFormat struct { + AuxiliaryMode *NetworkInterfaceAuxiliaryMode `json:"auxiliaryMode,omitempty"` + AuxiliarySku *NetworkInterfaceAuxiliarySku `json:"auxiliarySku,omitempty"` + DisableTcpStateTracking *bool `json:"disableTcpStateTracking,omitempty"` + DnsSettings *NetworkInterfaceDnsSettings `json:"dnsSettings,omitempty"` + DscpConfiguration *SubResource `json:"dscpConfiguration,omitempty"` + EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"` + EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"` + HostedWorkloads *[]string `json:"hostedWorkloads,omitempty"` + IPConfigurations *[]NetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + MacAddress *string `json:"macAddress,omitempty"` + MigrationPhase *NetworkInterfaceMigrationPhase `json:"migrationPhase,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + NicType *NetworkInterfaceNicType `json:"nicType,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkService *PrivateLinkService `json:"privateLinkService,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + TapConfigurations *[]NetworkInterfaceTapConfiguration `json:"tapConfigurations,omitempty"` + VirtualMachine *SubResource `json:"virtualMachine,omitempty"` + VnetEncryptionSupported *bool `json:"vnetEncryptionSupported,omitempty"` + WorkloadType *string `json:"workloadType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_networkinterfacetapconfiguration.go b/resource-manager/network/2024-01-01/routetables/model_networkinterfacetapconfiguration.go new file mode 100644 index 00000000000..6f876f8ce53 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_networkinterfacetapconfiguration.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceTapConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_networkinterfacetapconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_networkinterfacetapconfigurationpropertiesformat.go new file mode 100644 index 00000000000..fbd84b3af86 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_networkinterfacetapconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualNetworkTap *VirtualNetworkTap `json:"virtualNetworkTap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_networksecuritygroup.go b/resource-manager/network/2024-01-01/routetables/model_networksecuritygroup.go new file mode 100644 index 00000000000..84c0fadac17 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_networksecuritygroup.go @@ -0,0 +1,14 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_networksecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_networksecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..633f7012e04 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_networksecuritygrouppropertiesformat.go @@ -0,0 +1,15 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupPropertiesFormat struct { + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + FlowLogs *[]FlowLog `json:"flowLogs,omitempty"` + FlushConnection *bool `json:"flushConnection,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_privateendpoint.go b/resource-manager/network/2024-01-01/routetables/model_privateendpoint.go new file mode 100644 index 00000000000..80308b3a2a6 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_privateendpoint.go @@ -0,0 +1,19 @@ +package routetables + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpoint struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_privateendpointconnection.go b/resource-manager/network/2024-01-01/routetables/model_privateendpointconnection.go new file mode 100644 index 00000000000..0e503458e9c --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_privateendpointconnection.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_privateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/routetables/model_privateendpointconnectionproperties.go new file mode 100644 index 00000000000..f8d3eeab02b --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_privateendpointconnectionproperties.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateEndpointLocation *string `json:"privateEndpointLocation,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_privateendpointipconfiguration.go b/resource-manager/network/2024-01-01/routetables/model_privateendpointipconfiguration.go new file mode 100644 index 00000000000..de4e0254405 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_privateendpointipconfiguration.go @@ -0,0 +1,11 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_privateendpointipconfigurationproperties.go b/resource-manager/network/2024-01-01/routetables/model_privateendpointipconfigurationproperties.go new file mode 100644 index 00000000000..1ba73d98f4a --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_privateendpointipconfigurationproperties.go @@ -0,0 +1,10 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfigurationProperties struct { + GroupId *string `json:"groupId,omitempty"` + MemberName *string `json:"memberName,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_privateendpointproperties.go b/resource-manager/network/2024-01-01/routetables/model_privateendpointproperties.go new file mode 100644 index 00000000000..3d92a4a92e1 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_privateendpointproperties.go @@ -0,0 +1,16 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointProperties struct { + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + CustomDnsConfigs *[]CustomDnsConfigPropertiesFormat `json:"customDnsConfigs,omitempty"` + CustomNetworkInterfaceName *string `json:"customNetworkInterfaceName,omitempty"` + IPConfigurations *[]PrivateEndpointIPConfiguration `json:"ipConfigurations,omitempty"` + ManualPrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"manualPrivateLinkServiceConnections,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"privateLinkServiceConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_privatelinkservice.go b/resource-manager/network/2024-01-01/routetables/model_privatelinkservice.go new file mode 100644 index 00000000000..29bf0cf5834 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_privatelinkservice.go @@ -0,0 +1,19 @@ +package routetables + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkService struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_privatelinkserviceconnection.go b/resource-manager/network/2024-01-01/routetables/model_privatelinkserviceconnection.go new file mode 100644 index 00000000000..4adf690c566 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_privatelinkserviceconnection.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_privatelinkserviceconnectionproperties.go b/resource-manager/network/2024-01-01/routetables/model_privatelinkserviceconnectionproperties.go new file mode 100644 index 00000000000..063a4faec37 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_privatelinkserviceconnectionproperties.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionProperties struct { + GroupIds *[]string `json:"groupIds,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + PrivateLinkServiceId *string `json:"privateLinkServiceId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestMessage *string `json:"requestMessage,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_privatelinkserviceconnectionstate.go b/resource-manager/network/2024-01-01/routetables/model_privatelinkserviceconnectionstate.go new file mode 100644 index 00000000000..3b1634cb059 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_privatelinkserviceconnectionstate.go @@ -0,0 +1,10 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionState struct { + ActionsRequired *string `json:"actionsRequired,omitempty"` + Description *string `json:"description,omitempty"` + Status *string `json:"status,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_privatelinkserviceipconfiguration.go b/resource-manager/network/2024-01-01/routetables/model_privatelinkserviceipconfiguration.go new file mode 100644 index 00000000000..e3ad61faa8f --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_privatelinkserviceipconfiguration.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_privatelinkserviceipconfigurationproperties.go b/resource-manager/network/2024-01-01/routetables/model_privatelinkserviceipconfigurationproperties.go new file mode 100644 index 00000000000..430eebd19ae --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_privatelinkserviceipconfigurationproperties.go @@ -0,0 +1,13 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_privatelinkserviceproperties.go b/resource-manager/network/2024-01-01/routetables/model_privatelinkserviceproperties.go new file mode 100644 index 00000000000..9e26fa01a75 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_privatelinkserviceproperties.go @@ -0,0 +1,17 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceProperties struct { + Alias *string `json:"alias,omitempty"` + AutoApproval *ResourceSet `json:"autoApproval,omitempty"` + EnableProxyProtocol *bool `json:"enableProxyProtocol,omitempty"` + Fqdns *[]string `json:"fqdns,omitempty"` + IPConfigurations *[]PrivateLinkServiceIPConfiguration `json:"ipConfigurations,omitempty"` + LoadBalancerFrontendIPConfigurations *[]FrontendIPConfiguration `json:"loadBalancerFrontendIpConfigurations,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Visibility *ResourceSet `json:"visibility,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_publicipaddress.go b/resource-manager/network/2024-01-01/routetables/model_publicipaddress.go new file mode 100644 index 00000000000..8248c499a22 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_publicipaddress.go @@ -0,0 +1,22 @@ +package routetables + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddress struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PublicIPAddressPropertiesFormat `json:"properties,omitempty"` + Sku *PublicIPAddressSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_publicipaddressdnssettings.go b/resource-manager/network/2024-01-01/routetables/model_publicipaddressdnssettings.go new file mode 100644 index 00000000000..84b1e72e903 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_publicipaddressdnssettings.go @@ -0,0 +1,11 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressDnsSettings struct { + DomainNameLabel *string `json:"domainNameLabel,omitempty"` + DomainNameLabelScope *PublicIPAddressDnsSettingsDomainNameLabelScope `json:"domainNameLabelScope,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + ReverseFqdn *string `json:"reverseFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_publicipaddresspropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_publicipaddresspropertiesformat.go new file mode 100644 index 00000000000..ba0c692ec23 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_publicipaddresspropertiesformat.go @@ -0,0 +1,23 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressPropertiesFormat struct { + DdosSettings *DdosSettings `json:"ddosSettings,omitempty"` + DeleteOption *DeleteOptions `json:"deleteOption,omitempty"` + DnsSettings *PublicIPAddressDnsSettings `json:"dnsSettings,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty"` + IPTags *[]IPTag `json:"ipTags,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + LinkedPublicIPAddress *PublicIPAddress `json:"linkedPublicIPAddress,omitempty"` + MigrationPhase *PublicIPAddressMigrationPhase `json:"migrationPhase,omitempty"` + NatGateway *NatGateway `json:"natGateway,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"` + PublicIPAllocationMethod *IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServicePublicIPAddress *PublicIPAddress `json:"servicePublicIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_publicipaddresssku.go b/resource-manager/network/2024-01-01/routetables/model_publicipaddresssku.go new file mode 100644 index 00000000000..956c758896f --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_publicipaddresssku.go @@ -0,0 +1,9 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressSku struct { + Name *PublicIPAddressSkuName `json:"name,omitempty"` + Tier *PublicIPAddressSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_resourcenavigationlink.go b/resource-manager/network/2024-01-01/routetables/model_resourcenavigationlink.go new file mode 100644 index 00000000000..c5d74e0472b --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_resourcenavigationlink.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ResourceNavigationLinkFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_resourcenavigationlinkformat.go b/resource-manager/network/2024-01-01/routetables/model_resourcenavigationlinkformat.go new file mode 100644 index 00000000000..eca6b593c69 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_resourcenavigationlinkformat.go @@ -0,0 +1,10 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLinkFormat struct { + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_resourceset.go b/resource-manager/network/2024-01-01/routetables/model_resourceset.go new file mode 100644 index 00000000000..8a57a8fb40d --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_resourceset.go @@ -0,0 +1,8 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceSet struct { + Subscriptions *[]string `json:"subscriptions,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/routetables/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..37bad49cdcb --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_route.go b/resource-manager/network/2024-01-01/routetables/model_route.go new file mode 100644 index 00000000000..10c17005b28 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_route.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Route struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RoutePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_routepropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_routepropertiesformat.go new file mode 100644 index 00000000000..028abe93e73 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_routepropertiesformat.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutePropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + HasBgpOverride *bool `json:"hasBgpOverride,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + NextHopType RouteNextHopType `json:"nextHopType"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_routetable.go b/resource-manager/network/2024-01-01/routetables/model_routetable.go new file mode 100644 index 00000000000..1b2bb754997 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_routetable.go @@ -0,0 +1,14 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTable struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteTablePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_routetablepropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_routetablepropertiesformat.go new file mode 100644 index 00000000000..64470e39699 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_routetablepropertiesformat.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTablePropertiesFormat struct { + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Routes *[]Route `json:"routes,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_securityrule.go b/resource-manager/network/2024-01-01/routetables/model_securityrule.go new file mode 100644 index 00000000000..ab6f4a35210 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_securityrule.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_securityrulepropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_securityrulepropertiesformat.go new file mode 100644 index 00000000000..636af5195f0 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_securityrulepropertiesformat.go @@ -0,0 +1,23 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulePropertiesFormat struct { + Access SecurityRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction SecurityRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_serviceassociationlink.go b/resource-manager/network/2024-01-01/routetables/model_serviceassociationlink.go new file mode 100644 index 00000000000..682b3659989 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_serviceassociationlink.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceAssociationLinkPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_serviceassociationlinkpropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_serviceassociationlinkpropertiesformat.go new file mode 100644 index 00000000000..7ed4a93de00 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_serviceassociationlinkpropertiesformat.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLinkPropertiesFormat struct { + AllowDelete *bool `json:"allowDelete,omitempty"` + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + Locations *[]string `json:"locations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_servicedelegationpropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_servicedelegationpropertiesformat.go new file mode 100644 index 00000000000..fba1a21dc46 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_servicedelegationpropertiesformat.go @@ -0,0 +1,10 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceDelegationPropertiesFormat struct { + Actions *[]string `json:"actions,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_serviceendpointpolicy.go b/resource-manager/network/2024-01-01/routetables/model_serviceendpointpolicy.go new file mode 100644 index 00000000000..c941578ec3f --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_serviceendpointpolicy.go @@ -0,0 +1,15 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Kind *string `json:"kind,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_serviceendpointpolicydefinition.go b/resource-manager/network/2024-01-01/routetables/model_serviceendpointpolicydefinition.go new file mode 100644 index 00000000000..6a6135ec206 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_serviceendpointpolicydefinition.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinition struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_serviceendpointpolicydefinitionpropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_serviceendpointpolicydefinitionpropertiesformat.go new file mode 100644 index 00000000000..a9fcdcec846 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_serviceendpointpolicydefinitionpropertiesformat.go @@ -0,0 +1,11 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionPropertiesFormat struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` + ServiceResources *[]string `json:"serviceResources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_serviceendpointpolicypropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_serviceendpointpolicypropertiesformat.go new file mode 100644 index 00000000000..25a22cda3fd --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_serviceendpointpolicypropertiesformat.go @@ -0,0 +1,13 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyPropertiesFormat struct { + ContextualServiceEndpointPolicies *[]string `json:"contextualServiceEndpointPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServiceAlias *string `json:"serviceAlias,omitempty"` + ServiceEndpointPolicyDefinitions *[]ServiceEndpointPolicyDefinition `json:"serviceEndpointPolicyDefinitions,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_serviceendpointpropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_serviceendpointpropertiesformat.go new file mode 100644 index 00000000000..3f11f7d1bad --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_serviceendpointpropertiesformat.go @@ -0,0 +1,11 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPropertiesFormat struct { + Locations *[]string `json:"locations,omitempty"` + NetworkIdentifier *SubResource `json:"networkIdentifier,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_subnet.go b/resource-manager/network/2024-01-01/routetables/model_subnet.go new file mode 100644 index 00000000000..949e07613d6 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_subnet.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Subnet struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SubnetPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_subnetpropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_subnetpropertiesformat.go new file mode 100644 index 00000000000..e9da12bf739 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_subnetpropertiesformat.go @@ -0,0 +1,28 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + ApplicationGatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"applicationGatewayIPConfigurations,omitempty"` + DefaultOutboundAccess *bool `json:"defaultOutboundAccess,omitempty"` + Delegations *[]Delegation `json:"delegations,omitempty"` + IPAllocations *[]SubResource `json:"ipAllocations,omitempty"` + IPConfigurationProfiles *[]IPConfigurationProfile `json:"ipConfigurationProfiles,omitempty"` + IPConfigurations *[]IPConfiguration `json:"ipConfigurations,omitempty"` + NatGateway *SubResource `json:"natGateway,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + PrivateEndpointNetworkPolicies *VirtualNetworkPrivateEndpointNetworkPolicies `json:"privateEndpointNetworkPolicies,omitempty"` + PrivateEndpoints *[]PrivateEndpoint `json:"privateEndpoints,omitempty"` + PrivateLinkServiceNetworkPolicies *VirtualNetworkPrivateLinkServiceNetworkPolicies `json:"privateLinkServiceNetworkPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Purpose *string `json:"purpose,omitempty"` + ResourceNavigationLinks *[]ResourceNavigationLink `json:"resourceNavigationLinks,omitempty"` + RouteTable *RouteTable `json:"routeTable,omitempty"` + ServiceAssociationLinks *[]ServiceAssociationLink `json:"serviceAssociationLinks,omitempty"` + ServiceEndpointPolicies *[]ServiceEndpointPolicy `json:"serviceEndpointPolicies,omitempty"` + ServiceEndpoints *[]ServiceEndpointPropertiesFormat `json:"serviceEndpoints,omitempty"` + SharingScope *SharingScope `json:"sharingScope,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_subresource.go b/resource-manager/network/2024-01-01/routetables/model_subresource.go new file mode 100644 index 00000000000..eab315946e0 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_subresource.go @@ -0,0 +1,8 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_tagsobject.go b/resource-manager/network/2024-01-01/routetables/model_tagsobject.go new file mode 100644 index 00000000000..61b33687ad4 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_tagsobject.go @@ -0,0 +1,8 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/routetables/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..e02ff0c097e --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/routetables/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..d88b7ea067e --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_virtualnetworktap.go b/resource-manager/network/2024-01-01/routetables/model_virtualnetworktap.go new file mode 100644 index 00000000000..7551bed07c8 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_virtualnetworktap.go @@ -0,0 +1,14 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkTapPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/model_virtualnetworktappropertiesformat.go b/resource-manager/network/2024-01-01/routetables/model_virtualnetworktappropertiesformat.go new file mode 100644 index 00000000000..2094070851f --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/model_virtualnetworktappropertiesformat.go @@ -0,0 +1,13 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapPropertiesFormat struct { + DestinationLoadBalancerFrontEndIPConfiguration *FrontendIPConfiguration `json:"destinationLoadBalancerFrontEndIPConfiguration,omitempty"` + DestinationNetworkInterfaceIPConfiguration *NetworkInterfaceIPConfiguration `json:"destinationNetworkInterfaceIPConfiguration,omitempty"` + DestinationPort *int64 `json:"destinationPort,omitempty"` + NetworkInterfaceTapConfigurations *[]NetworkInterfaceTapConfiguration `json:"networkInterfaceTapConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/routetables/predicates.go b/resource-manager/network/2024-01-01/routetables/predicates.go new file mode 100644 index 00000000000..e1d89b9fbd4 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/predicates.go @@ -0,0 +1,37 @@ +package routetables + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTableOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p RouteTableOperationPredicate) Matches(input RouteTable) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/routetables/version.go b/resource-manager/network/2024-01-01/routetables/version.go new file mode 100644 index 00000000000..f57d25922e2 --- /dev/null +++ b/resource-manager/network/2024-01-01/routetables/version.go @@ -0,0 +1,12 @@ +package routetables + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/routetables/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/scopeconnections/README.md b/resource-manager/network/2024-01-01/scopeconnections/README.md new file mode 100644 index 00000000000..4fa34ba2e6a --- /dev/null +++ b/resource-manager/network/2024-01-01/scopeconnections/README.md @@ -0,0 +1,90 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/scopeconnections` Documentation + +The `scopeconnections` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/scopeconnections" +``` + + +### Client Initialization + +```go +client := scopeconnections.NewScopeConnectionsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ScopeConnectionsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := scopeconnections.NewScopeConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "scopeConnectionValue") + +payload := scopeconnections.ScopeConnection{ + // ... +} + + +read, err := client.CreateOrUpdate(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ScopeConnectionsClient.Delete` + +```go +ctx := context.TODO() +id := scopeconnections.NewScopeConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "scopeConnectionValue") + +read, err := client.Delete(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ScopeConnectionsClient.Get` + +```go +ctx := context.TODO() +id := scopeconnections.NewScopeConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "scopeConnectionValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ScopeConnectionsClient.List` + +```go +ctx := context.TODO() +id := scopeconnections.NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue") + +// alternatively `client.List(ctx, id, scopeconnections.DefaultListOperationOptions())` can be used to do batched pagination +items, err := client.ListComplete(ctx, id, scopeconnections.DefaultListOperationOptions()) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/scopeconnections/client.go b/resource-manager/network/2024-01-01/scopeconnections/client.go new file mode 100644 index 00000000000..aa7247e35c7 --- /dev/null +++ b/resource-manager/network/2024-01-01/scopeconnections/client.go @@ -0,0 +1,26 @@ +package scopeconnections + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ScopeConnectionsClient struct { + Client *resourcemanager.Client +} + +func NewScopeConnectionsClientWithBaseURI(sdkApi sdkEnv.Api) (*ScopeConnectionsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "scopeconnections", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ScopeConnectionsClient: %+v", err) + } + + return &ScopeConnectionsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/scopeconnections/constants.go b/resource-manager/network/2024-01-01/scopeconnections/constants.go new file mode 100644 index 00000000000..24a9bb99e3a --- /dev/null +++ b/resource-manager/network/2024-01-01/scopeconnections/constants.go @@ -0,0 +1,60 @@ +package scopeconnections + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ScopeConnectionState string + +const ( + ScopeConnectionStateConflict ScopeConnectionState = "Conflict" + ScopeConnectionStateConnected ScopeConnectionState = "Connected" + ScopeConnectionStatePending ScopeConnectionState = "Pending" + ScopeConnectionStateRejected ScopeConnectionState = "Rejected" + ScopeConnectionStateRevoked ScopeConnectionState = "Revoked" +) + +func PossibleValuesForScopeConnectionState() []string { + return []string{ + string(ScopeConnectionStateConflict), + string(ScopeConnectionStateConnected), + string(ScopeConnectionStatePending), + string(ScopeConnectionStateRejected), + string(ScopeConnectionStateRevoked), + } +} + +func (s *ScopeConnectionState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseScopeConnectionState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseScopeConnectionState(input string) (*ScopeConnectionState, error) { + vals := map[string]ScopeConnectionState{ + "conflict": ScopeConnectionStateConflict, + "connected": ScopeConnectionStateConnected, + "pending": ScopeConnectionStatePending, + "rejected": ScopeConnectionStateRejected, + "revoked": ScopeConnectionStateRevoked, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ScopeConnectionState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/scopeconnections/id_networkmanager.go b/resource-manager/network/2024-01-01/scopeconnections/id_networkmanager.go new file mode 100644 index 00000000000..259fe7f2afa --- /dev/null +++ b/resource-manager/network/2024-01-01/scopeconnections/id_networkmanager.go @@ -0,0 +1,130 @@ +package scopeconnections + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NetworkManagerId{}) +} + +var _ resourceids.ResourceId = &NetworkManagerId{} + +// NetworkManagerId is a struct representing the Resource ID for a Network Manager +type NetworkManagerId struct { + SubscriptionId string + ResourceGroupName string + NetworkManagerName string +} + +// NewNetworkManagerID returns a new NetworkManagerId struct +func NewNetworkManagerID(subscriptionId string, resourceGroupName string, networkManagerName string) NetworkManagerId { + return NetworkManagerId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkManagerName: networkManagerName, + } +} + +// ParseNetworkManagerID parses 'input' into a NetworkManagerId +func ParseNetworkManagerID(input string) (*NetworkManagerId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkManagerId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkManagerId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNetworkManagerIDInsensitively parses 'input' case-insensitively into a NetworkManagerId +// note: this method should only be used for API response data and not user input +func ParseNetworkManagerIDInsensitively(input string) (*NetworkManagerId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkManagerId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkManagerId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NetworkManagerId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkManagerName, ok = input.Parsed["networkManagerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkManagerName", input) + } + + return nil +} + +// ValidateNetworkManagerID checks that 'input' can be parsed as a Network Manager ID +func ValidateNetworkManagerID(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 := ParseNetworkManagerID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Network Manager ID +func (id NetworkManagerId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkManagers/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkManagerName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Network Manager ID +func (id NetworkManagerId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkManagers", "networkManagers", "networkManagers"), + resourceids.UserSpecifiedSegment("networkManagerName", "networkManagerValue"), + } +} + +// String returns a human-readable description of this Network Manager ID +func (id NetworkManagerId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Manager Name: %q", id.NetworkManagerName), + } + return fmt.Sprintf("Network Manager (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/scopeconnections/id_networkmanager_test.go b/resource-manager/network/2024-01-01/scopeconnections/id_networkmanager_test.go new file mode 100644 index 00000000000..2fff6fad485 --- /dev/null +++ b/resource-manager/network/2024-01-01/scopeconnections/id_networkmanager_test.go @@ -0,0 +1,282 @@ +package scopeconnections + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NetworkManagerId{} + +func TestNewNetworkManagerID(t *testing.T) { + id := NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkManagerName != "networkManagerValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkManagerName'", id.NetworkManagerName, "networkManagerValue") + } +} + +func TestFormatNetworkManagerID(t *testing.T) { + actual := NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNetworkManagerID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkManagerId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Expected: &NetworkManagerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkManagerID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + } +} + +func TestParseNetworkManagerIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkManagerId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Expected: &NetworkManagerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe", + Expected: &NetworkManagerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkManagerName: "nEtWoRkMaNaGeRvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkManagerIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + } +} + +func TestSegmentsForNetworkManagerId(t *testing.T) { + segments := NetworkManagerId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NetworkManagerId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/scopeconnections/id_scopeconnection.go b/resource-manager/network/2024-01-01/scopeconnections/id_scopeconnection.go new file mode 100644 index 00000000000..dd1d78f3b94 --- /dev/null +++ b/resource-manager/network/2024-01-01/scopeconnections/id_scopeconnection.go @@ -0,0 +1,139 @@ +package scopeconnections + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ScopeConnectionId{}) +} + +var _ resourceids.ResourceId = &ScopeConnectionId{} + +// ScopeConnectionId is a struct representing the Resource ID for a Scope Connection +type ScopeConnectionId struct { + SubscriptionId string + ResourceGroupName string + NetworkManagerName string + ScopeConnectionName string +} + +// NewScopeConnectionID returns a new ScopeConnectionId struct +func NewScopeConnectionID(subscriptionId string, resourceGroupName string, networkManagerName string, scopeConnectionName string) ScopeConnectionId { + return ScopeConnectionId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkManagerName: networkManagerName, + ScopeConnectionName: scopeConnectionName, + } +} + +// ParseScopeConnectionID parses 'input' into a ScopeConnectionId +func ParseScopeConnectionID(input string) (*ScopeConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&ScopeConnectionId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ScopeConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseScopeConnectionIDInsensitively parses 'input' case-insensitively into a ScopeConnectionId +// note: this method should only be used for API response data and not user input +func ParseScopeConnectionIDInsensitively(input string) (*ScopeConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&ScopeConnectionId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ScopeConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ScopeConnectionId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkManagerName, ok = input.Parsed["networkManagerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkManagerName", input) + } + + if id.ScopeConnectionName, ok = input.Parsed["scopeConnectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "scopeConnectionName", input) + } + + return nil +} + +// ValidateScopeConnectionID checks that 'input' can be parsed as a Scope Connection ID +func ValidateScopeConnectionID(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 := ParseScopeConnectionID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Scope Connection ID +func (id ScopeConnectionId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkManagers/%s/scopeConnections/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkManagerName, id.ScopeConnectionName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Scope Connection ID +func (id ScopeConnectionId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkManagers", "networkManagers", "networkManagers"), + resourceids.UserSpecifiedSegment("networkManagerName", "networkManagerValue"), + resourceids.StaticSegment("staticScopeConnections", "scopeConnections", "scopeConnections"), + resourceids.UserSpecifiedSegment("scopeConnectionName", "scopeConnectionValue"), + } +} + +// String returns a human-readable description of this Scope Connection ID +func (id ScopeConnectionId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Manager Name: %q", id.NetworkManagerName), + fmt.Sprintf("Scope Connection Name: %q", id.ScopeConnectionName), + } + return fmt.Sprintf("Scope Connection (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/scopeconnections/id_scopeconnection_test.go b/resource-manager/network/2024-01-01/scopeconnections/id_scopeconnection_test.go new file mode 100644 index 00000000000..7beffedb1b9 --- /dev/null +++ b/resource-manager/network/2024-01-01/scopeconnections/id_scopeconnection_test.go @@ -0,0 +1,327 @@ +package scopeconnections + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ScopeConnectionId{} + +func TestNewScopeConnectionID(t *testing.T) { + id := NewScopeConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "scopeConnectionValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkManagerName != "networkManagerValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkManagerName'", id.NetworkManagerName, "networkManagerValue") + } + + if id.ScopeConnectionName != "scopeConnectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'ScopeConnectionName'", id.ScopeConnectionName, "scopeConnectionValue") + } +} + +func TestFormatScopeConnectionID(t *testing.T) { + actual := NewScopeConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "scopeConnectionValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/scopeConnections/scopeConnectionValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseScopeConnectionID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ScopeConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/scopeConnections", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/scopeConnections/scopeConnectionValue", + Expected: &ScopeConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + ScopeConnectionName: "scopeConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/scopeConnections/scopeConnectionValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseScopeConnectionID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + if actual.ScopeConnectionName != v.Expected.ScopeConnectionName { + t.Fatalf("Expected %q but got %q for ScopeConnectionName", v.Expected.ScopeConnectionName, actual.ScopeConnectionName) + } + + } +} + +func TestParseScopeConnectionIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ScopeConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/scopeConnections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sCoPeCoNnEcTiOnS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/scopeConnections/scopeConnectionValue", + Expected: &ScopeConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + ScopeConnectionName: "scopeConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/scopeConnections/scopeConnectionValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sCoPeCoNnEcTiOnS/sCoPeCoNnEcTiOnVaLuE", + Expected: &ScopeConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkManagerName: "nEtWoRkMaNaGeRvAlUe", + ScopeConnectionName: "sCoPeCoNnEcTiOnVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sCoPeCoNnEcTiOnS/sCoPeCoNnEcTiOnVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseScopeConnectionIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + if actual.ScopeConnectionName != v.Expected.ScopeConnectionName { + t.Fatalf("Expected %q but got %q for ScopeConnectionName", v.Expected.ScopeConnectionName, actual.ScopeConnectionName) + } + + } +} + +func TestSegmentsForScopeConnectionId(t *testing.T) { + segments := ScopeConnectionId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ScopeConnectionId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/scopeconnections/method_createorupdate.go b/resource-manager/network/2024-01-01/scopeconnections/method_createorupdate.go new file mode 100644 index 00000000000..c0784b21bd5 --- /dev/null +++ b/resource-manager/network/2024-01-01/scopeconnections/method_createorupdate.go @@ -0,0 +1,59 @@ +package scopeconnections + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ScopeConnection +} + +// CreateOrUpdate ... +func (c ScopeConnectionsClient) CreateOrUpdate(ctx context.Context, id ScopeConnectionId, input ScopeConnection) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ScopeConnection + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/scopeconnections/method_delete.go b/resource-manager/network/2024-01-01/scopeconnections/method_delete.go new file mode 100644 index 00000000000..0ef9f60e8f6 --- /dev/null +++ b/resource-manager/network/2024-01-01/scopeconnections/method_delete.go @@ -0,0 +1,47 @@ +package scopeconnections + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c ScopeConnectionsClient) Delete(ctx context.Context, id ScopeConnectionId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/scopeconnections/method_get.go b/resource-manager/network/2024-01-01/scopeconnections/method_get.go new file mode 100644 index 00000000000..97616b65ce8 --- /dev/null +++ b/resource-manager/network/2024-01-01/scopeconnections/method_get.go @@ -0,0 +1,54 @@ +package scopeconnections + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ScopeConnection +} + +// Get ... +func (c ScopeConnectionsClient) Get(ctx context.Context, id ScopeConnectionId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ScopeConnection + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/scopeconnections/method_list.go b/resource-manager/network/2024-01-01/scopeconnections/method_list.go new file mode 100644 index 00000000000..4f298f36139 --- /dev/null +++ b/resource-manager/network/2024-01-01/scopeconnections/method_list.go @@ -0,0 +1,120 @@ +package scopeconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ScopeConnection +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []ScopeConnection +} + +type ListOperationOptions struct { + Top *int64 +} + +func DefaultListOperationOptions() ListOperationOptions { + return ListOperationOptions{} +} + +func (o ListOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o ListOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o ListOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Top != nil { + out.Append("$top", fmt.Sprintf("%v", *o.Top)) + } + return &out +} + +// List ... +func (c ScopeConnectionsClient) List(ctx context.Context, id NetworkManagerId, options ListOperationOptions) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/scopeConnections", id.ID()), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ScopeConnection `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c ScopeConnectionsClient) ListComplete(ctx context.Context, id NetworkManagerId, options ListOperationOptions) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, options, ScopeConnectionOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ScopeConnectionsClient) ListCompleteMatchingPredicate(ctx context.Context, id NetworkManagerId, options ListOperationOptions, predicate ScopeConnectionOperationPredicate) (result ListCompleteResult, err error) { + items := make([]ScopeConnection, 0) + + resp, err := c.List(ctx, id, options) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/scopeconnections/model_scopeconnection.go b/resource-manager/network/2024-01-01/scopeconnections/model_scopeconnection.go new file mode 100644 index 00000000000..ddb7dcfd3ff --- /dev/null +++ b/resource-manager/network/2024-01-01/scopeconnections/model_scopeconnection.go @@ -0,0 +1,17 @@ +package scopeconnections + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/systemdata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ScopeConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ScopeConnectionProperties `json:"properties,omitempty"` + SystemData *systemdata.SystemData `json:"systemData,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/scopeconnections/model_scopeconnectionproperties.go b/resource-manager/network/2024-01-01/scopeconnections/model_scopeconnectionproperties.go new file mode 100644 index 00000000000..0997147a2a9 --- /dev/null +++ b/resource-manager/network/2024-01-01/scopeconnections/model_scopeconnectionproperties.go @@ -0,0 +1,11 @@ +package scopeconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ScopeConnectionProperties struct { + ConnectionState *ScopeConnectionState `json:"connectionState,omitempty"` + Description *string `json:"description,omitempty"` + ResourceId *string `json:"resourceId,omitempty"` + TenantId *string `json:"tenantId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/scopeconnections/predicates.go b/resource-manager/network/2024-01-01/scopeconnections/predicates.go new file mode 100644 index 00000000000..eda309664f4 --- /dev/null +++ b/resource-manager/network/2024-01-01/scopeconnections/predicates.go @@ -0,0 +1,32 @@ +package scopeconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ScopeConnectionOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p ScopeConnectionOperationPredicate) Matches(input ScopeConnection) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/scopeconnections/version.go b/resource-manager/network/2024-01-01/scopeconnections/version.go new file mode 100644 index 00000000000..732c6294fe6 --- /dev/null +++ b/resource-manager/network/2024-01-01/scopeconnections/version.go @@ -0,0 +1,12 @@ +package scopeconnections + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/scopeconnections/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/securityadminconfigurations/README.md b/resource-manager/network/2024-01-01/securityadminconfigurations/README.md new file mode 100644 index 00000000000..522c4ccbf34 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityadminconfigurations/README.md @@ -0,0 +1,86 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/securityadminconfigurations` Documentation + +The `securityadminconfigurations` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/securityadminconfigurations" +``` + + +### Client Initialization + +```go +client := securityadminconfigurations.NewSecurityAdminConfigurationsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `SecurityAdminConfigurationsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := securityadminconfigurations.NewSecurityAdminConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "securityAdminConfigurationValue") + +payload := securityadminconfigurations.SecurityAdminConfiguration{ + // ... +} + + +read, err := client.CreateOrUpdate(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `SecurityAdminConfigurationsClient.Delete` + +```go +ctx := context.TODO() +id := securityadminconfigurations.NewSecurityAdminConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "securityAdminConfigurationValue") + +if err := client.DeleteThenPoll(ctx, id, securityadminconfigurations.DefaultDeleteOperationOptions()); err != nil { + // handle the error +} +``` + + +### Example Usage: `SecurityAdminConfigurationsClient.Get` + +```go +ctx := context.TODO() +id := securityadminconfigurations.NewSecurityAdminConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "securityAdminConfigurationValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `SecurityAdminConfigurationsClient.List` + +```go +ctx := context.TODO() +id := securityadminconfigurations.NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue") + +// alternatively `client.List(ctx, id, securityadminconfigurations.DefaultListOperationOptions())` can be used to do batched pagination +items, err := client.ListComplete(ctx, id, securityadminconfigurations.DefaultListOperationOptions()) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/securityadminconfigurations/client.go b/resource-manager/network/2024-01-01/securityadminconfigurations/client.go new file mode 100644 index 00000000000..7629a2dcefb --- /dev/null +++ b/resource-manager/network/2024-01-01/securityadminconfigurations/client.go @@ -0,0 +1,26 @@ +package securityadminconfigurations + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityAdminConfigurationsClient struct { + Client *resourcemanager.Client +} + +func NewSecurityAdminConfigurationsClientWithBaseURI(sdkApi sdkEnv.Api) (*SecurityAdminConfigurationsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "securityadminconfigurations", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating SecurityAdminConfigurationsClient: %+v", err) + } + + return &SecurityAdminConfigurationsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/securityadminconfigurations/constants.go b/resource-manager/network/2024-01-01/securityadminconfigurations/constants.go new file mode 100644 index 00000000000..bfadf6115a8 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityadminconfigurations/constants.go @@ -0,0 +1,101 @@ +package securityadminconfigurations + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkIntentPolicyBasedService string + +const ( + NetworkIntentPolicyBasedServiceAll NetworkIntentPolicyBasedService = "All" + NetworkIntentPolicyBasedServiceAllowRulesOnly NetworkIntentPolicyBasedService = "AllowRulesOnly" + NetworkIntentPolicyBasedServiceNone NetworkIntentPolicyBasedService = "None" +) + +func PossibleValuesForNetworkIntentPolicyBasedService() []string { + return []string{ + string(NetworkIntentPolicyBasedServiceAll), + string(NetworkIntentPolicyBasedServiceAllowRulesOnly), + string(NetworkIntentPolicyBasedServiceNone), + } +} + +func (s *NetworkIntentPolicyBasedService) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkIntentPolicyBasedService(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkIntentPolicyBasedService(input string) (*NetworkIntentPolicyBasedService, error) { + vals := map[string]NetworkIntentPolicyBasedService{ + "all": NetworkIntentPolicyBasedServiceAll, + "allowrulesonly": NetworkIntentPolicyBasedServiceAllowRulesOnly, + "none": NetworkIntentPolicyBasedServiceNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkIntentPolicyBasedService(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/securityadminconfigurations/id_networkmanager.go b/resource-manager/network/2024-01-01/securityadminconfigurations/id_networkmanager.go new file mode 100644 index 00000000000..cc45635d1cc --- /dev/null +++ b/resource-manager/network/2024-01-01/securityadminconfigurations/id_networkmanager.go @@ -0,0 +1,130 @@ +package securityadminconfigurations + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NetworkManagerId{}) +} + +var _ resourceids.ResourceId = &NetworkManagerId{} + +// NetworkManagerId is a struct representing the Resource ID for a Network Manager +type NetworkManagerId struct { + SubscriptionId string + ResourceGroupName string + NetworkManagerName string +} + +// NewNetworkManagerID returns a new NetworkManagerId struct +func NewNetworkManagerID(subscriptionId string, resourceGroupName string, networkManagerName string) NetworkManagerId { + return NetworkManagerId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkManagerName: networkManagerName, + } +} + +// ParseNetworkManagerID parses 'input' into a NetworkManagerId +func ParseNetworkManagerID(input string) (*NetworkManagerId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkManagerId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkManagerId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNetworkManagerIDInsensitively parses 'input' case-insensitively into a NetworkManagerId +// note: this method should only be used for API response data and not user input +func ParseNetworkManagerIDInsensitively(input string) (*NetworkManagerId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkManagerId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkManagerId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NetworkManagerId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkManagerName, ok = input.Parsed["networkManagerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkManagerName", input) + } + + return nil +} + +// ValidateNetworkManagerID checks that 'input' can be parsed as a Network Manager ID +func ValidateNetworkManagerID(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 := ParseNetworkManagerID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Network Manager ID +func (id NetworkManagerId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkManagers/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkManagerName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Network Manager ID +func (id NetworkManagerId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkManagers", "networkManagers", "networkManagers"), + resourceids.UserSpecifiedSegment("networkManagerName", "networkManagerValue"), + } +} + +// String returns a human-readable description of this Network Manager ID +func (id NetworkManagerId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Manager Name: %q", id.NetworkManagerName), + } + return fmt.Sprintf("Network Manager (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/securityadminconfigurations/id_networkmanager_test.go b/resource-manager/network/2024-01-01/securityadminconfigurations/id_networkmanager_test.go new file mode 100644 index 00000000000..1da0952d267 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityadminconfigurations/id_networkmanager_test.go @@ -0,0 +1,282 @@ +package securityadminconfigurations + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NetworkManagerId{} + +func TestNewNetworkManagerID(t *testing.T) { + id := NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkManagerName != "networkManagerValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkManagerName'", id.NetworkManagerName, "networkManagerValue") + } +} + +func TestFormatNetworkManagerID(t *testing.T) { + actual := NewNetworkManagerID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNetworkManagerID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkManagerId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Expected: &NetworkManagerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkManagerID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + } +} + +func TestParseNetworkManagerIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkManagerId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Expected: &NetworkManagerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe", + Expected: &NetworkManagerId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkManagerName: "nEtWoRkMaNaGeRvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkManagerIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + } +} + +func TestSegmentsForNetworkManagerId(t *testing.T) { + segments := NetworkManagerId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NetworkManagerId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/securityadminconfigurations/id_securityadminconfiguration.go b/resource-manager/network/2024-01-01/securityadminconfigurations/id_securityadminconfiguration.go new file mode 100644 index 00000000000..c481f6a158b --- /dev/null +++ b/resource-manager/network/2024-01-01/securityadminconfigurations/id_securityadminconfiguration.go @@ -0,0 +1,139 @@ +package securityadminconfigurations + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&SecurityAdminConfigurationId{}) +} + +var _ resourceids.ResourceId = &SecurityAdminConfigurationId{} + +// SecurityAdminConfigurationId is a struct representing the Resource ID for a Security Admin Configuration +type SecurityAdminConfigurationId struct { + SubscriptionId string + ResourceGroupName string + NetworkManagerName string + SecurityAdminConfigurationName string +} + +// NewSecurityAdminConfigurationID returns a new SecurityAdminConfigurationId struct +func NewSecurityAdminConfigurationID(subscriptionId string, resourceGroupName string, networkManagerName string, securityAdminConfigurationName string) SecurityAdminConfigurationId { + return SecurityAdminConfigurationId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkManagerName: networkManagerName, + SecurityAdminConfigurationName: securityAdminConfigurationName, + } +} + +// ParseSecurityAdminConfigurationID parses 'input' into a SecurityAdminConfigurationId +func ParseSecurityAdminConfigurationID(input string) (*SecurityAdminConfigurationId, error) { + parser := resourceids.NewParserFromResourceIdType(&SecurityAdminConfigurationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := SecurityAdminConfigurationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseSecurityAdminConfigurationIDInsensitively parses 'input' case-insensitively into a SecurityAdminConfigurationId +// note: this method should only be used for API response data and not user input +func ParseSecurityAdminConfigurationIDInsensitively(input string) (*SecurityAdminConfigurationId, error) { + parser := resourceids.NewParserFromResourceIdType(&SecurityAdminConfigurationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := SecurityAdminConfigurationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *SecurityAdminConfigurationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkManagerName, ok = input.Parsed["networkManagerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkManagerName", input) + } + + if id.SecurityAdminConfigurationName, ok = input.Parsed["securityAdminConfigurationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "securityAdminConfigurationName", input) + } + + return nil +} + +// ValidateSecurityAdminConfigurationID checks that 'input' can be parsed as a Security Admin Configuration ID +func ValidateSecurityAdminConfigurationID(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 := ParseSecurityAdminConfigurationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Security Admin Configuration ID +func (id SecurityAdminConfigurationId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkManagers/%s/securityAdminConfigurations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkManagerName, id.SecurityAdminConfigurationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Security Admin Configuration ID +func (id SecurityAdminConfigurationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkManagers", "networkManagers", "networkManagers"), + resourceids.UserSpecifiedSegment("networkManagerName", "networkManagerValue"), + resourceids.StaticSegment("staticSecurityAdminConfigurations", "securityAdminConfigurations", "securityAdminConfigurations"), + resourceids.UserSpecifiedSegment("securityAdminConfigurationName", "securityAdminConfigurationValue"), + } +} + +// String returns a human-readable description of this Security Admin Configuration ID +func (id SecurityAdminConfigurationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Manager Name: %q", id.NetworkManagerName), + fmt.Sprintf("Security Admin Configuration Name: %q", id.SecurityAdminConfigurationName), + } + return fmt.Sprintf("Security Admin Configuration (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/securityadminconfigurations/id_securityadminconfiguration_test.go b/resource-manager/network/2024-01-01/securityadminconfigurations/id_securityadminconfiguration_test.go new file mode 100644 index 00000000000..6bbef50dedb --- /dev/null +++ b/resource-manager/network/2024-01-01/securityadminconfigurations/id_securityadminconfiguration_test.go @@ -0,0 +1,327 @@ +package securityadminconfigurations + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &SecurityAdminConfigurationId{} + +func TestNewSecurityAdminConfigurationID(t *testing.T) { + id := NewSecurityAdminConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "securityAdminConfigurationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkManagerName != "networkManagerValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkManagerName'", id.NetworkManagerName, "networkManagerValue") + } + + if id.SecurityAdminConfigurationName != "securityAdminConfigurationValue" { + t.Fatalf("Expected %q but got %q for Segment 'SecurityAdminConfigurationName'", id.SecurityAdminConfigurationName, "securityAdminConfigurationValue") + } +} + +func TestFormatSecurityAdminConfigurationID(t *testing.T) { + actual := NewSecurityAdminConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "securityAdminConfigurationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseSecurityAdminConfigurationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *SecurityAdminConfigurationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue", + Expected: &SecurityAdminConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + SecurityAdminConfigurationName: "securityAdminConfigurationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseSecurityAdminConfigurationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + if actual.SecurityAdminConfigurationName != v.Expected.SecurityAdminConfigurationName { + t.Fatalf("Expected %q but got %q for SecurityAdminConfigurationName", v.Expected.SecurityAdminConfigurationName, actual.SecurityAdminConfigurationName) + } + + } +} + +func TestParseSecurityAdminConfigurationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *SecurityAdminConfigurationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sEcUrItYaDmInCoNfIgUrAtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue", + Expected: &SecurityAdminConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + SecurityAdminConfigurationName: "securityAdminConfigurationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/securityAdminConfigurations/securityAdminConfigurationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sEcUrItYaDmInCoNfIgUrAtIoNs/sEcUrItYaDmInCoNfIgUrAtIoNvAlUe", + Expected: &SecurityAdminConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkManagerName: "nEtWoRkMaNaGeRvAlUe", + SecurityAdminConfigurationName: "sEcUrItYaDmInCoNfIgUrAtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/sEcUrItYaDmInCoNfIgUrAtIoNs/sEcUrItYaDmInCoNfIgUrAtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseSecurityAdminConfigurationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + if actual.SecurityAdminConfigurationName != v.Expected.SecurityAdminConfigurationName { + t.Fatalf("Expected %q but got %q for SecurityAdminConfigurationName", v.Expected.SecurityAdminConfigurationName, actual.SecurityAdminConfigurationName) + } + + } +} + +func TestSegmentsForSecurityAdminConfigurationId(t *testing.T) { + segments := SecurityAdminConfigurationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("SecurityAdminConfigurationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/securityadminconfigurations/method_createorupdate.go b/resource-manager/network/2024-01-01/securityadminconfigurations/method_createorupdate.go new file mode 100644 index 00000000000..e285ab5384c --- /dev/null +++ b/resource-manager/network/2024-01-01/securityadminconfigurations/method_createorupdate.go @@ -0,0 +1,59 @@ +package securityadminconfigurations + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *SecurityAdminConfiguration +} + +// CreateOrUpdate ... +func (c SecurityAdminConfigurationsClient) CreateOrUpdate(ctx context.Context, id SecurityAdminConfigurationId, input SecurityAdminConfiguration) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model SecurityAdminConfiguration + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/securityadminconfigurations/method_delete.go b/resource-manager/network/2024-01-01/securityadminconfigurations/method_delete.go new file mode 100644 index 00000000000..d08913b2c20 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityadminconfigurations/method_delete.go @@ -0,0 +1,99 @@ +package securityadminconfigurations + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +type DeleteOperationOptions struct { + Force *bool +} + +func DefaultDeleteOperationOptions() DeleteOperationOptions { + return DeleteOperationOptions{} +} + +func (o DeleteOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o DeleteOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o DeleteOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Force != nil { + out.Append("force", fmt.Sprintf("%v", *o.Force)) + } + return &out +} + +// Delete ... +func (c SecurityAdminConfigurationsClient) Delete(ctx context.Context, id SecurityAdminConfigurationId, options DeleteOperationOptions) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c SecurityAdminConfigurationsClient) DeleteThenPoll(ctx context.Context, id SecurityAdminConfigurationId, options DeleteOperationOptions) error { + result, err := c.Delete(ctx, id, options) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/securityadminconfigurations/method_get.go b/resource-manager/network/2024-01-01/securityadminconfigurations/method_get.go new file mode 100644 index 00000000000..6046f27ef91 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityadminconfigurations/method_get.go @@ -0,0 +1,54 @@ +package securityadminconfigurations + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *SecurityAdminConfiguration +} + +// Get ... +func (c SecurityAdminConfigurationsClient) Get(ctx context.Context, id SecurityAdminConfigurationId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model SecurityAdminConfiguration + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/securityadminconfigurations/method_list.go b/resource-manager/network/2024-01-01/securityadminconfigurations/method_list.go new file mode 100644 index 00000000000..4e0a2f41041 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityadminconfigurations/method_list.go @@ -0,0 +1,120 @@ +package securityadminconfigurations + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]SecurityAdminConfiguration +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []SecurityAdminConfiguration +} + +type ListOperationOptions struct { + Top *int64 +} + +func DefaultListOperationOptions() ListOperationOptions { + return ListOperationOptions{} +} + +func (o ListOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o ListOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o ListOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Top != nil { + out.Append("$top", fmt.Sprintf("%v", *o.Top)) + } + return &out +} + +// List ... +func (c SecurityAdminConfigurationsClient) List(ctx context.Context, id NetworkManagerId, options ListOperationOptions) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/securityAdminConfigurations", id.ID()), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]SecurityAdminConfiguration `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c SecurityAdminConfigurationsClient) ListComplete(ctx context.Context, id NetworkManagerId, options ListOperationOptions) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, options, SecurityAdminConfigurationOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c SecurityAdminConfigurationsClient) ListCompleteMatchingPredicate(ctx context.Context, id NetworkManagerId, options ListOperationOptions, predicate SecurityAdminConfigurationOperationPredicate) (result ListCompleteResult, err error) { + items := make([]SecurityAdminConfiguration, 0) + + resp, err := c.List(ctx, id, options) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/securityadminconfigurations/model_securityadminconfiguration.go b/resource-manager/network/2024-01-01/securityadminconfigurations/model_securityadminconfiguration.go new file mode 100644 index 00000000000..004c4d46b07 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityadminconfigurations/model_securityadminconfiguration.go @@ -0,0 +1,17 @@ +package securityadminconfigurations + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/systemdata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityAdminConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityAdminConfigurationPropertiesFormat `json:"properties,omitempty"` + SystemData *systemdata.SystemData `json:"systemData,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/securityadminconfigurations/model_securityadminconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/securityadminconfigurations/model_securityadminconfigurationpropertiesformat.go new file mode 100644 index 00000000000..cf9ecff7791 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityadminconfigurations/model_securityadminconfigurationpropertiesformat.go @@ -0,0 +1,11 @@ +package securityadminconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityAdminConfigurationPropertiesFormat struct { + ApplyOnNetworkIntentPolicyBasedServices *[]NetworkIntentPolicyBasedService `json:"applyOnNetworkIntentPolicyBasedServices,omitempty"` + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/securityadminconfigurations/predicates.go b/resource-manager/network/2024-01-01/securityadminconfigurations/predicates.go new file mode 100644 index 00000000000..bcc5de9a6a8 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityadminconfigurations/predicates.go @@ -0,0 +1,32 @@ +package securityadminconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityAdminConfigurationOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p SecurityAdminConfigurationOperationPredicate) Matches(input SecurityAdminConfiguration) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/securityadminconfigurations/version.go b/resource-manager/network/2024-01-01/securityadminconfigurations/version.go new file mode 100644 index 00000000000..6ad6041d852 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityadminconfigurations/version.go @@ -0,0 +1,12 @@ +package securityadminconfigurations + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/securityadminconfigurations/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/securitypartnerproviders/README.md b/resource-manager/network/2024-01-01/securitypartnerproviders/README.md new file mode 100644 index 00000000000..263da57cbc1 --- /dev/null +++ b/resource-manager/network/2024-01-01/securitypartnerproviders/README.md @@ -0,0 +1,121 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/securitypartnerproviders` Documentation + +The `securitypartnerproviders` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/securitypartnerproviders" +``` + + +### Client Initialization + +```go +client := securitypartnerproviders.NewSecurityPartnerProvidersClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `SecurityPartnerProvidersClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := securitypartnerproviders.NewSecurityPartnerProviderID("12345678-1234-9876-4563-123456789012", "example-resource-group", "securityPartnerProviderValue") + +payload := securitypartnerproviders.SecurityPartnerProvider{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `SecurityPartnerProvidersClient.Delete` + +```go +ctx := context.TODO() +id := securitypartnerproviders.NewSecurityPartnerProviderID("12345678-1234-9876-4563-123456789012", "example-resource-group", "securityPartnerProviderValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `SecurityPartnerProvidersClient.Get` + +```go +ctx := context.TODO() +id := securitypartnerproviders.NewSecurityPartnerProviderID("12345678-1234-9876-4563-123456789012", "example-resource-group", "securityPartnerProviderValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `SecurityPartnerProvidersClient.List` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `SecurityPartnerProvidersClient.ListByResourceGroup` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.ListByResourceGroup(ctx, id)` can be used to do batched pagination +items, err := client.ListByResourceGroupComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `SecurityPartnerProvidersClient.UpdateTags` + +```go +ctx := context.TODO() +id := securitypartnerproviders.NewSecurityPartnerProviderID("12345678-1234-9876-4563-123456789012", "example-resource-group", "securityPartnerProviderValue") + +payload := securitypartnerproviders.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/securitypartnerproviders/client.go b/resource-manager/network/2024-01-01/securitypartnerproviders/client.go new file mode 100644 index 00000000000..e87ed7e5d0e --- /dev/null +++ b/resource-manager/network/2024-01-01/securitypartnerproviders/client.go @@ -0,0 +1,26 @@ +package securitypartnerproviders + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityPartnerProvidersClient struct { + Client *resourcemanager.Client +} + +func NewSecurityPartnerProvidersClientWithBaseURI(sdkApi sdkEnv.Api) (*SecurityPartnerProvidersClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "securitypartnerproviders", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating SecurityPartnerProvidersClient: %+v", err) + } + + return &SecurityPartnerProvidersClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/securitypartnerproviders/constants.go b/resource-manager/network/2024-01-01/securitypartnerproviders/constants.go new file mode 100644 index 00000000000..2390c77210a --- /dev/null +++ b/resource-manager/network/2024-01-01/securitypartnerproviders/constants.go @@ -0,0 +1,148 @@ +package securitypartnerproviders + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type SecurityPartnerProviderConnectionStatus string + +const ( + SecurityPartnerProviderConnectionStatusConnected SecurityPartnerProviderConnectionStatus = "Connected" + SecurityPartnerProviderConnectionStatusNotConnected SecurityPartnerProviderConnectionStatus = "NotConnected" + SecurityPartnerProviderConnectionStatusPartiallyConnected SecurityPartnerProviderConnectionStatus = "PartiallyConnected" + SecurityPartnerProviderConnectionStatusUnknown SecurityPartnerProviderConnectionStatus = "Unknown" +) + +func PossibleValuesForSecurityPartnerProviderConnectionStatus() []string { + return []string{ + string(SecurityPartnerProviderConnectionStatusConnected), + string(SecurityPartnerProviderConnectionStatusNotConnected), + string(SecurityPartnerProviderConnectionStatusPartiallyConnected), + string(SecurityPartnerProviderConnectionStatusUnknown), + } +} + +func (s *SecurityPartnerProviderConnectionStatus) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityPartnerProviderConnectionStatus(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityPartnerProviderConnectionStatus(input string) (*SecurityPartnerProviderConnectionStatus, error) { + vals := map[string]SecurityPartnerProviderConnectionStatus{ + "connected": SecurityPartnerProviderConnectionStatusConnected, + "notconnected": SecurityPartnerProviderConnectionStatusNotConnected, + "partiallyconnected": SecurityPartnerProviderConnectionStatusPartiallyConnected, + "unknown": SecurityPartnerProviderConnectionStatusUnknown, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityPartnerProviderConnectionStatus(input) + return &out, nil +} + +type SecurityProviderName string + +const ( + SecurityProviderNameCheckpoint SecurityProviderName = "Checkpoint" + SecurityProviderNameIBoss SecurityProviderName = "IBoss" + SecurityProviderNameZScaler SecurityProviderName = "ZScaler" +) + +func PossibleValuesForSecurityProviderName() []string { + return []string{ + string(SecurityProviderNameCheckpoint), + string(SecurityProviderNameIBoss), + string(SecurityProviderNameZScaler), + } +} + +func (s *SecurityProviderName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityProviderName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityProviderName(input string) (*SecurityProviderName, error) { + vals := map[string]SecurityProviderName{ + "checkpoint": SecurityProviderNameCheckpoint, + "iboss": SecurityProviderNameIBoss, + "zscaler": SecurityProviderNameZScaler, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityProviderName(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/securitypartnerproviders/id_securitypartnerprovider.go b/resource-manager/network/2024-01-01/securitypartnerproviders/id_securitypartnerprovider.go new file mode 100644 index 00000000000..32dd3433d4a --- /dev/null +++ b/resource-manager/network/2024-01-01/securitypartnerproviders/id_securitypartnerprovider.go @@ -0,0 +1,130 @@ +package securitypartnerproviders + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&SecurityPartnerProviderId{}) +} + +var _ resourceids.ResourceId = &SecurityPartnerProviderId{} + +// SecurityPartnerProviderId is a struct representing the Resource ID for a Security Partner Provider +type SecurityPartnerProviderId struct { + SubscriptionId string + ResourceGroupName string + SecurityPartnerProviderName string +} + +// NewSecurityPartnerProviderID returns a new SecurityPartnerProviderId struct +func NewSecurityPartnerProviderID(subscriptionId string, resourceGroupName string, securityPartnerProviderName string) SecurityPartnerProviderId { + return SecurityPartnerProviderId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + SecurityPartnerProviderName: securityPartnerProviderName, + } +} + +// ParseSecurityPartnerProviderID parses 'input' into a SecurityPartnerProviderId +func ParseSecurityPartnerProviderID(input string) (*SecurityPartnerProviderId, error) { + parser := resourceids.NewParserFromResourceIdType(&SecurityPartnerProviderId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := SecurityPartnerProviderId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseSecurityPartnerProviderIDInsensitively parses 'input' case-insensitively into a SecurityPartnerProviderId +// note: this method should only be used for API response data and not user input +func ParseSecurityPartnerProviderIDInsensitively(input string) (*SecurityPartnerProviderId, error) { + parser := resourceids.NewParserFromResourceIdType(&SecurityPartnerProviderId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := SecurityPartnerProviderId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *SecurityPartnerProviderId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.SecurityPartnerProviderName, ok = input.Parsed["securityPartnerProviderName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "securityPartnerProviderName", input) + } + + return nil +} + +// ValidateSecurityPartnerProviderID checks that 'input' can be parsed as a Security Partner Provider ID +func ValidateSecurityPartnerProviderID(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 := ParseSecurityPartnerProviderID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Security Partner Provider ID +func (id SecurityPartnerProviderId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/securityPartnerProviders/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.SecurityPartnerProviderName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Security Partner Provider ID +func (id SecurityPartnerProviderId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticSecurityPartnerProviders", "securityPartnerProviders", "securityPartnerProviders"), + resourceids.UserSpecifiedSegment("securityPartnerProviderName", "securityPartnerProviderValue"), + } +} + +// String returns a human-readable description of this Security Partner Provider ID +func (id SecurityPartnerProviderId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Security Partner Provider Name: %q", id.SecurityPartnerProviderName), + } + return fmt.Sprintf("Security Partner Provider (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/securitypartnerproviders/id_securitypartnerprovider_test.go b/resource-manager/network/2024-01-01/securitypartnerproviders/id_securitypartnerprovider_test.go new file mode 100644 index 00000000000..6eefc130a4d --- /dev/null +++ b/resource-manager/network/2024-01-01/securitypartnerproviders/id_securitypartnerprovider_test.go @@ -0,0 +1,282 @@ +package securitypartnerproviders + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &SecurityPartnerProviderId{} + +func TestNewSecurityPartnerProviderID(t *testing.T) { + id := NewSecurityPartnerProviderID("12345678-1234-9876-4563-123456789012", "example-resource-group", "securityPartnerProviderValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.SecurityPartnerProviderName != "securityPartnerProviderValue" { + t.Fatalf("Expected %q but got %q for Segment 'SecurityPartnerProviderName'", id.SecurityPartnerProviderName, "securityPartnerProviderValue") + } +} + +func TestFormatSecurityPartnerProviderID(t *testing.T) { + actual := NewSecurityPartnerProviderID("12345678-1234-9876-4563-123456789012", "example-resource-group", "securityPartnerProviderValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/securityPartnerProviders/securityPartnerProviderValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseSecurityPartnerProviderID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *SecurityPartnerProviderId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/securityPartnerProviders", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/securityPartnerProviders/securityPartnerProviderValue", + Expected: &SecurityPartnerProviderId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + SecurityPartnerProviderName: "securityPartnerProviderValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/securityPartnerProviders/securityPartnerProviderValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseSecurityPartnerProviderID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.SecurityPartnerProviderName != v.Expected.SecurityPartnerProviderName { + t.Fatalf("Expected %q but got %q for SecurityPartnerProviderName", v.Expected.SecurityPartnerProviderName, actual.SecurityPartnerProviderName) + } + + } +} + +func TestParseSecurityPartnerProviderIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *SecurityPartnerProviderId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/securityPartnerProviders", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/sEcUrItYpArTnErPrOvIdErS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/securityPartnerProviders/securityPartnerProviderValue", + Expected: &SecurityPartnerProviderId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + SecurityPartnerProviderName: "securityPartnerProviderValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/securityPartnerProviders/securityPartnerProviderValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/sEcUrItYpArTnErPrOvIdErS/sEcUrItYpArTnErPrOvIdErVaLuE", + Expected: &SecurityPartnerProviderId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + SecurityPartnerProviderName: "sEcUrItYpArTnErPrOvIdErVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/sEcUrItYpArTnErPrOvIdErS/sEcUrItYpArTnErPrOvIdErVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseSecurityPartnerProviderIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.SecurityPartnerProviderName != v.Expected.SecurityPartnerProviderName { + t.Fatalf("Expected %q but got %q for SecurityPartnerProviderName", v.Expected.SecurityPartnerProviderName, actual.SecurityPartnerProviderName) + } + + } +} + +func TestSegmentsForSecurityPartnerProviderId(t *testing.T) { + segments := SecurityPartnerProviderId{}.Segments() + if len(segments) == 0 { + t.Fatalf("SecurityPartnerProviderId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/securitypartnerproviders/method_createorupdate.go b/resource-manager/network/2024-01-01/securitypartnerproviders/method_createorupdate.go new file mode 100644 index 00000000000..3fb82d42ab3 --- /dev/null +++ b/resource-manager/network/2024-01-01/securitypartnerproviders/method_createorupdate.go @@ -0,0 +1,75 @@ +package securitypartnerproviders + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *SecurityPartnerProvider +} + +// CreateOrUpdate ... +func (c SecurityPartnerProvidersClient) CreateOrUpdate(ctx context.Context, id SecurityPartnerProviderId, input SecurityPartnerProvider) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c SecurityPartnerProvidersClient) CreateOrUpdateThenPoll(ctx context.Context, id SecurityPartnerProviderId, input SecurityPartnerProvider) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/securitypartnerproviders/method_delete.go b/resource-manager/network/2024-01-01/securitypartnerproviders/method_delete.go new file mode 100644 index 00000000000..9494188070d --- /dev/null +++ b/resource-manager/network/2024-01-01/securitypartnerproviders/method_delete.go @@ -0,0 +1,71 @@ +package securitypartnerproviders + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c SecurityPartnerProvidersClient) Delete(ctx context.Context, id SecurityPartnerProviderId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c SecurityPartnerProvidersClient) DeleteThenPoll(ctx context.Context, id SecurityPartnerProviderId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/securitypartnerproviders/method_get.go b/resource-manager/network/2024-01-01/securitypartnerproviders/method_get.go new file mode 100644 index 00000000000..ca56a913bc7 --- /dev/null +++ b/resource-manager/network/2024-01-01/securitypartnerproviders/method_get.go @@ -0,0 +1,54 @@ +package securitypartnerproviders + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *SecurityPartnerProvider +} + +// Get ... +func (c SecurityPartnerProvidersClient) Get(ctx context.Context, id SecurityPartnerProviderId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model SecurityPartnerProvider + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/securitypartnerproviders/method_list.go b/resource-manager/network/2024-01-01/securitypartnerproviders/method_list.go new file mode 100644 index 00000000000..2ef1d4133ba --- /dev/null +++ b/resource-manager/network/2024-01-01/securitypartnerproviders/method_list.go @@ -0,0 +1,93 @@ +package securitypartnerproviders + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]SecurityPartnerProvider +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []SecurityPartnerProvider +} + +// List ... +func (c SecurityPartnerProvidersClient) List(ctx context.Context, id commonids.SubscriptionId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/securityPartnerProviders", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]SecurityPartnerProvider `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c SecurityPartnerProvidersClient) ListComplete(ctx context.Context, id commonids.SubscriptionId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, SecurityPartnerProviderOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c SecurityPartnerProvidersClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate SecurityPartnerProviderOperationPredicate) (result ListCompleteResult, err error) { + items := make([]SecurityPartnerProvider, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/securitypartnerproviders/method_listbyresourcegroup.go b/resource-manager/network/2024-01-01/securitypartnerproviders/method_listbyresourcegroup.go new file mode 100644 index 00000000000..5e7d3b8e25b --- /dev/null +++ b/resource-manager/network/2024-01-01/securitypartnerproviders/method_listbyresourcegroup.go @@ -0,0 +1,93 @@ +package securitypartnerproviders + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListByResourceGroupOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]SecurityPartnerProvider +} + +type ListByResourceGroupCompleteResult struct { + LatestHttpResponse *http.Response + Items []SecurityPartnerProvider +} + +// ListByResourceGroup ... +func (c SecurityPartnerProvidersClient) ListByResourceGroup(ctx context.Context, id commonids.ResourceGroupId) (result ListByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/securityPartnerProviders", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]SecurityPartnerProvider `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListByResourceGroupComplete retrieves all the results into a single object +func (c SecurityPartnerProvidersClient) ListByResourceGroupComplete(ctx context.Context, id commonids.ResourceGroupId) (ListByResourceGroupCompleteResult, error) { + return c.ListByResourceGroupCompleteMatchingPredicate(ctx, id, SecurityPartnerProviderOperationPredicate{}) +} + +// ListByResourceGroupCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c SecurityPartnerProvidersClient) ListByResourceGroupCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate SecurityPartnerProviderOperationPredicate) (result ListByResourceGroupCompleteResult, err error) { + items := make([]SecurityPartnerProvider, 0) + + resp, err := c.ListByResourceGroup(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListByResourceGroupCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/securitypartnerproviders/method_updatetags.go b/resource-manager/network/2024-01-01/securitypartnerproviders/method_updatetags.go new file mode 100644 index 00000000000..7cbef507221 --- /dev/null +++ b/resource-manager/network/2024-01-01/securitypartnerproviders/method_updatetags.go @@ -0,0 +1,58 @@ +package securitypartnerproviders + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *SecurityPartnerProvider +} + +// UpdateTags ... +func (c SecurityPartnerProvidersClient) UpdateTags(ctx context.Context, id SecurityPartnerProviderId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model SecurityPartnerProvider + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/securitypartnerproviders/model_securitypartnerprovider.go b/resource-manager/network/2024-01-01/securitypartnerproviders/model_securitypartnerprovider.go new file mode 100644 index 00000000000..059710a7ff6 --- /dev/null +++ b/resource-manager/network/2024-01-01/securitypartnerproviders/model_securitypartnerprovider.go @@ -0,0 +1,14 @@ +package securitypartnerproviders + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityPartnerProvider struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityPartnerProviderPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/securitypartnerproviders/model_securitypartnerproviderpropertiesformat.go b/resource-manager/network/2024-01-01/securitypartnerproviders/model_securitypartnerproviderpropertiesformat.go new file mode 100644 index 00000000000..100f4648a9e --- /dev/null +++ b/resource-manager/network/2024-01-01/securitypartnerproviders/model_securitypartnerproviderpropertiesformat.go @@ -0,0 +1,11 @@ +package securitypartnerproviders + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityPartnerProviderPropertiesFormat struct { + ConnectionStatus *SecurityPartnerProviderConnectionStatus `json:"connectionStatus,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SecurityProviderName *SecurityProviderName `json:"securityProviderName,omitempty"` + VirtualHub *SubResource `json:"virtualHub,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/securitypartnerproviders/model_subresource.go b/resource-manager/network/2024-01-01/securitypartnerproviders/model_subresource.go new file mode 100644 index 00000000000..0d259c7609a --- /dev/null +++ b/resource-manager/network/2024-01-01/securitypartnerproviders/model_subresource.go @@ -0,0 +1,8 @@ +package securitypartnerproviders + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/securitypartnerproviders/model_tagsobject.go b/resource-manager/network/2024-01-01/securitypartnerproviders/model_tagsobject.go new file mode 100644 index 00000000000..64020cc08ef --- /dev/null +++ b/resource-manager/network/2024-01-01/securitypartnerproviders/model_tagsobject.go @@ -0,0 +1,8 @@ +package securitypartnerproviders + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/securitypartnerproviders/predicates.go b/resource-manager/network/2024-01-01/securitypartnerproviders/predicates.go new file mode 100644 index 00000000000..ef826d6c55f --- /dev/null +++ b/resource-manager/network/2024-01-01/securitypartnerproviders/predicates.go @@ -0,0 +1,37 @@ +package securitypartnerproviders + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityPartnerProviderOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p SecurityPartnerProviderOperationPredicate) Matches(input SecurityPartnerProvider) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/securitypartnerproviders/version.go b/resource-manager/network/2024-01-01/securitypartnerproviders/version.go new file mode 100644 index 00000000000..31ca200c136 --- /dev/null +++ b/resource-manager/network/2024-01-01/securitypartnerproviders/version.go @@ -0,0 +1,12 @@ +package securitypartnerproviders + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/securitypartnerproviders/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/securityrules/README.md b/resource-manager/network/2024-01-01/securityrules/README.md new file mode 100644 index 00000000000..a53439300b5 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityrules/README.md @@ -0,0 +1,115 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/securityrules` Documentation + +The `securityrules` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/securityrules" +``` + + +### Client Initialization + +```go +client := securityrules.NewSecurityRulesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `SecurityRulesClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := securityrules.NewSecurityRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkSecurityGroupValue", "securityRuleValue") + +payload := securityrules.SecurityRule{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `SecurityRulesClient.DefaultSecurityRulesGet` + +```go +ctx := context.TODO() +id := securityrules.NewDefaultSecurityRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkSecurityGroupValue", "defaultSecurityRuleValue") + +read, err := client.DefaultSecurityRulesGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `SecurityRulesClient.DefaultSecurityRulesList` + +```go +ctx := context.TODO() +id := securityrules.NewNetworkSecurityGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkSecurityGroupValue") + +// alternatively `client.DefaultSecurityRulesList(ctx, id)` can be used to do batched pagination +items, err := client.DefaultSecurityRulesListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `SecurityRulesClient.Delete` + +```go +ctx := context.TODO() +id := securityrules.NewSecurityRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkSecurityGroupValue", "securityRuleValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `SecurityRulesClient.Get` + +```go +ctx := context.TODO() +id := securityrules.NewSecurityRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkSecurityGroupValue", "securityRuleValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `SecurityRulesClient.List` + +```go +ctx := context.TODO() +id := securityrules.NewNetworkSecurityGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkSecurityGroupValue") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/securityrules/client.go b/resource-manager/network/2024-01-01/securityrules/client.go new file mode 100644 index 00000000000..1fbf9b2c78c --- /dev/null +++ b/resource-manager/network/2024-01-01/securityrules/client.go @@ -0,0 +1,26 @@ +package securityrules + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulesClient struct { + Client *resourcemanager.Client +} + +func NewSecurityRulesClientWithBaseURI(sdkApi sdkEnv.Api) (*SecurityRulesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "securityrules", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating SecurityRulesClient: %+v", err) + } + + return &SecurityRulesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/securityrules/constants.go b/resource-manager/network/2024-01-01/securityrules/constants.go new file mode 100644 index 00000000000..41396358614 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityrules/constants.go @@ -0,0 +1,192 @@ +package securityrules + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type SecurityRuleAccess string + +const ( + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +func PossibleValuesForSecurityRuleAccess() []string { + return []string{ + string(SecurityRuleAccessAllow), + string(SecurityRuleAccessDeny), + } +} + +func (s *SecurityRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleAccess(input string) (*SecurityRuleAccess, error) { + vals := map[string]SecurityRuleAccess{ + "allow": SecurityRuleAccessAllow, + "deny": SecurityRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleAccess(input) + return &out, nil +} + +type SecurityRuleDirection string + +const ( + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityRuleDirection() []string { + return []string{ + string(SecurityRuleDirectionInbound), + string(SecurityRuleDirectionOutbound), + } +} + +func (s *SecurityRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleDirection(input string) (*SecurityRuleDirection, error) { + vals := map[string]SecurityRuleDirection{ + "inbound": SecurityRuleDirectionInbound, + "outbound": SecurityRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleDirection(input) + return &out, nil +} + +type SecurityRuleProtocol string + +const ( + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + SecurityRuleProtocolAny SecurityRuleProtocol = "*" + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + SecurityRuleProtocolTcp SecurityRuleProtocol = "Tcp" + SecurityRuleProtocolUdp SecurityRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityRuleProtocol() []string { + return []string{ + string(SecurityRuleProtocolAh), + string(SecurityRuleProtocolAny), + string(SecurityRuleProtocolEsp), + string(SecurityRuleProtocolIcmp), + string(SecurityRuleProtocolTcp), + string(SecurityRuleProtocolUdp), + } +} + +func (s *SecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleProtocol(input string) (*SecurityRuleProtocol, error) { + vals := map[string]SecurityRuleProtocol{ + "ah": SecurityRuleProtocolAh, + "*": SecurityRuleProtocolAny, + "esp": SecurityRuleProtocolEsp, + "icmp": SecurityRuleProtocolIcmp, + "tcp": SecurityRuleProtocolTcp, + "udp": SecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleProtocol(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/securityrules/id_defaultsecurityrule.go b/resource-manager/network/2024-01-01/securityrules/id_defaultsecurityrule.go new file mode 100644 index 00000000000..a09823c4a35 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityrules/id_defaultsecurityrule.go @@ -0,0 +1,139 @@ +package securityrules + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&DefaultSecurityRuleId{}) +} + +var _ resourceids.ResourceId = &DefaultSecurityRuleId{} + +// DefaultSecurityRuleId is a struct representing the Resource ID for a Default Security Rule +type DefaultSecurityRuleId struct { + SubscriptionId string + ResourceGroupName string + NetworkSecurityGroupName string + DefaultSecurityRuleName string +} + +// NewDefaultSecurityRuleID returns a new DefaultSecurityRuleId struct +func NewDefaultSecurityRuleID(subscriptionId string, resourceGroupName string, networkSecurityGroupName string, defaultSecurityRuleName string) DefaultSecurityRuleId { + return DefaultSecurityRuleId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkSecurityGroupName: networkSecurityGroupName, + DefaultSecurityRuleName: defaultSecurityRuleName, + } +} + +// ParseDefaultSecurityRuleID parses 'input' into a DefaultSecurityRuleId +func ParseDefaultSecurityRuleID(input string) (*DefaultSecurityRuleId, error) { + parser := resourceids.NewParserFromResourceIdType(&DefaultSecurityRuleId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := DefaultSecurityRuleId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseDefaultSecurityRuleIDInsensitively parses 'input' case-insensitively into a DefaultSecurityRuleId +// note: this method should only be used for API response data and not user input +func ParseDefaultSecurityRuleIDInsensitively(input string) (*DefaultSecurityRuleId, error) { + parser := resourceids.NewParserFromResourceIdType(&DefaultSecurityRuleId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := DefaultSecurityRuleId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *DefaultSecurityRuleId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkSecurityGroupName, ok = input.Parsed["networkSecurityGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkSecurityGroupName", input) + } + + if id.DefaultSecurityRuleName, ok = input.Parsed["defaultSecurityRuleName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "defaultSecurityRuleName", input) + } + + return nil +} + +// ValidateDefaultSecurityRuleID checks that 'input' can be parsed as a Default Security Rule ID +func ValidateDefaultSecurityRuleID(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 := ParseDefaultSecurityRuleID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Default Security Rule ID +func (id DefaultSecurityRuleId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkSecurityGroups/%s/defaultSecurityRules/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkSecurityGroupName, id.DefaultSecurityRuleName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Default Security Rule ID +func (id DefaultSecurityRuleId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkSecurityGroups", "networkSecurityGroups", "networkSecurityGroups"), + resourceids.UserSpecifiedSegment("networkSecurityGroupName", "networkSecurityGroupValue"), + resourceids.StaticSegment("staticDefaultSecurityRules", "defaultSecurityRules", "defaultSecurityRules"), + resourceids.UserSpecifiedSegment("defaultSecurityRuleName", "defaultSecurityRuleValue"), + } +} + +// String returns a human-readable description of this Default Security Rule ID +func (id DefaultSecurityRuleId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Security Group Name: %q", id.NetworkSecurityGroupName), + fmt.Sprintf("Default Security Rule Name: %q", id.DefaultSecurityRuleName), + } + return fmt.Sprintf("Default Security Rule (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/securityrules/id_defaultsecurityrule_test.go b/resource-manager/network/2024-01-01/securityrules/id_defaultsecurityrule_test.go new file mode 100644 index 00000000000..1e58fe9d867 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityrules/id_defaultsecurityrule_test.go @@ -0,0 +1,327 @@ +package securityrules + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &DefaultSecurityRuleId{} + +func TestNewDefaultSecurityRuleID(t *testing.T) { + id := NewDefaultSecurityRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkSecurityGroupValue", "defaultSecurityRuleValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkSecurityGroupName != "networkSecurityGroupValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkSecurityGroupName'", id.NetworkSecurityGroupName, "networkSecurityGroupValue") + } + + if id.DefaultSecurityRuleName != "defaultSecurityRuleValue" { + t.Fatalf("Expected %q but got %q for Segment 'DefaultSecurityRuleName'", id.DefaultSecurityRuleName, "defaultSecurityRuleValue") + } +} + +func TestFormatDefaultSecurityRuleID(t *testing.T) { + actual := NewDefaultSecurityRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkSecurityGroupValue", "defaultSecurityRuleValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue/defaultSecurityRules/defaultSecurityRuleValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseDefaultSecurityRuleID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *DefaultSecurityRuleId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue/defaultSecurityRules", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue/defaultSecurityRules/defaultSecurityRuleValue", + Expected: &DefaultSecurityRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkSecurityGroupName: "networkSecurityGroupValue", + DefaultSecurityRuleName: "defaultSecurityRuleValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue/defaultSecurityRules/defaultSecurityRuleValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseDefaultSecurityRuleID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkSecurityGroupName != v.Expected.NetworkSecurityGroupName { + t.Fatalf("Expected %q but got %q for NetworkSecurityGroupName", v.Expected.NetworkSecurityGroupName, actual.NetworkSecurityGroupName) + } + + if actual.DefaultSecurityRuleName != v.Expected.DefaultSecurityRuleName { + t.Fatalf("Expected %q but got %q for DefaultSecurityRuleName", v.Expected.DefaultSecurityRuleName, actual.DefaultSecurityRuleName) + } + + } +} + +func TestParseDefaultSecurityRuleIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *DefaultSecurityRuleId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkSeCuRiTyGrOuPs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkSeCuRiTyGrOuPs/nEtWoRkSeCuRiTyGrOuPvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue/defaultSecurityRules", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkSeCuRiTyGrOuPs/nEtWoRkSeCuRiTyGrOuPvAlUe/dEfAuLtSeCuRiTyRuLeS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue/defaultSecurityRules/defaultSecurityRuleValue", + Expected: &DefaultSecurityRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkSecurityGroupName: "networkSecurityGroupValue", + DefaultSecurityRuleName: "defaultSecurityRuleValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue/defaultSecurityRules/defaultSecurityRuleValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkSeCuRiTyGrOuPs/nEtWoRkSeCuRiTyGrOuPvAlUe/dEfAuLtSeCuRiTyRuLeS/dEfAuLtSeCuRiTyRuLeVaLuE", + Expected: &DefaultSecurityRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkSecurityGroupName: "nEtWoRkSeCuRiTyGrOuPvAlUe", + DefaultSecurityRuleName: "dEfAuLtSeCuRiTyRuLeVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkSeCuRiTyGrOuPs/nEtWoRkSeCuRiTyGrOuPvAlUe/dEfAuLtSeCuRiTyRuLeS/dEfAuLtSeCuRiTyRuLeVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseDefaultSecurityRuleIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkSecurityGroupName != v.Expected.NetworkSecurityGroupName { + t.Fatalf("Expected %q but got %q for NetworkSecurityGroupName", v.Expected.NetworkSecurityGroupName, actual.NetworkSecurityGroupName) + } + + if actual.DefaultSecurityRuleName != v.Expected.DefaultSecurityRuleName { + t.Fatalf("Expected %q but got %q for DefaultSecurityRuleName", v.Expected.DefaultSecurityRuleName, actual.DefaultSecurityRuleName) + } + + } +} + +func TestSegmentsForDefaultSecurityRuleId(t *testing.T) { + segments := DefaultSecurityRuleId{}.Segments() + if len(segments) == 0 { + t.Fatalf("DefaultSecurityRuleId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/securityrules/id_networksecuritygroup.go b/resource-manager/network/2024-01-01/securityrules/id_networksecuritygroup.go new file mode 100644 index 00000000000..9b818e973d9 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityrules/id_networksecuritygroup.go @@ -0,0 +1,130 @@ +package securityrules + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NetworkSecurityGroupId{}) +} + +var _ resourceids.ResourceId = &NetworkSecurityGroupId{} + +// NetworkSecurityGroupId is a struct representing the Resource ID for a Network Security Group +type NetworkSecurityGroupId struct { + SubscriptionId string + ResourceGroupName string + NetworkSecurityGroupName string +} + +// NewNetworkSecurityGroupID returns a new NetworkSecurityGroupId struct +func NewNetworkSecurityGroupID(subscriptionId string, resourceGroupName string, networkSecurityGroupName string) NetworkSecurityGroupId { + return NetworkSecurityGroupId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkSecurityGroupName: networkSecurityGroupName, + } +} + +// ParseNetworkSecurityGroupID parses 'input' into a NetworkSecurityGroupId +func ParseNetworkSecurityGroupID(input string) (*NetworkSecurityGroupId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkSecurityGroupId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkSecurityGroupId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNetworkSecurityGroupIDInsensitively parses 'input' case-insensitively into a NetworkSecurityGroupId +// note: this method should only be used for API response data and not user input +func ParseNetworkSecurityGroupIDInsensitively(input string) (*NetworkSecurityGroupId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkSecurityGroupId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkSecurityGroupId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NetworkSecurityGroupId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkSecurityGroupName, ok = input.Parsed["networkSecurityGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkSecurityGroupName", input) + } + + return nil +} + +// ValidateNetworkSecurityGroupID checks that 'input' can be parsed as a Network Security Group ID +func ValidateNetworkSecurityGroupID(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 := ParseNetworkSecurityGroupID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Network Security Group ID +func (id NetworkSecurityGroupId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkSecurityGroups/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkSecurityGroupName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Network Security Group ID +func (id NetworkSecurityGroupId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkSecurityGroups", "networkSecurityGroups", "networkSecurityGroups"), + resourceids.UserSpecifiedSegment("networkSecurityGroupName", "networkSecurityGroupValue"), + } +} + +// String returns a human-readable description of this Network Security Group ID +func (id NetworkSecurityGroupId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Security Group Name: %q", id.NetworkSecurityGroupName), + } + return fmt.Sprintf("Network Security Group (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/securityrules/id_networksecuritygroup_test.go b/resource-manager/network/2024-01-01/securityrules/id_networksecuritygroup_test.go new file mode 100644 index 00000000000..cf49b48b01f --- /dev/null +++ b/resource-manager/network/2024-01-01/securityrules/id_networksecuritygroup_test.go @@ -0,0 +1,282 @@ +package securityrules + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NetworkSecurityGroupId{} + +func TestNewNetworkSecurityGroupID(t *testing.T) { + id := NewNetworkSecurityGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkSecurityGroupValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkSecurityGroupName != "networkSecurityGroupValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkSecurityGroupName'", id.NetworkSecurityGroupName, "networkSecurityGroupValue") + } +} + +func TestFormatNetworkSecurityGroupID(t *testing.T) { + actual := NewNetworkSecurityGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkSecurityGroupValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNetworkSecurityGroupID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkSecurityGroupId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue", + Expected: &NetworkSecurityGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkSecurityGroupName: "networkSecurityGroupValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkSecurityGroupID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkSecurityGroupName != v.Expected.NetworkSecurityGroupName { + t.Fatalf("Expected %q but got %q for NetworkSecurityGroupName", v.Expected.NetworkSecurityGroupName, actual.NetworkSecurityGroupName) + } + + } +} + +func TestParseNetworkSecurityGroupIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkSecurityGroupId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkSeCuRiTyGrOuPs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue", + Expected: &NetworkSecurityGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkSecurityGroupName: "networkSecurityGroupValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkSeCuRiTyGrOuPs/nEtWoRkSeCuRiTyGrOuPvAlUe", + Expected: &NetworkSecurityGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkSecurityGroupName: "nEtWoRkSeCuRiTyGrOuPvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkSeCuRiTyGrOuPs/nEtWoRkSeCuRiTyGrOuPvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkSecurityGroupIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkSecurityGroupName != v.Expected.NetworkSecurityGroupName { + t.Fatalf("Expected %q but got %q for NetworkSecurityGroupName", v.Expected.NetworkSecurityGroupName, actual.NetworkSecurityGroupName) + } + + } +} + +func TestSegmentsForNetworkSecurityGroupId(t *testing.T) { + segments := NetworkSecurityGroupId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NetworkSecurityGroupId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/securityrules/id_securityrule.go b/resource-manager/network/2024-01-01/securityrules/id_securityrule.go new file mode 100644 index 00000000000..da153b38f42 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityrules/id_securityrule.go @@ -0,0 +1,139 @@ +package securityrules + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&SecurityRuleId{}) +} + +var _ resourceids.ResourceId = &SecurityRuleId{} + +// SecurityRuleId is a struct representing the Resource ID for a Security Rule +type SecurityRuleId struct { + SubscriptionId string + ResourceGroupName string + NetworkSecurityGroupName string + SecurityRuleName string +} + +// NewSecurityRuleID returns a new SecurityRuleId struct +func NewSecurityRuleID(subscriptionId string, resourceGroupName string, networkSecurityGroupName string, securityRuleName string) SecurityRuleId { + return SecurityRuleId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkSecurityGroupName: networkSecurityGroupName, + SecurityRuleName: securityRuleName, + } +} + +// ParseSecurityRuleID parses 'input' into a SecurityRuleId +func ParseSecurityRuleID(input string) (*SecurityRuleId, error) { + parser := resourceids.NewParserFromResourceIdType(&SecurityRuleId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := SecurityRuleId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseSecurityRuleIDInsensitively parses 'input' case-insensitively into a SecurityRuleId +// note: this method should only be used for API response data and not user input +func ParseSecurityRuleIDInsensitively(input string) (*SecurityRuleId, error) { + parser := resourceids.NewParserFromResourceIdType(&SecurityRuleId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := SecurityRuleId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *SecurityRuleId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkSecurityGroupName, ok = input.Parsed["networkSecurityGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkSecurityGroupName", input) + } + + if id.SecurityRuleName, ok = input.Parsed["securityRuleName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "securityRuleName", input) + } + + return nil +} + +// ValidateSecurityRuleID checks that 'input' can be parsed as a Security Rule ID +func ValidateSecurityRuleID(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 := ParseSecurityRuleID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Security Rule ID +func (id SecurityRuleId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkSecurityGroups/%s/securityRules/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkSecurityGroupName, id.SecurityRuleName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Security Rule ID +func (id SecurityRuleId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkSecurityGroups", "networkSecurityGroups", "networkSecurityGroups"), + resourceids.UserSpecifiedSegment("networkSecurityGroupName", "networkSecurityGroupValue"), + resourceids.StaticSegment("staticSecurityRules", "securityRules", "securityRules"), + resourceids.UserSpecifiedSegment("securityRuleName", "securityRuleValue"), + } +} + +// String returns a human-readable description of this Security Rule ID +func (id SecurityRuleId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Security Group Name: %q", id.NetworkSecurityGroupName), + fmt.Sprintf("Security Rule Name: %q", id.SecurityRuleName), + } + return fmt.Sprintf("Security Rule (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/securityrules/id_securityrule_test.go b/resource-manager/network/2024-01-01/securityrules/id_securityrule_test.go new file mode 100644 index 00000000000..199b413974f --- /dev/null +++ b/resource-manager/network/2024-01-01/securityrules/id_securityrule_test.go @@ -0,0 +1,327 @@ +package securityrules + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &SecurityRuleId{} + +func TestNewSecurityRuleID(t *testing.T) { + id := NewSecurityRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkSecurityGroupValue", "securityRuleValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkSecurityGroupName != "networkSecurityGroupValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkSecurityGroupName'", id.NetworkSecurityGroupName, "networkSecurityGroupValue") + } + + if id.SecurityRuleName != "securityRuleValue" { + t.Fatalf("Expected %q but got %q for Segment 'SecurityRuleName'", id.SecurityRuleName, "securityRuleValue") + } +} + +func TestFormatSecurityRuleID(t *testing.T) { + actual := NewSecurityRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkSecurityGroupValue", "securityRuleValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue/securityRules/securityRuleValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseSecurityRuleID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *SecurityRuleId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue/securityRules", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue/securityRules/securityRuleValue", + Expected: &SecurityRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkSecurityGroupName: "networkSecurityGroupValue", + SecurityRuleName: "securityRuleValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue/securityRules/securityRuleValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseSecurityRuleID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkSecurityGroupName != v.Expected.NetworkSecurityGroupName { + t.Fatalf("Expected %q but got %q for NetworkSecurityGroupName", v.Expected.NetworkSecurityGroupName, actual.NetworkSecurityGroupName) + } + + if actual.SecurityRuleName != v.Expected.SecurityRuleName { + t.Fatalf("Expected %q but got %q for SecurityRuleName", v.Expected.SecurityRuleName, actual.SecurityRuleName) + } + + } +} + +func TestParseSecurityRuleIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *SecurityRuleId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkSeCuRiTyGrOuPs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkSeCuRiTyGrOuPs/nEtWoRkSeCuRiTyGrOuPvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue/securityRules", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkSeCuRiTyGrOuPs/nEtWoRkSeCuRiTyGrOuPvAlUe/sEcUrItYrUlEs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue/securityRules/securityRuleValue", + Expected: &SecurityRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkSecurityGroupName: "networkSecurityGroupValue", + SecurityRuleName: "securityRuleValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkSecurityGroups/networkSecurityGroupValue/securityRules/securityRuleValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkSeCuRiTyGrOuPs/nEtWoRkSeCuRiTyGrOuPvAlUe/sEcUrItYrUlEs/sEcUrItYrUlEvAlUe", + Expected: &SecurityRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkSecurityGroupName: "nEtWoRkSeCuRiTyGrOuPvAlUe", + SecurityRuleName: "sEcUrItYrUlEvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkSeCuRiTyGrOuPs/nEtWoRkSeCuRiTyGrOuPvAlUe/sEcUrItYrUlEs/sEcUrItYrUlEvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseSecurityRuleIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkSecurityGroupName != v.Expected.NetworkSecurityGroupName { + t.Fatalf("Expected %q but got %q for NetworkSecurityGroupName", v.Expected.NetworkSecurityGroupName, actual.NetworkSecurityGroupName) + } + + if actual.SecurityRuleName != v.Expected.SecurityRuleName { + t.Fatalf("Expected %q but got %q for SecurityRuleName", v.Expected.SecurityRuleName, actual.SecurityRuleName) + } + + } +} + +func TestSegmentsForSecurityRuleId(t *testing.T) { + segments := SecurityRuleId{}.Segments() + if len(segments) == 0 { + t.Fatalf("SecurityRuleId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/securityrules/method_createorupdate.go b/resource-manager/network/2024-01-01/securityrules/method_createorupdate.go new file mode 100644 index 00000000000..ca2001b1716 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityrules/method_createorupdate.go @@ -0,0 +1,75 @@ +package securityrules + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *SecurityRule +} + +// CreateOrUpdate ... +func (c SecurityRulesClient) CreateOrUpdate(ctx context.Context, id SecurityRuleId, input SecurityRule) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c SecurityRulesClient) CreateOrUpdateThenPoll(ctx context.Context, id SecurityRuleId, input SecurityRule) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/securityrules/method_defaultsecurityrulesget.go b/resource-manager/network/2024-01-01/securityrules/method_defaultsecurityrulesget.go new file mode 100644 index 00000000000..a672fd767b7 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityrules/method_defaultsecurityrulesget.go @@ -0,0 +1,54 @@ +package securityrules + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DefaultSecurityRulesGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *SecurityRule +} + +// DefaultSecurityRulesGet ... +func (c SecurityRulesClient) DefaultSecurityRulesGet(ctx context.Context, id DefaultSecurityRuleId) (result DefaultSecurityRulesGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model SecurityRule + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/securityrules/method_defaultsecurityruleslist.go b/resource-manager/network/2024-01-01/securityrules/method_defaultsecurityruleslist.go new file mode 100644 index 00000000000..9c554b7a019 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityrules/method_defaultsecurityruleslist.go @@ -0,0 +1,92 @@ +package securityrules + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DefaultSecurityRulesListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]SecurityRule +} + +type DefaultSecurityRulesListCompleteResult struct { + LatestHttpResponse *http.Response + Items []SecurityRule +} + +// DefaultSecurityRulesList ... +func (c SecurityRulesClient) DefaultSecurityRulesList(ctx context.Context, id NetworkSecurityGroupId) (result DefaultSecurityRulesListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/defaultSecurityRules", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]SecurityRule `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// DefaultSecurityRulesListComplete retrieves all the results into a single object +func (c SecurityRulesClient) DefaultSecurityRulesListComplete(ctx context.Context, id NetworkSecurityGroupId) (DefaultSecurityRulesListCompleteResult, error) { + return c.DefaultSecurityRulesListCompleteMatchingPredicate(ctx, id, SecurityRuleOperationPredicate{}) +} + +// DefaultSecurityRulesListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c SecurityRulesClient) DefaultSecurityRulesListCompleteMatchingPredicate(ctx context.Context, id NetworkSecurityGroupId, predicate SecurityRuleOperationPredicate) (result DefaultSecurityRulesListCompleteResult, err error) { + items := make([]SecurityRule, 0) + + resp, err := c.DefaultSecurityRulesList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = DefaultSecurityRulesListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/securityrules/method_delete.go b/resource-manager/network/2024-01-01/securityrules/method_delete.go new file mode 100644 index 00000000000..769b4866b0d --- /dev/null +++ b/resource-manager/network/2024-01-01/securityrules/method_delete.go @@ -0,0 +1,71 @@ +package securityrules + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c SecurityRulesClient) Delete(ctx context.Context, id SecurityRuleId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c SecurityRulesClient) DeleteThenPoll(ctx context.Context, id SecurityRuleId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/securityrules/method_get.go b/resource-manager/network/2024-01-01/securityrules/method_get.go new file mode 100644 index 00000000000..effcc9d3d7b --- /dev/null +++ b/resource-manager/network/2024-01-01/securityrules/method_get.go @@ -0,0 +1,54 @@ +package securityrules + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *SecurityRule +} + +// Get ... +func (c SecurityRulesClient) Get(ctx context.Context, id SecurityRuleId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model SecurityRule + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/securityrules/method_list.go b/resource-manager/network/2024-01-01/securityrules/method_list.go new file mode 100644 index 00000000000..791f88e26a1 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityrules/method_list.go @@ -0,0 +1,92 @@ +package securityrules + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]SecurityRule +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []SecurityRule +} + +// List ... +func (c SecurityRulesClient) List(ctx context.Context, id NetworkSecurityGroupId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/securityRules", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]SecurityRule `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c SecurityRulesClient) ListComplete(ctx context.Context, id NetworkSecurityGroupId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, SecurityRuleOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c SecurityRulesClient) ListCompleteMatchingPredicate(ctx context.Context, id NetworkSecurityGroupId, predicate SecurityRuleOperationPredicate) (result ListCompleteResult, err error) { + items := make([]SecurityRule, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/securityrules/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/securityrules/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..7a6b77fa92a --- /dev/null +++ b/resource-manager/network/2024-01-01/securityrules/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package securityrules + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/securityrules/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/securityrules/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..b73ae024539 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityrules/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package securityrules + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/securityrules/model_securityrule.go b/resource-manager/network/2024-01-01/securityrules/model_securityrule.go new file mode 100644 index 00000000000..e96cb57aa16 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityrules/model_securityrule.go @@ -0,0 +1,12 @@ +package securityrules + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/securityrules/model_securityrulepropertiesformat.go b/resource-manager/network/2024-01-01/securityrules/model_securityrulepropertiesformat.go new file mode 100644 index 00000000000..a7e44555d95 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityrules/model_securityrulepropertiesformat.go @@ -0,0 +1,23 @@ +package securityrules + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulePropertiesFormat struct { + Access SecurityRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction SecurityRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/securityrules/predicates.go b/resource-manager/network/2024-01-01/securityrules/predicates.go new file mode 100644 index 00000000000..adf918c9ac4 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityrules/predicates.go @@ -0,0 +1,32 @@ +package securityrules + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRuleOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p SecurityRuleOperationPredicate) Matches(input SecurityRule) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/securityrules/version.go b/resource-manager/network/2024-01-01/securityrules/version.go new file mode 100644 index 00000000000..f28290438d9 --- /dev/null +++ b/resource-manager/network/2024-01-01/securityrules/version.go @@ -0,0 +1,12 @@ +package securityrules + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/securityrules/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/README.md b/resource-manager/network/2024-01-01/serviceendpointpolicies/README.md new file mode 100644 index 00000000000..625676f73c2 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/README.md @@ -0,0 +1,121 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/serviceendpointpolicies` Documentation + +The `serviceendpointpolicies` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/serviceendpointpolicies" +``` + + +### Client Initialization + +```go +client := serviceendpointpolicies.NewServiceEndpointPoliciesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ServiceEndpointPoliciesClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := serviceendpointpolicies.NewServiceEndpointPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "serviceEndpointPolicyValue") + +payload := serviceendpointpolicies.ServiceEndpointPolicy{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `ServiceEndpointPoliciesClient.Delete` + +```go +ctx := context.TODO() +id := serviceendpointpolicies.NewServiceEndpointPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "serviceEndpointPolicyValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `ServiceEndpointPoliciesClient.Get` + +```go +ctx := context.TODO() +id := serviceendpointpolicies.NewServiceEndpointPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "serviceEndpointPolicyValue") + +read, err := client.Get(ctx, id, serviceendpointpolicies.DefaultGetOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ServiceEndpointPoliciesClient.List` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `ServiceEndpointPoliciesClient.ListByResourceGroup` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.ListByResourceGroup(ctx, id)` can be used to do batched pagination +items, err := client.ListByResourceGroupComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `ServiceEndpointPoliciesClient.UpdateTags` + +```go +ctx := context.TODO() +id := serviceendpointpolicies.NewServiceEndpointPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "serviceEndpointPolicyValue") + +payload := serviceendpointpolicies.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/client.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/client.go new file mode 100644 index 00000000000..d92547bd44b --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/client.go @@ -0,0 +1,26 @@ +package serviceendpointpolicies + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPoliciesClient struct { + Client *resourcemanager.Client +} + +func NewServiceEndpointPoliciesClientWithBaseURI(sdkApi sdkEnv.Api) (*ServiceEndpointPoliciesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "serviceendpointpolicies", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ServiceEndpointPoliciesClient: %+v", err) + } + + return &ServiceEndpointPoliciesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/constants.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/constants.go new file mode 100644 index 00000000000..5dd2d63050c --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/constants.go @@ -0,0 +1,1198 @@ +package serviceendpointpolicies + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettingsProtectionMode string + +const ( + DdosSettingsProtectionModeDisabled DdosSettingsProtectionMode = "Disabled" + DdosSettingsProtectionModeEnabled DdosSettingsProtectionMode = "Enabled" + DdosSettingsProtectionModeVirtualNetworkInherited DdosSettingsProtectionMode = "VirtualNetworkInherited" +) + +func PossibleValuesForDdosSettingsProtectionMode() []string { + return []string{ + string(DdosSettingsProtectionModeDisabled), + string(DdosSettingsProtectionModeEnabled), + string(DdosSettingsProtectionModeVirtualNetworkInherited), + } +} + +func (s *DdosSettingsProtectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDdosSettingsProtectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDdosSettingsProtectionMode(input string) (*DdosSettingsProtectionMode, error) { + vals := map[string]DdosSettingsProtectionMode{ + "disabled": DdosSettingsProtectionModeDisabled, + "enabled": DdosSettingsProtectionModeEnabled, + "virtualnetworkinherited": DdosSettingsProtectionModeVirtualNetworkInherited, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DdosSettingsProtectionMode(input) + return &out, nil +} + +type DeleteOptions string + +const ( + DeleteOptionsDelete DeleteOptions = "Delete" + DeleteOptionsDetach DeleteOptions = "Detach" +) + +func PossibleValuesForDeleteOptions() []string { + return []string{ + string(DeleteOptionsDelete), + string(DeleteOptionsDetach), + } +} + +func (s *DeleteOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteOptions(input string) (*DeleteOptions, error) { + vals := map[string]DeleteOptions{ + "delete": DeleteOptionsDelete, + "detach": DeleteOptionsDetach, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteOptions(input) + return &out, nil +} + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelInterfaceType string + +const ( + GatewayLoadBalancerTunnelInterfaceTypeExternal GatewayLoadBalancerTunnelInterfaceType = "External" + GatewayLoadBalancerTunnelInterfaceTypeInternal GatewayLoadBalancerTunnelInterfaceType = "Internal" + GatewayLoadBalancerTunnelInterfaceTypeNone GatewayLoadBalancerTunnelInterfaceType = "None" +) + +func PossibleValuesForGatewayLoadBalancerTunnelInterfaceType() []string { + return []string{ + string(GatewayLoadBalancerTunnelInterfaceTypeExternal), + string(GatewayLoadBalancerTunnelInterfaceTypeInternal), + string(GatewayLoadBalancerTunnelInterfaceTypeNone), + } +} + +func (s *GatewayLoadBalancerTunnelInterfaceType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelInterfaceType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelInterfaceType(input string) (*GatewayLoadBalancerTunnelInterfaceType, error) { + vals := map[string]GatewayLoadBalancerTunnelInterfaceType{ + "external": GatewayLoadBalancerTunnelInterfaceTypeExternal, + "internal": GatewayLoadBalancerTunnelInterfaceTypeInternal, + "none": GatewayLoadBalancerTunnelInterfaceTypeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelInterfaceType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelProtocol string + +const ( + GatewayLoadBalancerTunnelProtocolNative GatewayLoadBalancerTunnelProtocol = "Native" + GatewayLoadBalancerTunnelProtocolNone GatewayLoadBalancerTunnelProtocol = "None" + GatewayLoadBalancerTunnelProtocolVXLAN GatewayLoadBalancerTunnelProtocol = "VXLAN" +) + +func PossibleValuesForGatewayLoadBalancerTunnelProtocol() []string { + return []string{ + string(GatewayLoadBalancerTunnelProtocolNative), + string(GatewayLoadBalancerTunnelProtocolNone), + string(GatewayLoadBalancerTunnelProtocolVXLAN), + } +} + +func (s *GatewayLoadBalancerTunnelProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelProtocol(input string) (*GatewayLoadBalancerTunnelProtocol, error) { + vals := map[string]GatewayLoadBalancerTunnelProtocol{ + "native": GatewayLoadBalancerTunnelProtocolNative, + "none": GatewayLoadBalancerTunnelProtocolNone, + "vxlan": GatewayLoadBalancerTunnelProtocolVXLAN, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelProtocol(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} + +type LoadBalancerBackendAddressAdminState string + +const ( + LoadBalancerBackendAddressAdminStateDown LoadBalancerBackendAddressAdminState = "Down" + LoadBalancerBackendAddressAdminStateNone LoadBalancerBackendAddressAdminState = "None" + LoadBalancerBackendAddressAdminStateUp LoadBalancerBackendAddressAdminState = "Up" +) + +func PossibleValuesForLoadBalancerBackendAddressAdminState() []string { + return []string{ + string(LoadBalancerBackendAddressAdminStateDown), + string(LoadBalancerBackendAddressAdminStateNone), + string(LoadBalancerBackendAddressAdminStateUp), + } +} + +func (s *LoadBalancerBackendAddressAdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerBackendAddressAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerBackendAddressAdminState(input string) (*LoadBalancerBackendAddressAdminState, error) { + vals := map[string]LoadBalancerBackendAddressAdminState{ + "down": LoadBalancerBackendAddressAdminStateDown, + "none": LoadBalancerBackendAddressAdminStateNone, + "up": LoadBalancerBackendAddressAdminStateUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerBackendAddressAdminState(input) + return &out, nil +} + +type NatGatewaySkuName string + +const ( + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +func PossibleValuesForNatGatewaySkuName() []string { + return []string{ + string(NatGatewaySkuNameStandard), + } +} + +func (s *NatGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNatGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNatGatewaySkuName(input string) (*NatGatewaySkuName, error) { + vals := map[string]NatGatewaySkuName{ + "standard": NatGatewaySkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NatGatewaySkuName(input) + return &out, nil +} + +type NetworkInterfaceAuxiliaryMode string + +const ( + NetworkInterfaceAuxiliaryModeAcceleratedConnections NetworkInterfaceAuxiliaryMode = "AcceleratedConnections" + NetworkInterfaceAuxiliaryModeFloating NetworkInterfaceAuxiliaryMode = "Floating" + NetworkInterfaceAuxiliaryModeMaxConnections NetworkInterfaceAuxiliaryMode = "MaxConnections" + NetworkInterfaceAuxiliaryModeNone NetworkInterfaceAuxiliaryMode = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliaryMode() []string { + return []string{ + string(NetworkInterfaceAuxiliaryModeAcceleratedConnections), + string(NetworkInterfaceAuxiliaryModeFloating), + string(NetworkInterfaceAuxiliaryModeMaxConnections), + string(NetworkInterfaceAuxiliaryModeNone), + } +} + +func (s *NetworkInterfaceAuxiliaryMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliaryMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliaryMode(input string) (*NetworkInterfaceAuxiliaryMode, error) { + vals := map[string]NetworkInterfaceAuxiliaryMode{ + "acceleratedconnections": NetworkInterfaceAuxiliaryModeAcceleratedConnections, + "floating": NetworkInterfaceAuxiliaryModeFloating, + "maxconnections": NetworkInterfaceAuxiliaryModeMaxConnections, + "none": NetworkInterfaceAuxiliaryModeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliaryMode(input) + return &out, nil +} + +type NetworkInterfaceAuxiliarySku string + +const ( + NetworkInterfaceAuxiliarySkuAEight NetworkInterfaceAuxiliarySku = "A8" + NetworkInterfaceAuxiliarySkuAFour NetworkInterfaceAuxiliarySku = "A4" + NetworkInterfaceAuxiliarySkuAOne NetworkInterfaceAuxiliarySku = "A1" + NetworkInterfaceAuxiliarySkuATwo NetworkInterfaceAuxiliarySku = "A2" + NetworkInterfaceAuxiliarySkuNone NetworkInterfaceAuxiliarySku = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliarySku() []string { + return []string{ + string(NetworkInterfaceAuxiliarySkuAEight), + string(NetworkInterfaceAuxiliarySkuAFour), + string(NetworkInterfaceAuxiliarySkuAOne), + string(NetworkInterfaceAuxiliarySkuATwo), + string(NetworkInterfaceAuxiliarySkuNone), + } +} + +func (s *NetworkInterfaceAuxiliarySku) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliarySku(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliarySku(input string) (*NetworkInterfaceAuxiliarySku, error) { + vals := map[string]NetworkInterfaceAuxiliarySku{ + "a8": NetworkInterfaceAuxiliarySkuAEight, + "a4": NetworkInterfaceAuxiliarySkuAFour, + "a1": NetworkInterfaceAuxiliarySkuAOne, + "a2": NetworkInterfaceAuxiliarySkuATwo, + "none": NetworkInterfaceAuxiliarySkuNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliarySku(input) + return &out, nil +} + +type NetworkInterfaceMigrationPhase string + +const ( + NetworkInterfaceMigrationPhaseAbort NetworkInterfaceMigrationPhase = "Abort" + NetworkInterfaceMigrationPhaseCommit NetworkInterfaceMigrationPhase = "Commit" + NetworkInterfaceMigrationPhaseCommitted NetworkInterfaceMigrationPhase = "Committed" + NetworkInterfaceMigrationPhaseNone NetworkInterfaceMigrationPhase = "None" + NetworkInterfaceMigrationPhasePrepare NetworkInterfaceMigrationPhase = "Prepare" +) + +func PossibleValuesForNetworkInterfaceMigrationPhase() []string { + return []string{ + string(NetworkInterfaceMigrationPhaseAbort), + string(NetworkInterfaceMigrationPhaseCommit), + string(NetworkInterfaceMigrationPhaseCommitted), + string(NetworkInterfaceMigrationPhaseNone), + string(NetworkInterfaceMigrationPhasePrepare), + } +} + +func (s *NetworkInterfaceMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceMigrationPhase(input string) (*NetworkInterfaceMigrationPhase, error) { + vals := map[string]NetworkInterfaceMigrationPhase{ + "abort": NetworkInterfaceMigrationPhaseAbort, + "commit": NetworkInterfaceMigrationPhaseCommit, + "committed": NetworkInterfaceMigrationPhaseCommitted, + "none": NetworkInterfaceMigrationPhaseNone, + "prepare": NetworkInterfaceMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceMigrationPhase(input) + return &out, nil +} + +type NetworkInterfaceNicType string + +const ( + NetworkInterfaceNicTypeElastic NetworkInterfaceNicType = "Elastic" + NetworkInterfaceNicTypeStandard NetworkInterfaceNicType = "Standard" +) + +func PossibleValuesForNetworkInterfaceNicType() []string { + return []string{ + string(NetworkInterfaceNicTypeElastic), + string(NetworkInterfaceNicTypeStandard), + } +} + +func (s *NetworkInterfaceNicType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceNicType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceNicType(input string) (*NetworkInterfaceNicType, error) { + vals := map[string]NetworkInterfaceNicType{ + "elastic": NetworkInterfaceNicTypeElastic, + "standard": NetworkInterfaceNicTypeStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceNicType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type PublicIPAddressDnsSettingsDomainNameLabelScope string + +const ( + PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "NoReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "ResourceGroupReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "SubscriptionReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "TenantReuse" +) + +func PossibleValuesForPublicIPAddressDnsSettingsDomainNameLabelScope() []string { + return []string{ + string(PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse), + } +} + +func (s *PublicIPAddressDnsSettingsDomainNameLabelScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressDnsSettingsDomainNameLabelScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressDnsSettingsDomainNameLabelScope(input string) (*PublicIPAddressDnsSettingsDomainNameLabelScope, error) { + vals := map[string]PublicIPAddressDnsSettingsDomainNameLabelScope{ + "noreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse, + "resourcegroupreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse, + "subscriptionreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse, + "tenantreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressDnsSettingsDomainNameLabelScope(input) + return &out, nil +} + +type PublicIPAddressMigrationPhase string + +const ( + PublicIPAddressMigrationPhaseAbort PublicIPAddressMigrationPhase = "Abort" + PublicIPAddressMigrationPhaseCommit PublicIPAddressMigrationPhase = "Commit" + PublicIPAddressMigrationPhaseCommitted PublicIPAddressMigrationPhase = "Committed" + PublicIPAddressMigrationPhaseNone PublicIPAddressMigrationPhase = "None" + PublicIPAddressMigrationPhasePrepare PublicIPAddressMigrationPhase = "Prepare" +) + +func PossibleValuesForPublicIPAddressMigrationPhase() []string { + return []string{ + string(PublicIPAddressMigrationPhaseAbort), + string(PublicIPAddressMigrationPhaseCommit), + string(PublicIPAddressMigrationPhaseCommitted), + string(PublicIPAddressMigrationPhaseNone), + string(PublicIPAddressMigrationPhasePrepare), + } +} + +func (s *PublicIPAddressMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressMigrationPhase(input string) (*PublicIPAddressMigrationPhase, error) { + vals := map[string]PublicIPAddressMigrationPhase{ + "abort": PublicIPAddressMigrationPhaseAbort, + "commit": PublicIPAddressMigrationPhaseCommit, + "committed": PublicIPAddressMigrationPhaseCommitted, + "none": PublicIPAddressMigrationPhaseNone, + "prepare": PublicIPAddressMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressMigrationPhase(input) + return &out, nil +} + +type PublicIPAddressSkuName string + +const ( + PublicIPAddressSkuNameBasic PublicIPAddressSkuName = "Basic" + PublicIPAddressSkuNameStandard PublicIPAddressSkuName = "Standard" +) + +func PossibleValuesForPublicIPAddressSkuName() []string { + return []string{ + string(PublicIPAddressSkuNameBasic), + string(PublicIPAddressSkuNameStandard), + } +} + +func (s *PublicIPAddressSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuName(input string) (*PublicIPAddressSkuName, error) { + vals := map[string]PublicIPAddressSkuName{ + "basic": PublicIPAddressSkuNameBasic, + "standard": PublicIPAddressSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuName(input) + return &out, nil +} + +type PublicIPAddressSkuTier string + +const ( + PublicIPAddressSkuTierGlobal PublicIPAddressSkuTier = "Global" + PublicIPAddressSkuTierRegional PublicIPAddressSkuTier = "Regional" +) + +func PossibleValuesForPublicIPAddressSkuTier() []string { + return []string{ + string(PublicIPAddressSkuTierGlobal), + string(PublicIPAddressSkuTierRegional), + } +} + +func (s *PublicIPAddressSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuTier(input string) (*PublicIPAddressSkuTier, error) { + vals := map[string]PublicIPAddressSkuTier{ + "global": PublicIPAddressSkuTierGlobal, + "regional": PublicIPAddressSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuTier(input) + return &out, nil +} + +type RouteNextHopType string + +const ( + RouteNextHopTypeInternet RouteNextHopType = "Internet" + RouteNextHopTypeNone RouteNextHopType = "None" + RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" + RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" + RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" +) + +func PossibleValuesForRouteNextHopType() []string { + return []string{ + string(RouteNextHopTypeInternet), + string(RouteNextHopTypeNone), + string(RouteNextHopTypeVirtualAppliance), + string(RouteNextHopTypeVirtualNetworkGateway), + string(RouteNextHopTypeVnetLocal), + } +} + +func (s *RouteNextHopType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteNextHopType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteNextHopType(input string) (*RouteNextHopType, error) { + vals := map[string]RouteNextHopType{ + "internet": RouteNextHopTypeInternet, + "none": RouteNextHopTypeNone, + "virtualappliance": RouteNextHopTypeVirtualAppliance, + "virtualnetworkgateway": RouteNextHopTypeVirtualNetworkGateway, + "vnetlocal": RouteNextHopTypeVnetLocal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteNextHopType(input) + return &out, nil +} + +type SecurityRuleAccess string + +const ( + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +func PossibleValuesForSecurityRuleAccess() []string { + return []string{ + string(SecurityRuleAccessAllow), + string(SecurityRuleAccessDeny), + } +} + +func (s *SecurityRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleAccess(input string) (*SecurityRuleAccess, error) { + vals := map[string]SecurityRuleAccess{ + "allow": SecurityRuleAccessAllow, + "deny": SecurityRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleAccess(input) + return &out, nil +} + +type SecurityRuleDirection string + +const ( + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityRuleDirection() []string { + return []string{ + string(SecurityRuleDirectionInbound), + string(SecurityRuleDirectionOutbound), + } +} + +func (s *SecurityRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleDirection(input string) (*SecurityRuleDirection, error) { + vals := map[string]SecurityRuleDirection{ + "inbound": SecurityRuleDirectionInbound, + "outbound": SecurityRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleDirection(input) + return &out, nil +} + +type SecurityRuleProtocol string + +const ( + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + SecurityRuleProtocolAny SecurityRuleProtocol = "*" + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + SecurityRuleProtocolTcp SecurityRuleProtocol = "Tcp" + SecurityRuleProtocolUdp SecurityRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityRuleProtocol() []string { + return []string{ + string(SecurityRuleProtocolAh), + string(SecurityRuleProtocolAny), + string(SecurityRuleProtocolEsp), + string(SecurityRuleProtocolIcmp), + string(SecurityRuleProtocolTcp), + string(SecurityRuleProtocolUdp), + } +} + +func (s *SecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleProtocol(input string) (*SecurityRuleProtocol, error) { + vals := map[string]SecurityRuleProtocol{ + "ah": SecurityRuleProtocolAh, + "*": SecurityRuleProtocolAny, + "esp": SecurityRuleProtocolEsp, + "icmp": SecurityRuleProtocolIcmp, + "tcp": SecurityRuleProtocolTcp, + "udp": SecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleProtocol(input) + return &out, nil +} + +type SharingScope string + +const ( + SharingScopeDelegatedServices SharingScope = "DelegatedServices" + SharingScopeTenant SharingScope = "Tenant" +) + +func PossibleValuesForSharingScope() []string { + return []string{ + string(SharingScopeDelegatedServices), + string(SharingScopeTenant), + } +} + +func (s *SharingScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSharingScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSharingScope(input string) (*SharingScope, error) { + vals := map[string]SharingScope{ + "delegatedservices": SharingScopeDelegatedServices, + "tenant": SharingScopeTenant, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SharingScope(input) + return &out, nil +} + +type SyncMode string + +const ( + SyncModeAutomatic SyncMode = "Automatic" + SyncModeManual SyncMode = "Manual" +) + +func PossibleValuesForSyncMode() []string { + return []string{ + string(SyncModeAutomatic), + string(SyncModeManual), + } +} + +func (s *SyncMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSyncMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSyncMode(input string) (*SyncMode, error) { + vals := map[string]SyncMode{ + "automatic": SyncModeAutomatic, + "manual": SyncModeManual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SyncMode(input) + return &out, nil +} + +type TransportProtocol string + +const ( + TransportProtocolAll TransportProtocol = "All" + TransportProtocolTcp TransportProtocol = "Tcp" + TransportProtocolUdp TransportProtocol = "Udp" +) + +func PossibleValuesForTransportProtocol() []string { + return []string{ + string(TransportProtocolAll), + string(TransportProtocolTcp), + string(TransportProtocolUdp), + } +} + +func (s *TransportProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseTransportProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseTransportProtocol(input string) (*TransportProtocol, error) { + vals := map[string]TransportProtocol{ + "all": TransportProtocolAll, + "tcp": TransportProtocolTcp, + "udp": TransportProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := TransportProtocol(input) + return &out, nil +} + +type VirtualNetworkPrivateEndpointNetworkPolicies string + +const ( + VirtualNetworkPrivateEndpointNetworkPoliciesDisabled VirtualNetworkPrivateEndpointNetworkPolicies = "Disabled" + VirtualNetworkPrivateEndpointNetworkPoliciesEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "Enabled" + VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "NetworkSecurityGroupEnabled" + VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "RouteTableEnabled" +) + +func PossibleValuesForVirtualNetworkPrivateEndpointNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateEndpointNetworkPoliciesDisabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled), + } +} + +func (s *VirtualNetworkPrivateEndpointNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateEndpointNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateEndpointNetworkPolicies(input string) (*VirtualNetworkPrivateEndpointNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateEndpointNetworkPolicies{ + "disabled": VirtualNetworkPrivateEndpointNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateEndpointNetworkPoliciesEnabled, + "networksecuritygroupenabled": VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled, + "routetableenabled": VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateEndpointNetworkPolicies(input) + return &out, nil +} + +type VirtualNetworkPrivateLinkServiceNetworkPolicies string + +const ( + VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Disabled" + VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Enabled" +) + +func PossibleValuesForVirtualNetworkPrivateLinkServiceNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled), + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled), + } +} + +func (s *VirtualNetworkPrivateLinkServiceNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateLinkServiceNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateLinkServiceNetworkPolicies(input string) (*VirtualNetworkPrivateLinkServiceNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateLinkServiceNetworkPolicies{ + "disabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateLinkServiceNetworkPolicies(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/id_serviceendpointpolicy.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/id_serviceendpointpolicy.go new file mode 100644 index 00000000000..4b66cdb57fe --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/id_serviceendpointpolicy.go @@ -0,0 +1,130 @@ +package serviceendpointpolicies + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ServiceEndpointPolicyId{}) +} + +var _ resourceids.ResourceId = &ServiceEndpointPolicyId{} + +// ServiceEndpointPolicyId is a struct representing the Resource ID for a Service Endpoint Policy +type ServiceEndpointPolicyId struct { + SubscriptionId string + ResourceGroupName string + ServiceEndpointPolicyName string +} + +// NewServiceEndpointPolicyID returns a new ServiceEndpointPolicyId struct +func NewServiceEndpointPolicyID(subscriptionId string, resourceGroupName string, serviceEndpointPolicyName string) ServiceEndpointPolicyId { + return ServiceEndpointPolicyId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ServiceEndpointPolicyName: serviceEndpointPolicyName, + } +} + +// ParseServiceEndpointPolicyID parses 'input' into a ServiceEndpointPolicyId +func ParseServiceEndpointPolicyID(input string) (*ServiceEndpointPolicyId, error) { + parser := resourceids.NewParserFromResourceIdType(&ServiceEndpointPolicyId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ServiceEndpointPolicyId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseServiceEndpointPolicyIDInsensitively parses 'input' case-insensitively into a ServiceEndpointPolicyId +// note: this method should only be used for API response data and not user input +func ParseServiceEndpointPolicyIDInsensitively(input string) (*ServiceEndpointPolicyId, error) { + parser := resourceids.NewParserFromResourceIdType(&ServiceEndpointPolicyId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ServiceEndpointPolicyId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ServiceEndpointPolicyId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ServiceEndpointPolicyName, ok = input.Parsed["serviceEndpointPolicyName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "serviceEndpointPolicyName", input) + } + + return nil +} + +// ValidateServiceEndpointPolicyID checks that 'input' can be parsed as a Service Endpoint Policy ID +func ValidateServiceEndpointPolicyID(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 := ParseServiceEndpointPolicyID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Service Endpoint Policy ID +func (id ServiceEndpointPolicyId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/serviceEndpointPolicies/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ServiceEndpointPolicyName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Service Endpoint Policy ID +func (id ServiceEndpointPolicyId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticServiceEndpointPolicies", "serviceEndpointPolicies", "serviceEndpointPolicies"), + resourceids.UserSpecifiedSegment("serviceEndpointPolicyName", "serviceEndpointPolicyValue"), + } +} + +// String returns a human-readable description of this Service Endpoint Policy ID +func (id ServiceEndpointPolicyId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Service Endpoint Policy Name: %q", id.ServiceEndpointPolicyName), + } + return fmt.Sprintf("Service Endpoint Policy (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/id_serviceendpointpolicy_test.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/id_serviceendpointpolicy_test.go new file mode 100644 index 00000000000..b5a7b3cd151 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/id_serviceendpointpolicy_test.go @@ -0,0 +1,282 @@ +package serviceendpointpolicies + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ServiceEndpointPolicyId{} + +func TestNewServiceEndpointPolicyID(t *testing.T) { + id := NewServiceEndpointPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "serviceEndpointPolicyValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ServiceEndpointPolicyName != "serviceEndpointPolicyValue" { + t.Fatalf("Expected %q but got %q for Segment 'ServiceEndpointPolicyName'", id.ServiceEndpointPolicyName, "serviceEndpointPolicyValue") + } +} + +func TestFormatServiceEndpointPolicyID(t *testing.T) { + actual := NewServiceEndpointPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "serviceEndpointPolicyValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies/serviceEndpointPolicyValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseServiceEndpointPolicyID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ServiceEndpointPolicyId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies/serviceEndpointPolicyValue", + Expected: &ServiceEndpointPolicyId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ServiceEndpointPolicyName: "serviceEndpointPolicyValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies/serviceEndpointPolicyValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseServiceEndpointPolicyID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ServiceEndpointPolicyName != v.Expected.ServiceEndpointPolicyName { + t.Fatalf("Expected %q but got %q for ServiceEndpointPolicyName", v.Expected.ServiceEndpointPolicyName, actual.ServiceEndpointPolicyName) + } + + } +} + +func TestParseServiceEndpointPolicyIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ServiceEndpointPolicyId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/sErViCeEnDpOiNtPoLiCiEs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies/serviceEndpointPolicyValue", + Expected: &ServiceEndpointPolicyId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ServiceEndpointPolicyName: "serviceEndpointPolicyValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies/serviceEndpointPolicyValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/sErViCeEnDpOiNtPoLiCiEs/sErViCeEnDpOiNtPoLiCyVaLuE", + Expected: &ServiceEndpointPolicyId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ServiceEndpointPolicyName: "sErViCeEnDpOiNtPoLiCyVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/sErViCeEnDpOiNtPoLiCiEs/sErViCeEnDpOiNtPoLiCyVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseServiceEndpointPolicyIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ServiceEndpointPolicyName != v.Expected.ServiceEndpointPolicyName { + t.Fatalf("Expected %q but got %q for ServiceEndpointPolicyName", v.Expected.ServiceEndpointPolicyName, actual.ServiceEndpointPolicyName) + } + + } +} + +func TestSegmentsForServiceEndpointPolicyId(t *testing.T) { + segments := ServiceEndpointPolicyId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ServiceEndpointPolicyId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/method_createorupdate.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/method_createorupdate.go new file mode 100644 index 00000000000..1912253430d --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/method_createorupdate.go @@ -0,0 +1,75 @@ +package serviceendpointpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *ServiceEndpointPolicy +} + +// CreateOrUpdate ... +func (c ServiceEndpointPoliciesClient) CreateOrUpdate(ctx context.Context, id ServiceEndpointPolicyId, input ServiceEndpointPolicy) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c ServiceEndpointPoliciesClient) CreateOrUpdateThenPoll(ctx context.Context, id ServiceEndpointPolicyId, input ServiceEndpointPolicy) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/method_delete.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/method_delete.go new file mode 100644 index 00000000000..fbffd77bf76 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/method_delete.go @@ -0,0 +1,71 @@ +package serviceendpointpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c ServiceEndpointPoliciesClient) Delete(ctx context.Context, id ServiceEndpointPolicyId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c ServiceEndpointPoliciesClient) DeleteThenPoll(ctx context.Context, id ServiceEndpointPolicyId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/method_get.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/method_get.go new file mode 100644 index 00000000000..4b9b1c2e323 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/method_get.go @@ -0,0 +1,83 @@ +package serviceendpointpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ServiceEndpointPolicy +} + +type GetOperationOptions struct { + Expand *string +} + +func DefaultGetOperationOptions() GetOperationOptions { + return GetOperationOptions{} +} + +func (o GetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// Get ... +func (c ServiceEndpointPoliciesClient) Get(ctx context.Context, id ServiceEndpointPolicyId, options GetOperationOptions) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ServiceEndpointPolicy + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/method_list.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/method_list.go new file mode 100644 index 00000000000..4c8118c4424 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/method_list.go @@ -0,0 +1,93 @@ +package serviceendpointpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ServiceEndpointPolicy +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []ServiceEndpointPolicy +} + +// List ... +func (c ServiceEndpointPoliciesClient) List(ctx context.Context, id commonids.SubscriptionId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/serviceEndpointPolicies", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ServiceEndpointPolicy `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c ServiceEndpointPoliciesClient) ListComplete(ctx context.Context, id commonids.SubscriptionId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, ServiceEndpointPolicyOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ServiceEndpointPoliciesClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate ServiceEndpointPolicyOperationPredicate) (result ListCompleteResult, err error) { + items := make([]ServiceEndpointPolicy, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/method_listbyresourcegroup.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/method_listbyresourcegroup.go new file mode 100644 index 00000000000..1e00f2516e2 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/method_listbyresourcegroup.go @@ -0,0 +1,93 @@ +package serviceendpointpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListByResourceGroupOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ServiceEndpointPolicy +} + +type ListByResourceGroupCompleteResult struct { + LatestHttpResponse *http.Response + Items []ServiceEndpointPolicy +} + +// ListByResourceGroup ... +func (c ServiceEndpointPoliciesClient) ListByResourceGroup(ctx context.Context, id commonids.ResourceGroupId) (result ListByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/serviceEndpointPolicies", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ServiceEndpointPolicy `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListByResourceGroupComplete retrieves all the results into a single object +func (c ServiceEndpointPoliciesClient) ListByResourceGroupComplete(ctx context.Context, id commonids.ResourceGroupId) (ListByResourceGroupCompleteResult, error) { + return c.ListByResourceGroupCompleteMatchingPredicate(ctx, id, ServiceEndpointPolicyOperationPredicate{}) +} + +// ListByResourceGroupCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ServiceEndpointPoliciesClient) ListByResourceGroupCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate ServiceEndpointPolicyOperationPredicate) (result ListByResourceGroupCompleteResult, err error) { + items := make([]ServiceEndpointPolicy, 0) + + resp, err := c.ListByResourceGroup(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListByResourceGroupCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/method_updatetags.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/method_updatetags.go new file mode 100644 index 00000000000..92a472479ad --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/method_updatetags.go @@ -0,0 +1,58 @@ +package serviceendpointpolicies + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ServiceEndpointPolicy +} + +// UpdateTags ... +func (c ServiceEndpointPoliciesClient) UpdateTags(ctx context.Context, id ServiceEndpointPolicyId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ServiceEndpointPolicy + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_applicationgatewaybackendaddress.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_applicationgatewaybackendaddress.go new file mode 100644 index 00000000000..7a1f5258bb4 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_applicationgatewaybackendaddress.go @@ -0,0 +1,9 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddress struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_applicationgatewaybackendaddresspool.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_applicationgatewaybackendaddresspool.go new file mode 100644 index 00000000000..76bca3269ac --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_applicationgatewaybackendaddresspool.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_applicationgatewaybackendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_applicationgatewaybackendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..1e70d427a94 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_applicationgatewaybackendaddresspoolpropertiesformat.go @@ -0,0 +1,10 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPoolPropertiesFormat struct { + BackendAddresses *[]ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"` + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_applicationgatewayipconfiguration.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_applicationgatewayipconfiguration.go new file mode 100644 index 00000000000..7f6bd42e1cc --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_applicationgatewayipconfiguration.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_applicationgatewayipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_applicationgatewayipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..15556d9d646 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_applicationgatewayipconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..6e7d684d6ab --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..2f704e37983 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_backendaddresspool.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_backendaddresspool.go new file mode 100644 index 00000000000..feb93ad5475 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_backendaddresspool.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_backendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_backendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..4d71c4769d0 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_backendaddresspoolpropertiesformat.go @@ -0,0 +1,19 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPoolPropertiesFormat struct { + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + DrainPeriodInSeconds *int64 `json:"drainPeriodInSeconds,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancerBackendAddresses *[]LoadBalancerBackendAddress `json:"loadBalancerBackendAddresses,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + Location *string `json:"location,omitempty"` + OutboundRule *SubResource `json:"outboundRule,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SyncMode *SyncMode `json:"syncMode,omitempty"` + TunnelInterfaces *[]GatewayLoadBalancerTunnelInterface `json:"tunnelInterfaces,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_customdnsconfigpropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_customdnsconfigpropertiesformat.go new file mode 100644 index 00000000000..9f6fb9fe6e7 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_customdnsconfigpropertiesformat.go @@ -0,0 +1,9 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomDnsConfigPropertiesFormat struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_ddossettings.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_ddossettings.go new file mode 100644 index 00000000000..de52c73833f --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_ddossettings.go @@ -0,0 +1,9 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettings struct { + DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"` + ProtectionMode *DdosSettingsProtectionMode `json:"protectionMode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_delegation.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_delegation.go new file mode 100644 index 00000000000..1e9e6e93b12 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_delegation.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Delegation struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceDelegationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_flowlog.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_flowlog.go new file mode 100644 index 00000000000..9ba393ae2ff --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_flowlog.go @@ -0,0 +1,19 @@ +package serviceendpointpolicies + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLog struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FlowLogPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_flowlogformatparameters.go new file mode 100644 index 00000000000..64ce02b9b62 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_flowlogpropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_flowlogpropertiesformat.go new file mode 100644 index 00000000000..c83c10c7197 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_flowlogpropertiesformat.go @@ -0,0 +1,15 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogPropertiesFormat struct { + Enabled *bool `json:"enabled,omitempty"` + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` + TargetResourceGuid *string `json:"targetResourceGuid,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_frontendipconfiguration.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_frontendipconfiguration.go new file mode 100644 index 00000000000..3460648e174 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_frontendipconfiguration.go @@ -0,0 +1,17 @@ +package serviceendpointpolicies + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_frontendipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_frontendipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..27c417be79d --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_frontendipconfigurationpropertiesformat.go @@ -0,0 +1,19 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfigurationPropertiesFormat struct { + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + InboundNatPools *[]SubResource `json:"inboundNatPools,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_gatewayloadbalancertunnelinterface.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_gatewayloadbalancertunnelinterface.go new file mode 100644 index 00000000000..253d53dc1d3 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_gatewayloadbalancertunnelinterface.go @@ -0,0 +1,11 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayLoadBalancerTunnelInterface struct { + Identifier *int64 `json:"identifier,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *GatewayLoadBalancerTunnelProtocol `json:"protocol,omitempty"` + Type *GatewayLoadBalancerTunnelInterfaceType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_inboundnatrule.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_inboundnatrule.go new file mode 100644 index 00000000000..691567f1623 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_inboundnatrule.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundNatRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_inboundnatrulepropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_inboundnatrulepropertiesformat.go new file mode 100644 index 00000000000..bcdf56e4388 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_inboundnatrulepropertiesformat.go @@ -0,0 +1,19 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendIPConfiguration *NetworkInterfaceIPConfiguration `json:"backendIPConfiguration,omitempty"` + BackendPort *int64 `json:"backendPort,omitempty"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + FrontendPortRangeEnd *int64 `json:"frontendPortRangeEnd,omitempty"` + FrontendPortRangeStart *int64 `json:"frontendPortRangeStart,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol *TransportProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_ipconfiguration.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_ipconfiguration.go new file mode 100644 index 00000000000..43160da9e2b --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_ipconfiguration.go @@ -0,0 +1,11 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_ipconfigurationprofile.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_ipconfigurationprofile.go new file mode 100644 index 00000000000..cbb4340c474 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_ipconfigurationprofile.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationProfilePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_ipconfigurationprofilepropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_ipconfigurationprofilepropertiesformat.go new file mode 100644 index 00000000000..a8340bcc1f3 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_ipconfigurationprofilepropertiesformat.go @@ -0,0 +1,9 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfilePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_ipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_ipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..b76d67b91b5 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_ipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_iptag.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_iptag.go new file mode 100644 index 00000000000..879d6210923 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_iptag.go @@ -0,0 +1,9 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPTag struct { + IPTagType *string `json:"ipTagType,omitempty"` + Tag *string `json:"tag,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_loadbalancerbackendaddress.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_loadbalancerbackendaddress.go new file mode 100644 index 00000000000..bcd25a343d4 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_loadbalancerbackendaddress.go @@ -0,0 +1,9 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddress struct { + Name *string `json:"name,omitempty"` + Properties *LoadBalancerBackendAddressPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_loadbalancerbackendaddresspropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_loadbalancerbackendaddresspropertiesformat.go new file mode 100644 index 00000000000..71bfae4fc90 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_loadbalancerbackendaddresspropertiesformat.go @@ -0,0 +1,14 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPropertiesFormat struct { + AdminState *LoadBalancerBackendAddressAdminState `json:"adminState,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + InboundNatRulesPortMapping *[]NatRulePortMapping `json:"inboundNatRulesPortMapping,omitempty"` + LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIPConfiguration,omitempty"` + NetworkInterfaceIPConfiguration *SubResource `json:"networkInterfaceIPConfiguration,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_natgateway.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_natgateway.go new file mode 100644 index 00000000000..4fce3c97a62 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_natgateway.go @@ -0,0 +1,20 @@ +package serviceendpointpolicies + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"` + Sku *NatGatewaySku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_natgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_natgatewaypropertiesformat.go new file mode 100644 index 00000000000..0eae8e55e8c --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_natgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayPropertiesFormat struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]SubResource `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_natgatewaysku.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_natgatewaysku.go new file mode 100644 index 00000000000..d7c06ad6950 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_natgatewaysku.go @@ -0,0 +1,8 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySku struct { + Name *NatGatewaySkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_natruleportmapping.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_natruleportmapping.go new file mode 100644 index 00000000000..af408670c2d --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_natruleportmapping.go @@ -0,0 +1,10 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulePortMapping struct { + BackendPort *int64 `json:"backendPort,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + InboundNatRuleName *string `json:"inboundNatRuleName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterface.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterface.go new file mode 100644 index 00000000000..4576b3d0a24 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterface.go @@ -0,0 +1,19 @@ +package serviceendpointpolicies + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterface struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfacePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterfacednssettings.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterfacednssettings.go new file mode 100644 index 00000000000..f2f63e673ce --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterfacednssettings.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceDnsSettings struct { + AppliedDnsServers *[]string `json:"appliedDnsServers,omitempty"` + DnsServers *[]string `json:"dnsServers,omitempty"` + InternalDnsNameLabel *string `json:"internalDnsNameLabel,omitempty"` + InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty"` + InternalFqdn *string `json:"internalFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterfaceipconfiguration.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterfaceipconfiguration.go new file mode 100644 index 00000000000..efba2a7575d --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterfaceipconfiguration.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go new file mode 100644 index 00000000000..fee33255b2f --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go @@ -0,0 +1,10 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties struct { + Fqdns *[]string `json:"fqdns,omitempty"` + GroupId *string `json:"groupId,omitempty"` + RequiredMemberName *string `json:"requiredMemberName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterfaceipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterfaceipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..aae328cad75 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterfaceipconfigurationpropertiesformat.go @@ -0,0 +1,22 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPropertiesFormat struct { + ApplicationGatewayBackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"applicationGatewayBackendAddressPools,omitempty"` + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + LoadBalancerBackendAddressPools *[]BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"` + LoadBalancerInboundNatRules *[]InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressPrefixLength *int64 `json:"privateIPAddressPrefixLength,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + PrivateLinkConnectionProperties *NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties `json:"privateLinkConnectionProperties,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` + VirtualNetworkTaps *[]VirtualNetworkTap `json:"virtualNetworkTaps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterfacepropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterfacepropertiesformat.go new file mode 100644 index 00000000000..bdbb3dec753 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterfacepropertiesformat.go @@ -0,0 +1,29 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfacePropertiesFormat struct { + AuxiliaryMode *NetworkInterfaceAuxiliaryMode `json:"auxiliaryMode,omitempty"` + AuxiliarySku *NetworkInterfaceAuxiliarySku `json:"auxiliarySku,omitempty"` + DisableTcpStateTracking *bool `json:"disableTcpStateTracking,omitempty"` + DnsSettings *NetworkInterfaceDnsSettings `json:"dnsSettings,omitempty"` + DscpConfiguration *SubResource `json:"dscpConfiguration,omitempty"` + EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"` + EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"` + HostedWorkloads *[]string `json:"hostedWorkloads,omitempty"` + IPConfigurations *[]NetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + MacAddress *string `json:"macAddress,omitempty"` + MigrationPhase *NetworkInterfaceMigrationPhase `json:"migrationPhase,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + NicType *NetworkInterfaceNicType `json:"nicType,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkService *PrivateLinkService `json:"privateLinkService,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + TapConfigurations *[]NetworkInterfaceTapConfiguration `json:"tapConfigurations,omitempty"` + VirtualMachine *SubResource `json:"virtualMachine,omitempty"` + VnetEncryptionSupported *bool `json:"vnetEncryptionSupported,omitempty"` + WorkloadType *string `json:"workloadType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterfacetapconfiguration.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterfacetapconfiguration.go new file mode 100644 index 00000000000..373ac218872 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterfacetapconfiguration.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceTapConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterfacetapconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterfacetapconfigurationpropertiesformat.go new file mode 100644 index 00000000000..1a2c2bc8774 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networkinterfacetapconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualNetworkTap *VirtualNetworkTap `json:"virtualNetworkTap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networksecuritygroup.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networksecuritygroup.go new file mode 100644 index 00000000000..7babf5dcba3 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networksecuritygroup.go @@ -0,0 +1,14 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networksecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networksecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..9e417934d4e --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_networksecuritygrouppropertiesformat.go @@ -0,0 +1,15 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupPropertiesFormat struct { + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + FlowLogs *[]FlowLog `json:"flowLogs,omitempty"` + FlushConnection *bool `json:"flushConnection,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privateendpoint.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privateendpoint.go new file mode 100644 index 00000000000..b9c2640063f --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privateendpoint.go @@ -0,0 +1,19 @@ +package serviceendpointpolicies + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpoint struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privateendpointconnection.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privateendpointconnection.go new file mode 100644 index 00000000000..0c67a94b069 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privateendpointconnection.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privateendpointconnectionproperties.go new file mode 100644 index 00000000000..9468576ebfd --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privateendpointconnectionproperties.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateEndpointLocation *string `json:"privateEndpointLocation,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privateendpointipconfiguration.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privateendpointipconfiguration.go new file mode 100644 index 00000000000..25ab508cf68 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privateendpointipconfiguration.go @@ -0,0 +1,11 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privateendpointipconfigurationproperties.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privateendpointipconfigurationproperties.go new file mode 100644 index 00000000000..b2b9cd17391 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privateendpointipconfigurationproperties.go @@ -0,0 +1,10 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfigurationProperties struct { + GroupId *string `json:"groupId,omitempty"` + MemberName *string `json:"memberName,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privateendpointproperties.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privateendpointproperties.go new file mode 100644 index 00000000000..b74aa311c14 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privateendpointproperties.go @@ -0,0 +1,16 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointProperties struct { + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + CustomDnsConfigs *[]CustomDnsConfigPropertiesFormat `json:"customDnsConfigs,omitempty"` + CustomNetworkInterfaceName *string `json:"customNetworkInterfaceName,omitempty"` + IPConfigurations *[]PrivateEndpointIPConfiguration `json:"ipConfigurations,omitempty"` + ManualPrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"manualPrivateLinkServiceConnections,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"privateLinkServiceConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privatelinkservice.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privatelinkservice.go new file mode 100644 index 00000000000..f69adbd0b19 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privatelinkservice.go @@ -0,0 +1,19 @@ +package serviceendpointpolicies + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkService struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privatelinkserviceconnection.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privatelinkserviceconnection.go new file mode 100644 index 00000000000..f163cad59d9 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privatelinkserviceconnection.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privatelinkserviceconnectionproperties.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privatelinkserviceconnectionproperties.go new file mode 100644 index 00000000000..e9560116ef6 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privatelinkserviceconnectionproperties.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionProperties struct { + GroupIds *[]string `json:"groupIds,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + PrivateLinkServiceId *string `json:"privateLinkServiceId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestMessage *string `json:"requestMessage,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privatelinkserviceconnectionstate.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privatelinkserviceconnectionstate.go new file mode 100644 index 00000000000..9accc19fd8b --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privatelinkserviceconnectionstate.go @@ -0,0 +1,10 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionState struct { + ActionsRequired *string `json:"actionsRequired,omitempty"` + Description *string `json:"description,omitempty"` + Status *string `json:"status,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privatelinkserviceipconfiguration.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privatelinkserviceipconfiguration.go new file mode 100644 index 00000000000..e2a71cb7416 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privatelinkserviceipconfiguration.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privatelinkserviceipconfigurationproperties.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privatelinkserviceipconfigurationproperties.go new file mode 100644 index 00000000000..6cc9d81d85e --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privatelinkserviceipconfigurationproperties.go @@ -0,0 +1,13 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privatelinkserviceproperties.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privatelinkserviceproperties.go new file mode 100644 index 00000000000..972989defcd --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_privatelinkserviceproperties.go @@ -0,0 +1,17 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceProperties struct { + Alias *string `json:"alias,omitempty"` + AutoApproval *ResourceSet `json:"autoApproval,omitempty"` + EnableProxyProtocol *bool `json:"enableProxyProtocol,omitempty"` + Fqdns *[]string `json:"fqdns,omitempty"` + IPConfigurations *[]PrivateLinkServiceIPConfiguration `json:"ipConfigurations,omitempty"` + LoadBalancerFrontendIPConfigurations *[]FrontendIPConfiguration `json:"loadBalancerFrontendIpConfigurations,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Visibility *ResourceSet `json:"visibility,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_publicipaddress.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_publicipaddress.go new file mode 100644 index 00000000000..b3722e1f191 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_publicipaddress.go @@ -0,0 +1,22 @@ +package serviceendpointpolicies + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddress struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PublicIPAddressPropertiesFormat `json:"properties,omitempty"` + Sku *PublicIPAddressSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_publicipaddressdnssettings.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_publicipaddressdnssettings.go new file mode 100644 index 00000000000..d28111e34e8 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_publicipaddressdnssettings.go @@ -0,0 +1,11 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressDnsSettings struct { + DomainNameLabel *string `json:"domainNameLabel,omitempty"` + DomainNameLabelScope *PublicIPAddressDnsSettingsDomainNameLabelScope `json:"domainNameLabelScope,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + ReverseFqdn *string `json:"reverseFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_publicipaddresspropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_publicipaddresspropertiesformat.go new file mode 100644 index 00000000000..fe9e93dc57e --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_publicipaddresspropertiesformat.go @@ -0,0 +1,23 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressPropertiesFormat struct { + DdosSettings *DdosSettings `json:"ddosSettings,omitempty"` + DeleteOption *DeleteOptions `json:"deleteOption,omitempty"` + DnsSettings *PublicIPAddressDnsSettings `json:"dnsSettings,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty"` + IPTags *[]IPTag `json:"ipTags,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + LinkedPublicIPAddress *PublicIPAddress `json:"linkedPublicIPAddress,omitempty"` + MigrationPhase *PublicIPAddressMigrationPhase `json:"migrationPhase,omitempty"` + NatGateway *NatGateway `json:"natGateway,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"` + PublicIPAllocationMethod *IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServicePublicIPAddress *PublicIPAddress `json:"servicePublicIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_publicipaddresssku.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_publicipaddresssku.go new file mode 100644 index 00000000000..5d6c2dd1535 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_publicipaddresssku.go @@ -0,0 +1,9 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressSku struct { + Name *PublicIPAddressSkuName `json:"name,omitempty"` + Tier *PublicIPAddressSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_resourcenavigationlink.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_resourcenavigationlink.go new file mode 100644 index 00000000000..3a125f5d30e --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_resourcenavigationlink.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ResourceNavigationLinkFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_resourcenavigationlinkformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_resourcenavigationlinkformat.go new file mode 100644 index 00000000000..004d9d501d7 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_resourcenavigationlinkformat.go @@ -0,0 +1,10 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLinkFormat struct { + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_resourceset.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_resourceset.go new file mode 100644 index 00000000000..33f79b6dd7f --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_resourceset.go @@ -0,0 +1,8 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceSet struct { + Subscriptions *[]string `json:"subscriptions,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..98b48093fe5 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_route.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_route.go new file mode 100644 index 00000000000..a08219146cf --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_route.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Route struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RoutePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_routepropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_routepropertiesformat.go new file mode 100644 index 00000000000..a2d74c7e24a --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_routepropertiesformat.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutePropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + HasBgpOverride *bool `json:"hasBgpOverride,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + NextHopType RouteNextHopType `json:"nextHopType"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_routetable.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_routetable.go new file mode 100644 index 00000000000..fabb0fc336d --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_routetable.go @@ -0,0 +1,14 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTable struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteTablePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_routetablepropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_routetablepropertiesformat.go new file mode 100644 index 00000000000..fbf628f66f3 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_routetablepropertiesformat.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTablePropertiesFormat struct { + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Routes *[]Route `json:"routes,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_securityrule.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_securityrule.go new file mode 100644 index 00000000000..3f50e5ddac6 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_securityrule.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_securityrulepropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_securityrulepropertiesformat.go new file mode 100644 index 00000000000..8d5f321605a --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_securityrulepropertiesformat.go @@ -0,0 +1,23 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulePropertiesFormat struct { + Access SecurityRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction SecurityRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_serviceassociationlink.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_serviceassociationlink.go new file mode 100644 index 00000000000..a22d8f42829 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_serviceassociationlink.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceAssociationLinkPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_serviceassociationlinkpropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_serviceassociationlinkpropertiesformat.go new file mode 100644 index 00000000000..5b81f28e88b --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_serviceassociationlinkpropertiesformat.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLinkPropertiesFormat struct { + AllowDelete *bool `json:"allowDelete,omitempty"` + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + Locations *[]string `json:"locations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_servicedelegationpropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_servicedelegationpropertiesformat.go new file mode 100644 index 00000000000..0903abfa70e --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_servicedelegationpropertiesformat.go @@ -0,0 +1,10 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceDelegationPropertiesFormat struct { + Actions *[]string `json:"actions,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_serviceendpointpolicy.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_serviceendpointpolicy.go new file mode 100644 index 00000000000..796d7019b02 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_serviceendpointpolicy.go @@ -0,0 +1,15 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Kind *string `json:"kind,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_serviceendpointpolicydefinition.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_serviceendpointpolicydefinition.go new file mode 100644 index 00000000000..75928dae7f1 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_serviceendpointpolicydefinition.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinition struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_serviceendpointpolicydefinitionpropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_serviceendpointpolicydefinitionpropertiesformat.go new file mode 100644 index 00000000000..31efd2eb7eb --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_serviceendpointpolicydefinitionpropertiesformat.go @@ -0,0 +1,11 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionPropertiesFormat struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` + ServiceResources *[]string `json:"serviceResources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_serviceendpointpolicypropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_serviceendpointpolicypropertiesformat.go new file mode 100644 index 00000000000..fdb4ecd0a7f --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_serviceendpointpolicypropertiesformat.go @@ -0,0 +1,13 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyPropertiesFormat struct { + ContextualServiceEndpointPolicies *[]string `json:"contextualServiceEndpointPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServiceAlias *string `json:"serviceAlias,omitempty"` + ServiceEndpointPolicyDefinitions *[]ServiceEndpointPolicyDefinition `json:"serviceEndpointPolicyDefinitions,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_serviceendpointpropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_serviceendpointpropertiesformat.go new file mode 100644 index 00000000000..40b6ccdb10e --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_serviceendpointpropertiesformat.go @@ -0,0 +1,11 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPropertiesFormat struct { + Locations *[]string `json:"locations,omitempty"` + NetworkIdentifier *SubResource `json:"networkIdentifier,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_subnet.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_subnet.go new file mode 100644 index 00000000000..50005077792 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_subnet.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Subnet struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SubnetPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_subnetpropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_subnetpropertiesformat.go new file mode 100644 index 00000000000..97f4cb55074 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_subnetpropertiesformat.go @@ -0,0 +1,28 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + ApplicationGatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"applicationGatewayIPConfigurations,omitempty"` + DefaultOutboundAccess *bool `json:"defaultOutboundAccess,omitempty"` + Delegations *[]Delegation `json:"delegations,omitempty"` + IPAllocations *[]SubResource `json:"ipAllocations,omitempty"` + IPConfigurationProfiles *[]IPConfigurationProfile `json:"ipConfigurationProfiles,omitempty"` + IPConfigurations *[]IPConfiguration `json:"ipConfigurations,omitempty"` + NatGateway *SubResource `json:"natGateway,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + PrivateEndpointNetworkPolicies *VirtualNetworkPrivateEndpointNetworkPolicies `json:"privateEndpointNetworkPolicies,omitempty"` + PrivateEndpoints *[]PrivateEndpoint `json:"privateEndpoints,omitempty"` + PrivateLinkServiceNetworkPolicies *VirtualNetworkPrivateLinkServiceNetworkPolicies `json:"privateLinkServiceNetworkPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Purpose *string `json:"purpose,omitempty"` + ResourceNavigationLinks *[]ResourceNavigationLink `json:"resourceNavigationLinks,omitempty"` + RouteTable *RouteTable `json:"routeTable,omitempty"` + ServiceAssociationLinks *[]ServiceAssociationLink `json:"serviceAssociationLinks,omitempty"` + ServiceEndpointPolicies *[]ServiceEndpointPolicy `json:"serviceEndpointPolicies,omitempty"` + ServiceEndpoints *[]ServiceEndpointPropertiesFormat `json:"serviceEndpoints,omitempty"` + SharingScope *SharingScope `json:"sharingScope,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_subresource.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_subresource.go new file mode 100644 index 00000000000..61370085ffc --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_subresource.go @@ -0,0 +1,8 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_tagsobject.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_tagsobject.go new file mode 100644 index 00000000000..7c5d750fc90 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_tagsobject.go @@ -0,0 +1,8 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..da94c72fe29 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..58889a80476 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_virtualnetworktap.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_virtualnetworktap.go new file mode 100644 index 00000000000..1d191ff67f0 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_virtualnetworktap.go @@ -0,0 +1,14 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkTapPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/model_virtualnetworktappropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_virtualnetworktappropertiesformat.go new file mode 100644 index 00000000000..2660ce6a382 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/model_virtualnetworktappropertiesformat.go @@ -0,0 +1,13 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapPropertiesFormat struct { + DestinationLoadBalancerFrontEndIPConfiguration *FrontendIPConfiguration `json:"destinationLoadBalancerFrontEndIPConfiguration,omitempty"` + DestinationNetworkInterfaceIPConfiguration *NetworkInterfaceIPConfiguration `json:"destinationNetworkInterfaceIPConfiguration,omitempty"` + DestinationPort *int64 `json:"destinationPort,omitempty"` + NetworkInterfaceTapConfigurations *[]NetworkInterfaceTapConfiguration `json:"networkInterfaceTapConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/predicates.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/predicates.go new file mode 100644 index 00000000000..ddd972a1d9d --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/predicates.go @@ -0,0 +1,42 @@ +package serviceendpointpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyOperationPredicate struct { + Etag *string + Id *string + Kind *string + Location *string + Name *string + Type *string +} + +func (p ServiceEndpointPolicyOperationPredicate) Matches(input ServiceEndpointPolicy) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Kind != nil && (input.Kind == nil || *p.Kind != *input.Kind) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicies/version.go b/resource-manager/network/2024-01-01/serviceendpointpolicies/version.go new file mode 100644 index 00000000000..582a139c806 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicies/version.go @@ -0,0 +1,12 @@ +package serviceendpointpolicies + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/serviceendpointpolicies/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/README.md b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/README.md new file mode 100644 index 00000000000..29dd2986e79 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/README.md @@ -0,0 +1,82 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions` Documentation + +The `serviceendpointpolicydefinitions` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions" +``` + + +### Client Initialization + +```go +client := serviceendpointpolicydefinitions.NewServiceEndpointPolicyDefinitionsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ServiceEndpointPolicyDefinitionsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := serviceendpointpolicydefinitions.NewServiceEndpointPolicyDefinitionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "serviceEndpointPolicyValue", "serviceEndpointPolicyDefinitionValue") + +payload := serviceendpointpolicydefinitions.ServiceEndpointPolicyDefinition{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `ServiceEndpointPolicyDefinitionsClient.Delete` + +```go +ctx := context.TODO() +id := serviceendpointpolicydefinitions.NewServiceEndpointPolicyDefinitionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "serviceEndpointPolicyValue", "serviceEndpointPolicyDefinitionValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `ServiceEndpointPolicyDefinitionsClient.Get` + +```go +ctx := context.TODO() +id := serviceendpointpolicydefinitions.NewServiceEndpointPolicyDefinitionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "serviceEndpointPolicyValue", "serviceEndpointPolicyDefinitionValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `ServiceEndpointPolicyDefinitionsClient.ListByResourceGroup` + +```go +ctx := context.TODO() +id := serviceendpointpolicydefinitions.NewServiceEndpointPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "serviceEndpointPolicyValue") + +// alternatively `client.ListByResourceGroup(ctx, id)` can be used to do batched pagination +items, err := client.ListByResourceGroupComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/client.go b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/client.go new file mode 100644 index 00000000000..c75845bd1b5 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/client.go @@ -0,0 +1,26 @@ +package serviceendpointpolicydefinitions + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionsClient struct { + Client *resourcemanager.Client +} + +func NewServiceEndpointPolicyDefinitionsClientWithBaseURI(sdkApi sdkEnv.Api) (*ServiceEndpointPolicyDefinitionsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "serviceendpointpolicydefinitions", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ServiceEndpointPolicyDefinitionsClient: %+v", err) + } + + return &ServiceEndpointPolicyDefinitionsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/constants.go b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/constants.go new file mode 100644 index 00000000000..3e91dc60d4b --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/constants.go @@ -0,0 +1,57 @@ +package serviceendpointpolicydefinitions + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/id_serviceendpointpolicy.go b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/id_serviceendpointpolicy.go new file mode 100644 index 00000000000..2d85c659986 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/id_serviceendpointpolicy.go @@ -0,0 +1,130 @@ +package serviceendpointpolicydefinitions + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ServiceEndpointPolicyId{}) +} + +var _ resourceids.ResourceId = &ServiceEndpointPolicyId{} + +// ServiceEndpointPolicyId is a struct representing the Resource ID for a Service Endpoint Policy +type ServiceEndpointPolicyId struct { + SubscriptionId string + ResourceGroupName string + ServiceEndpointPolicyName string +} + +// NewServiceEndpointPolicyID returns a new ServiceEndpointPolicyId struct +func NewServiceEndpointPolicyID(subscriptionId string, resourceGroupName string, serviceEndpointPolicyName string) ServiceEndpointPolicyId { + return ServiceEndpointPolicyId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ServiceEndpointPolicyName: serviceEndpointPolicyName, + } +} + +// ParseServiceEndpointPolicyID parses 'input' into a ServiceEndpointPolicyId +func ParseServiceEndpointPolicyID(input string) (*ServiceEndpointPolicyId, error) { + parser := resourceids.NewParserFromResourceIdType(&ServiceEndpointPolicyId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ServiceEndpointPolicyId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseServiceEndpointPolicyIDInsensitively parses 'input' case-insensitively into a ServiceEndpointPolicyId +// note: this method should only be used for API response data and not user input +func ParseServiceEndpointPolicyIDInsensitively(input string) (*ServiceEndpointPolicyId, error) { + parser := resourceids.NewParserFromResourceIdType(&ServiceEndpointPolicyId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ServiceEndpointPolicyId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ServiceEndpointPolicyId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ServiceEndpointPolicyName, ok = input.Parsed["serviceEndpointPolicyName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "serviceEndpointPolicyName", input) + } + + return nil +} + +// ValidateServiceEndpointPolicyID checks that 'input' can be parsed as a Service Endpoint Policy ID +func ValidateServiceEndpointPolicyID(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 := ParseServiceEndpointPolicyID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Service Endpoint Policy ID +func (id ServiceEndpointPolicyId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/serviceEndpointPolicies/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ServiceEndpointPolicyName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Service Endpoint Policy ID +func (id ServiceEndpointPolicyId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticServiceEndpointPolicies", "serviceEndpointPolicies", "serviceEndpointPolicies"), + resourceids.UserSpecifiedSegment("serviceEndpointPolicyName", "serviceEndpointPolicyValue"), + } +} + +// String returns a human-readable description of this Service Endpoint Policy ID +func (id ServiceEndpointPolicyId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Service Endpoint Policy Name: %q", id.ServiceEndpointPolicyName), + } + return fmt.Sprintf("Service Endpoint Policy (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/id_serviceendpointpolicy_test.go b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/id_serviceendpointpolicy_test.go new file mode 100644 index 00000000000..a5eee5d642d --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/id_serviceendpointpolicy_test.go @@ -0,0 +1,282 @@ +package serviceendpointpolicydefinitions + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ServiceEndpointPolicyId{} + +func TestNewServiceEndpointPolicyID(t *testing.T) { + id := NewServiceEndpointPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "serviceEndpointPolicyValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ServiceEndpointPolicyName != "serviceEndpointPolicyValue" { + t.Fatalf("Expected %q but got %q for Segment 'ServiceEndpointPolicyName'", id.ServiceEndpointPolicyName, "serviceEndpointPolicyValue") + } +} + +func TestFormatServiceEndpointPolicyID(t *testing.T) { + actual := NewServiceEndpointPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "serviceEndpointPolicyValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies/serviceEndpointPolicyValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseServiceEndpointPolicyID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ServiceEndpointPolicyId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies/serviceEndpointPolicyValue", + Expected: &ServiceEndpointPolicyId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ServiceEndpointPolicyName: "serviceEndpointPolicyValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies/serviceEndpointPolicyValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseServiceEndpointPolicyID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ServiceEndpointPolicyName != v.Expected.ServiceEndpointPolicyName { + t.Fatalf("Expected %q but got %q for ServiceEndpointPolicyName", v.Expected.ServiceEndpointPolicyName, actual.ServiceEndpointPolicyName) + } + + } +} + +func TestParseServiceEndpointPolicyIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ServiceEndpointPolicyId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/sErViCeEnDpOiNtPoLiCiEs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies/serviceEndpointPolicyValue", + Expected: &ServiceEndpointPolicyId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ServiceEndpointPolicyName: "serviceEndpointPolicyValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies/serviceEndpointPolicyValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/sErViCeEnDpOiNtPoLiCiEs/sErViCeEnDpOiNtPoLiCyVaLuE", + Expected: &ServiceEndpointPolicyId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ServiceEndpointPolicyName: "sErViCeEnDpOiNtPoLiCyVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/sErViCeEnDpOiNtPoLiCiEs/sErViCeEnDpOiNtPoLiCyVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseServiceEndpointPolicyIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ServiceEndpointPolicyName != v.Expected.ServiceEndpointPolicyName { + t.Fatalf("Expected %q but got %q for ServiceEndpointPolicyName", v.Expected.ServiceEndpointPolicyName, actual.ServiceEndpointPolicyName) + } + + } +} + +func TestSegmentsForServiceEndpointPolicyId(t *testing.T) { + segments := ServiceEndpointPolicyId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ServiceEndpointPolicyId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/id_serviceendpointpolicydefinition.go b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/id_serviceendpointpolicydefinition.go new file mode 100644 index 00000000000..edee1adbeda --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/id_serviceendpointpolicydefinition.go @@ -0,0 +1,139 @@ +package serviceendpointpolicydefinitions + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ServiceEndpointPolicyDefinitionId{}) +} + +var _ resourceids.ResourceId = &ServiceEndpointPolicyDefinitionId{} + +// ServiceEndpointPolicyDefinitionId is a struct representing the Resource ID for a Service Endpoint Policy Definition +type ServiceEndpointPolicyDefinitionId struct { + SubscriptionId string + ResourceGroupName string + ServiceEndpointPolicyName string + ServiceEndpointPolicyDefinitionName string +} + +// NewServiceEndpointPolicyDefinitionID returns a new ServiceEndpointPolicyDefinitionId struct +func NewServiceEndpointPolicyDefinitionID(subscriptionId string, resourceGroupName string, serviceEndpointPolicyName string, serviceEndpointPolicyDefinitionName string) ServiceEndpointPolicyDefinitionId { + return ServiceEndpointPolicyDefinitionId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ServiceEndpointPolicyName: serviceEndpointPolicyName, + ServiceEndpointPolicyDefinitionName: serviceEndpointPolicyDefinitionName, + } +} + +// ParseServiceEndpointPolicyDefinitionID parses 'input' into a ServiceEndpointPolicyDefinitionId +func ParseServiceEndpointPolicyDefinitionID(input string) (*ServiceEndpointPolicyDefinitionId, error) { + parser := resourceids.NewParserFromResourceIdType(&ServiceEndpointPolicyDefinitionId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ServiceEndpointPolicyDefinitionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseServiceEndpointPolicyDefinitionIDInsensitively parses 'input' case-insensitively into a ServiceEndpointPolicyDefinitionId +// note: this method should only be used for API response data and not user input +func ParseServiceEndpointPolicyDefinitionIDInsensitively(input string) (*ServiceEndpointPolicyDefinitionId, error) { + parser := resourceids.NewParserFromResourceIdType(&ServiceEndpointPolicyDefinitionId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ServiceEndpointPolicyDefinitionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ServiceEndpointPolicyDefinitionId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ServiceEndpointPolicyName, ok = input.Parsed["serviceEndpointPolicyName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "serviceEndpointPolicyName", input) + } + + if id.ServiceEndpointPolicyDefinitionName, ok = input.Parsed["serviceEndpointPolicyDefinitionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "serviceEndpointPolicyDefinitionName", input) + } + + return nil +} + +// ValidateServiceEndpointPolicyDefinitionID checks that 'input' can be parsed as a Service Endpoint Policy Definition ID +func ValidateServiceEndpointPolicyDefinitionID(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 := ParseServiceEndpointPolicyDefinitionID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Service Endpoint Policy Definition ID +func (id ServiceEndpointPolicyDefinitionId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/serviceEndpointPolicies/%s/serviceEndpointPolicyDefinitions/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ServiceEndpointPolicyName, id.ServiceEndpointPolicyDefinitionName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Service Endpoint Policy Definition ID +func (id ServiceEndpointPolicyDefinitionId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticServiceEndpointPolicies", "serviceEndpointPolicies", "serviceEndpointPolicies"), + resourceids.UserSpecifiedSegment("serviceEndpointPolicyName", "serviceEndpointPolicyValue"), + resourceids.StaticSegment("staticServiceEndpointPolicyDefinitions", "serviceEndpointPolicyDefinitions", "serviceEndpointPolicyDefinitions"), + resourceids.UserSpecifiedSegment("serviceEndpointPolicyDefinitionName", "serviceEndpointPolicyDefinitionValue"), + } +} + +// String returns a human-readable description of this Service Endpoint Policy Definition ID +func (id ServiceEndpointPolicyDefinitionId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Service Endpoint Policy Name: %q", id.ServiceEndpointPolicyName), + fmt.Sprintf("Service Endpoint Policy Definition Name: %q", id.ServiceEndpointPolicyDefinitionName), + } + return fmt.Sprintf("Service Endpoint Policy Definition (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/id_serviceendpointpolicydefinition_test.go b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/id_serviceendpointpolicydefinition_test.go new file mode 100644 index 00000000000..7a15d1452f0 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/id_serviceendpointpolicydefinition_test.go @@ -0,0 +1,327 @@ +package serviceendpointpolicydefinitions + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ServiceEndpointPolicyDefinitionId{} + +func TestNewServiceEndpointPolicyDefinitionID(t *testing.T) { + id := NewServiceEndpointPolicyDefinitionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "serviceEndpointPolicyValue", "serviceEndpointPolicyDefinitionValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ServiceEndpointPolicyName != "serviceEndpointPolicyValue" { + t.Fatalf("Expected %q but got %q for Segment 'ServiceEndpointPolicyName'", id.ServiceEndpointPolicyName, "serviceEndpointPolicyValue") + } + + if id.ServiceEndpointPolicyDefinitionName != "serviceEndpointPolicyDefinitionValue" { + t.Fatalf("Expected %q but got %q for Segment 'ServiceEndpointPolicyDefinitionName'", id.ServiceEndpointPolicyDefinitionName, "serviceEndpointPolicyDefinitionValue") + } +} + +func TestFormatServiceEndpointPolicyDefinitionID(t *testing.T) { + actual := NewServiceEndpointPolicyDefinitionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "serviceEndpointPolicyValue", "serviceEndpointPolicyDefinitionValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies/serviceEndpointPolicyValue/serviceEndpointPolicyDefinitions/serviceEndpointPolicyDefinitionValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseServiceEndpointPolicyDefinitionID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ServiceEndpointPolicyDefinitionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies/serviceEndpointPolicyValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies/serviceEndpointPolicyValue/serviceEndpointPolicyDefinitions", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies/serviceEndpointPolicyValue/serviceEndpointPolicyDefinitions/serviceEndpointPolicyDefinitionValue", + Expected: &ServiceEndpointPolicyDefinitionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ServiceEndpointPolicyName: "serviceEndpointPolicyValue", + ServiceEndpointPolicyDefinitionName: "serviceEndpointPolicyDefinitionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies/serviceEndpointPolicyValue/serviceEndpointPolicyDefinitions/serviceEndpointPolicyDefinitionValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseServiceEndpointPolicyDefinitionID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ServiceEndpointPolicyName != v.Expected.ServiceEndpointPolicyName { + t.Fatalf("Expected %q but got %q for ServiceEndpointPolicyName", v.Expected.ServiceEndpointPolicyName, actual.ServiceEndpointPolicyName) + } + + if actual.ServiceEndpointPolicyDefinitionName != v.Expected.ServiceEndpointPolicyDefinitionName { + t.Fatalf("Expected %q but got %q for ServiceEndpointPolicyDefinitionName", v.Expected.ServiceEndpointPolicyDefinitionName, actual.ServiceEndpointPolicyDefinitionName) + } + + } +} + +func TestParseServiceEndpointPolicyDefinitionIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ServiceEndpointPolicyDefinitionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/sErViCeEnDpOiNtPoLiCiEs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies/serviceEndpointPolicyValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/sErViCeEnDpOiNtPoLiCiEs/sErViCeEnDpOiNtPoLiCyVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies/serviceEndpointPolicyValue/serviceEndpointPolicyDefinitions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/sErViCeEnDpOiNtPoLiCiEs/sErViCeEnDpOiNtPoLiCyVaLuE/sErViCeEnDpOiNtPoLiCyDeFiNiTiOnS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies/serviceEndpointPolicyValue/serviceEndpointPolicyDefinitions/serviceEndpointPolicyDefinitionValue", + Expected: &ServiceEndpointPolicyDefinitionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ServiceEndpointPolicyName: "serviceEndpointPolicyValue", + ServiceEndpointPolicyDefinitionName: "serviceEndpointPolicyDefinitionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/serviceEndpointPolicies/serviceEndpointPolicyValue/serviceEndpointPolicyDefinitions/serviceEndpointPolicyDefinitionValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/sErViCeEnDpOiNtPoLiCiEs/sErViCeEnDpOiNtPoLiCyVaLuE/sErViCeEnDpOiNtPoLiCyDeFiNiTiOnS/sErViCeEnDpOiNtPoLiCyDeFiNiTiOnVaLuE", + Expected: &ServiceEndpointPolicyDefinitionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ServiceEndpointPolicyName: "sErViCeEnDpOiNtPoLiCyVaLuE", + ServiceEndpointPolicyDefinitionName: "sErViCeEnDpOiNtPoLiCyDeFiNiTiOnVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/sErViCeEnDpOiNtPoLiCiEs/sErViCeEnDpOiNtPoLiCyVaLuE/sErViCeEnDpOiNtPoLiCyDeFiNiTiOnS/sErViCeEnDpOiNtPoLiCyDeFiNiTiOnVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseServiceEndpointPolicyDefinitionIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ServiceEndpointPolicyName != v.Expected.ServiceEndpointPolicyName { + t.Fatalf("Expected %q but got %q for ServiceEndpointPolicyName", v.Expected.ServiceEndpointPolicyName, actual.ServiceEndpointPolicyName) + } + + if actual.ServiceEndpointPolicyDefinitionName != v.Expected.ServiceEndpointPolicyDefinitionName { + t.Fatalf("Expected %q but got %q for ServiceEndpointPolicyDefinitionName", v.Expected.ServiceEndpointPolicyDefinitionName, actual.ServiceEndpointPolicyDefinitionName) + } + + } +} + +func TestSegmentsForServiceEndpointPolicyDefinitionId(t *testing.T) { + segments := ServiceEndpointPolicyDefinitionId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ServiceEndpointPolicyDefinitionId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/method_createorupdate.go b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/method_createorupdate.go new file mode 100644 index 00000000000..e75afb9fc02 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/method_createorupdate.go @@ -0,0 +1,75 @@ +package serviceendpointpolicydefinitions + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *ServiceEndpointPolicyDefinition +} + +// CreateOrUpdate ... +func (c ServiceEndpointPolicyDefinitionsClient) CreateOrUpdate(ctx context.Context, id ServiceEndpointPolicyDefinitionId, input ServiceEndpointPolicyDefinition) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c ServiceEndpointPolicyDefinitionsClient) CreateOrUpdateThenPoll(ctx context.Context, id ServiceEndpointPolicyDefinitionId, input ServiceEndpointPolicyDefinition) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/method_delete.go b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/method_delete.go new file mode 100644 index 00000000000..81989f95364 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/method_delete.go @@ -0,0 +1,71 @@ +package serviceendpointpolicydefinitions + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c ServiceEndpointPolicyDefinitionsClient) Delete(ctx context.Context, id ServiceEndpointPolicyDefinitionId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c ServiceEndpointPolicyDefinitionsClient) DeleteThenPoll(ctx context.Context, id ServiceEndpointPolicyDefinitionId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/method_get.go b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/method_get.go new file mode 100644 index 00000000000..e9e63e50232 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/method_get.go @@ -0,0 +1,54 @@ +package serviceendpointpolicydefinitions + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ServiceEndpointPolicyDefinition +} + +// Get ... +func (c ServiceEndpointPolicyDefinitionsClient) Get(ctx context.Context, id ServiceEndpointPolicyDefinitionId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ServiceEndpointPolicyDefinition + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/method_listbyresourcegroup.go b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/method_listbyresourcegroup.go new file mode 100644 index 00000000000..17bb8bc3fc1 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/method_listbyresourcegroup.go @@ -0,0 +1,92 @@ +package serviceendpointpolicydefinitions + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListByResourceGroupOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ServiceEndpointPolicyDefinition +} + +type ListByResourceGroupCompleteResult struct { + LatestHttpResponse *http.Response + Items []ServiceEndpointPolicyDefinition +} + +// ListByResourceGroup ... +func (c ServiceEndpointPolicyDefinitionsClient) ListByResourceGroup(ctx context.Context, id ServiceEndpointPolicyId) (result ListByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/serviceEndpointPolicyDefinitions", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ServiceEndpointPolicyDefinition `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListByResourceGroupComplete retrieves all the results into a single object +func (c ServiceEndpointPolicyDefinitionsClient) ListByResourceGroupComplete(ctx context.Context, id ServiceEndpointPolicyId) (ListByResourceGroupCompleteResult, error) { + return c.ListByResourceGroupCompleteMatchingPredicate(ctx, id, ServiceEndpointPolicyDefinitionOperationPredicate{}) +} + +// ListByResourceGroupCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ServiceEndpointPolicyDefinitionsClient) ListByResourceGroupCompleteMatchingPredicate(ctx context.Context, id ServiceEndpointPolicyId, predicate ServiceEndpointPolicyDefinitionOperationPredicate) (result ListByResourceGroupCompleteResult, err error) { + items := make([]ServiceEndpointPolicyDefinition, 0) + + resp, err := c.ListByResourceGroup(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListByResourceGroupCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/model_serviceendpointpolicydefinition.go b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/model_serviceendpointpolicydefinition.go new file mode 100644 index 00000000000..012ba37fe47 --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/model_serviceendpointpolicydefinition.go @@ -0,0 +1,12 @@ +package serviceendpointpolicydefinitions + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinition struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/model_serviceendpointpolicydefinitionpropertiesformat.go b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/model_serviceendpointpolicydefinitionpropertiesformat.go new file mode 100644 index 00000000000..ff7d49d8a5b --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/model_serviceendpointpolicydefinitionpropertiesformat.go @@ -0,0 +1,11 @@ +package serviceendpointpolicydefinitions + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionPropertiesFormat struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` + ServiceResources *[]string `json:"serviceResources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/predicates.go b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/predicates.go new file mode 100644 index 00000000000..a7a08fa9deb --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/predicates.go @@ -0,0 +1,32 @@ +package serviceendpointpolicydefinitions + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p ServiceEndpointPolicyDefinitionOperationPredicate) Matches(input ServiceEndpointPolicyDefinition) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/version.go b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/version.go new file mode 100644 index 00000000000..f1ac0295b5d --- /dev/null +++ b/resource-manager/network/2024-01-01/serviceendpointpolicydefinitions/version.go @@ -0,0 +1,12 @@ +package serviceendpointpolicydefinitions + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/serviceendpointpolicydefinitions/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/servicetags/README.md b/resource-manager/network/2024-01-01/servicetags/README.md new file mode 100644 index 00000000000..bd0c913b648 --- /dev/null +++ b/resource-manager/network/2024-01-01/servicetags/README.md @@ -0,0 +1,53 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/servicetags` Documentation + +The `servicetags` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/servicetags" +``` + + +### Client Initialization + +```go +client := servicetags.NewServiceTagsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `ServiceTagsClient.ServiceTagInformationList` + +```go +ctx := context.TODO() +id := servicetags.NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue") + +// alternatively `client.ServiceTagInformationList(ctx, id, servicetags.DefaultServiceTagInformationListOperationOptions())` can be used to do batched pagination +items, err := client.ServiceTagInformationListComplete(ctx, id, servicetags.DefaultServiceTagInformationListOperationOptions()) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `ServiceTagsClient.ServiceTagsList` + +```go +ctx := context.TODO() +id := servicetags.NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue") + +read, err := client.ServiceTagsList(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/servicetags/client.go b/resource-manager/network/2024-01-01/servicetags/client.go new file mode 100644 index 00000000000..7037716c1cf --- /dev/null +++ b/resource-manager/network/2024-01-01/servicetags/client.go @@ -0,0 +1,26 @@ +package servicetags + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceTagsClient struct { + Client *resourcemanager.Client +} + +func NewServiceTagsClientWithBaseURI(sdkApi sdkEnv.Api) (*ServiceTagsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "servicetags", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating ServiceTagsClient: %+v", err) + } + + return &ServiceTagsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/servicetags/id_location.go b/resource-manager/network/2024-01-01/servicetags/id_location.go new file mode 100644 index 00000000000..b22b2cb34d7 --- /dev/null +++ b/resource-manager/network/2024-01-01/servicetags/id_location.go @@ -0,0 +1,121 @@ +package servicetags + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&LocationId{}) +} + +var _ resourceids.ResourceId = &LocationId{} + +// LocationId is a struct representing the Resource ID for a Location +type LocationId struct { + SubscriptionId string + LocationName string +} + +// NewLocationID returns a new LocationId struct +func NewLocationID(subscriptionId string, locationName string) LocationId { + return LocationId{ + SubscriptionId: subscriptionId, + LocationName: locationName, + } +} + +// ParseLocationID parses 'input' into a LocationId +func ParseLocationID(input string) (*LocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&LocationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseLocationIDInsensitively parses 'input' case-insensitively into a LocationId +// note: this method should only be used for API response data and not user input +func ParseLocationIDInsensitively(input string) (*LocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&LocationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *LocationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.LocationName, ok = input.Parsed["locationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "locationName", input) + } + + return nil +} + +// ValidateLocationID checks that 'input' can be parsed as a Location ID +func ValidateLocationID(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 := ParseLocationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Location ID +func (id LocationId) ID() string { + fmtString := "/subscriptions/%s/providers/Microsoft.Network/locations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.LocationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Location ID +func (id LocationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLocations", "locations", "locations"), + resourceids.UserSpecifiedSegment("locationName", "locationValue"), + } +} + +// String returns a human-readable description of this Location ID +func (id LocationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Location Name: %q", id.LocationName), + } + return fmt.Sprintf("Location (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/servicetags/id_location_test.go b/resource-manager/network/2024-01-01/servicetags/id_location_test.go new file mode 100644 index 00000000000..8a0f29aebb1 --- /dev/null +++ b/resource-manager/network/2024-01-01/servicetags/id_location_test.go @@ -0,0 +1,237 @@ +package servicetags + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &LocationId{} + +func TestNewLocationID(t *testing.T) { + id := NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.LocationName != "locationValue" { + t.Fatalf("Expected %q but got %q for Segment 'LocationName'", id.LocationName, "locationValue") + } +} + +func TestFormatLocationID(t *testing.T) { + actual := NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseLocationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLocationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestParseLocationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "lOcAtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLocationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestSegmentsForLocationId(t *testing.T) { + segments := LocationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("LocationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/servicetags/method_servicetaginformationlist.go b/resource-manager/network/2024-01-01/servicetags/method_servicetaginformationlist.go new file mode 100644 index 00000000000..a1ec8327d54 --- /dev/null +++ b/resource-manager/network/2024-01-01/servicetags/method_servicetaginformationlist.go @@ -0,0 +1,124 @@ +package servicetags + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceTagInformationListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ServiceTagInformation +} + +type ServiceTagInformationListCompleteResult struct { + LatestHttpResponse *http.Response + Items []ServiceTagInformation +} + +type ServiceTagInformationListOperationOptions struct { + NoAddressPrefixes *bool + TagName *string +} + +func DefaultServiceTagInformationListOperationOptions() ServiceTagInformationListOperationOptions { + return ServiceTagInformationListOperationOptions{} +} + +func (o ServiceTagInformationListOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o ServiceTagInformationListOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o ServiceTagInformationListOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.NoAddressPrefixes != nil { + out.Append("noAddressPrefixes", fmt.Sprintf("%v", *o.NoAddressPrefixes)) + } + if o.TagName != nil { + out.Append("tagName", fmt.Sprintf("%v", *o.TagName)) + } + return &out +} + +// ServiceTagInformationList ... +func (c ServiceTagsClient) ServiceTagInformationList(ctx context.Context, id LocationId, options ServiceTagInformationListOperationOptions) (result ServiceTagInformationListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/serviceTagDetails", id.ID()), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ServiceTagInformation `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ServiceTagInformationListComplete retrieves all the results into a single object +func (c ServiceTagsClient) ServiceTagInformationListComplete(ctx context.Context, id LocationId, options ServiceTagInformationListOperationOptions) (ServiceTagInformationListCompleteResult, error) { + return c.ServiceTagInformationListCompleteMatchingPredicate(ctx, id, options, ServiceTagInformationOperationPredicate{}) +} + +// ServiceTagInformationListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c ServiceTagsClient) ServiceTagInformationListCompleteMatchingPredicate(ctx context.Context, id LocationId, options ServiceTagInformationListOperationOptions, predicate ServiceTagInformationOperationPredicate) (result ServiceTagInformationListCompleteResult, err error) { + items := make([]ServiceTagInformation, 0) + + resp, err := c.ServiceTagInformationList(ctx, id, options) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ServiceTagInformationListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/servicetags/method_servicetagslist.go b/resource-manager/network/2024-01-01/servicetags/method_servicetagslist.go new file mode 100644 index 00000000000..f83c293d79b --- /dev/null +++ b/resource-manager/network/2024-01-01/servicetags/method_servicetagslist.go @@ -0,0 +1,55 @@ +package servicetags + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceTagsListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ServiceTagsListResult +} + +// ServiceTagsList ... +func (c ServiceTagsClient) ServiceTagsList(ctx context.Context, id LocationId) (result ServiceTagsListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/serviceTags", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ServiceTagsListResult + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/servicetags/model_servicetaginformation.go b/resource-manager/network/2024-01-01/servicetags/model_servicetaginformation.go new file mode 100644 index 00000000000..705268a5bb9 --- /dev/null +++ b/resource-manager/network/2024-01-01/servicetags/model_servicetaginformation.go @@ -0,0 +1,11 @@ +package servicetags + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceTagInformation struct { + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceTagInformationPropertiesFormat `json:"properties,omitempty"` + ServiceTagChangeNumber *string `json:"serviceTagChangeNumber,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/servicetags/model_servicetaginformationpropertiesformat.go b/resource-manager/network/2024-01-01/servicetags/model_servicetaginformationpropertiesformat.go new file mode 100644 index 00000000000..0d51bfcd8b2 --- /dev/null +++ b/resource-manager/network/2024-01-01/servicetags/model_servicetaginformationpropertiesformat.go @@ -0,0 +1,12 @@ +package servicetags + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceTagInformationPropertiesFormat struct { + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + ChangeNumber *string `json:"changeNumber,omitempty"` + Region *string `json:"region,omitempty"` + State *string `json:"state,omitempty"` + SystemService *string `json:"systemService,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/servicetags/model_servicetagslistresult.go b/resource-manager/network/2024-01-01/servicetags/model_servicetagslistresult.go new file mode 100644 index 00000000000..9cfb2fb2afb --- /dev/null +++ b/resource-manager/network/2024-01-01/servicetags/model_servicetagslistresult.go @@ -0,0 +1,14 @@ +package servicetags + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceTagsListResult struct { + ChangeNumber *string `json:"changeNumber,omitempty"` + Cloud *string `json:"cloud,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + NextLink *string `json:"nextLink,omitempty"` + Type *string `json:"type,omitempty"` + Values *[]ServiceTagInformation `json:"values,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/servicetags/predicates.go b/resource-manager/network/2024-01-01/servicetags/predicates.go new file mode 100644 index 00000000000..e10bffe6a4f --- /dev/null +++ b/resource-manager/network/2024-01-01/servicetags/predicates.go @@ -0,0 +1,27 @@ +package servicetags + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceTagInformationOperationPredicate struct { + Id *string + Name *string + ServiceTagChangeNumber *string +} + +func (p ServiceTagInformationOperationPredicate) Matches(input ServiceTagInformation) bool { + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.ServiceTagChangeNumber != nil && (input.ServiceTagChangeNumber == nil || *p.ServiceTagChangeNumber != *input.ServiceTagChangeNumber) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/servicetags/version.go b/resource-manager/network/2024-01-01/servicetags/version.go new file mode 100644 index 00000000000..cfdba6b2afd --- /dev/null +++ b/resource-manager/network/2024-01-01/servicetags/version.go @@ -0,0 +1,12 @@ +package servicetags + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/servicetags/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/staticmembers/README.md b/resource-manager/network/2024-01-01/staticmembers/README.md new file mode 100644 index 00000000000..8f26a0c7cce --- /dev/null +++ b/resource-manager/network/2024-01-01/staticmembers/README.md @@ -0,0 +1,90 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/staticmembers` Documentation + +The `staticmembers` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/staticmembers" +``` + + +### Client Initialization + +```go +client := staticmembers.NewStaticMembersClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `StaticMembersClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := staticmembers.NewStaticMemberID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "networkGroupValue", "staticMemberValue") + +payload := staticmembers.StaticMember{ + // ... +} + + +read, err := client.CreateOrUpdate(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `StaticMembersClient.Delete` + +```go +ctx := context.TODO() +id := staticmembers.NewStaticMemberID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "networkGroupValue", "staticMemberValue") + +read, err := client.Delete(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `StaticMembersClient.Get` + +```go +ctx := context.TODO() +id := staticmembers.NewStaticMemberID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "networkGroupValue", "staticMemberValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `StaticMembersClient.List` + +```go +ctx := context.TODO() +id := staticmembers.NewNetworkGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "networkGroupValue") + +// alternatively `client.List(ctx, id, staticmembers.DefaultListOperationOptions())` can be used to do batched pagination +items, err := client.ListComplete(ctx, id, staticmembers.DefaultListOperationOptions()) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/staticmembers/client.go b/resource-manager/network/2024-01-01/staticmembers/client.go new file mode 100644 index 00000000000..0bd2daa81d6 --- /dev/null +++ b/resource-manager/network/2024-01-01/staticmembers/client.go @@ -0,0 +1,26 @@ +package staticmembers + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StaticMembersClient struct { + Client *resourcemanager.Client +} + +func NewStaticMembersClientWithBaseURI(sdkApi sdkEnv.Api) (*StaticMembersClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "staticmembers", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating StaticMembersClient: %+v", err) + } + + return &StaticMembersClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/staticmembers/constants.go b/resource-manager/network/2024-01-01/staticmembers/constants.go new file mode 100644 index 00000000000..3ccbd94262b --- /dev/null +++ b/resource-manager/network/2024-01-01/staticmembers/constants.go @@ -0,0 +1,57 @@ +package staticmembers + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/staticmembers/id_networkgroup.go b/resource-manager/network/2024-01-01/staticmembers/id_networkgroup.go new file mode 100644 index 00000000000..cbc610731ad --- /dev/null +++ b/resource-manager/network/2024-01-01/staticmembers/id_networkgroup.go @@ -0,0 +1,139 @@ +package staticmembers + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NetworkGroupId{}) +} + +var _ resourceids.ResourceId = &NetworkGroupId{} + +// NetworkGroupId is a struct representing the Resource ID for a Network Group +type NetworkGroupId struct { + SubscriptionId string + ResourceGroupName string + NetworkManagerName string + NetworkGroupName string +} + +// NewNetworkGroupID returns a new NetworkGroupId struct +func NewNetworkGroupID(subscriptionId string, resourceGroupName string, networkManagerName string, networkGroupName string) NetworkGroupId { + return NetworkGroupId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkManagerName: networkManagerName, + NetworkGroupName: networkGroupName, + } +} + +// ParseNetworkGroupID parses 'input' into a NetworkGroupId +func ParseNetworkGroupID(input string) (*NetworkGroupId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkGroupId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkGroupId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNetworkGroupIDInsensitively parses 'input' case-insensitively into a NetworkGroupId +// note: this method should only be used for API response data and not user input +func ParseNetworkGroupIDInsensitively(input string) (*NetworkGroupId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkGroupId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkGroupId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NetworkGroupId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkManagerName, ok = input.Parsed["networkManagerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkManagerName", input) + } + + if id.NetworkGroupName, ok = input.Parsed["networkGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkGroupName", input) + } + + return nil +} + +// ValidateNetworkGroupID checks that 'input' can be parsed as a Network Group ID +func ValidateNetworkGroupID(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 := ParseNetworkGroupID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Network Group ID +func (id NetworkGroupId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkManagers/%s/networkGroups/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkManagerName, id.NetworkGroupName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Network Group ID +func (id NetworkGroupId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkManagers", "networkManagers", "networkManagers"), + resourceids.UserSpecifiedSegment("networkManagerName", "networkManagerValue"), + resourceids.StaticSegment("staticNetworkGroups", "networkGroups", "networkGroups"), + resourceids.UserSpecifiedSegment("networkGroupName", "networkGroupValue"), + } +} + +// String returns a human-readable description of this Network Group ID +func (id NetworkGroupId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Manager Name: %q", id.NetworkManagerName), + fmt.Sprintf("Network Group Name: %q", id.NetworkGroupName), + } + return fmt.Sprintf("Network Group (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/staticmembers/id_networkgroup_test.go b/resource-manager/network/2024-01-01/staticmembers/id_networkgroup_test.go new file mode 100644 index 00000000000..04360c54808 --- /dev/null +++ b/resource-manager/network/2024-01-01/staticmembers/id_networkgroup_test.go @@ -0,0 +1,327 @@ +package staticmembers + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NetworkGroupId{} + +func TestNewNetworkGroupID(t *testing.T) { + id := NewNetworkGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "networkGroupValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkManagerName != "networkManagerValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkManagerName'", id.NetworkManagerName, "networkManagerValue") + } + + if id.NetworkGroupName != "networkGroupValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkGroupName'", id.NetworkGroupName, "networkGroupValue") + } +} + +func TestFormatNetworkGroupID(t *testing.T) { + actual := NewNetworkGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "networkGroupValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups/networkGroupValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNetworkGroupID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkGroupId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups/networkGroupValue", + Expected: &NetworkGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + NetworkGroupName: "networkGroupValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups/networkGroupValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkGroupID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + if actual.NetworkGroupName != v.Expected.NetworkGroupName { + t.Fatalf("Expected %q but got %q for NetworkGroupName", v.Expected.NetworkGroupName, actual.NetworkGroupName) + } + + } +} + +func TestParseNetworkGroupIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkGroupId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/nEtWoRkGrOuPs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups/networkGroupValue", + Expected: &NetworkGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + NetworkGroupName: "networkGroupValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups/networkGroupValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/nEtWoRkGrOuPs/nEtWoRkGrOuPvAlUe", + Expected: &NetworkGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkManagerName: "nEtWoRkMaNaGeRvAlUe", + NetworkGroupName: "nEtWoRkGrOuPvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/nEtWoRkGrOuPs/nEtWoRkGrOuPvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkGroupIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + if actual.NetworkGroupName != v.Expected.NetworkGroupName { + t.Fatalf("Expected %q but got %q for NetworkGroupName", v.Expected.NetworkGroupName, actual.NetworkGroupName) + } + + } +} + +func TestSegmentsForNetworkGroupId(t *testing.T) { + segments := NetworkGroupId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NetworkGroupId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/staticmembers/id_staticmember.go b/resource-manager/network/2024-01-01/staticmembers/id_staticmember.go new file mode 100644 index 00000000000..e972ef7ffc2 --- /dev/null +++ b/resource-manager/network/2024-01-01/staticmembers/id_staticmember.go @@ -0,0 +1,148 @@ +package staticmembers + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&StaticMemberId{}) +} + +var _ resourceids.ResourceId = &StaticMemberId{} + +// StaticMemberId is a struct representing the Resource ID for a Static Member +type StaticMemberId struct { + SubscriptionId string + ResourceGroupName string + NetworkManagerName string + NetworkGroupName string + StaticMemberName string +} + +// NewStaticMemberID returns a new StaticMemberId struct +func NewStaticMemberID(subscriptionId string, resourceGroupName string, networkManagerName string, networkGroupName string, staticMemberName string) StaticMemberId { + return StaticMemberId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkManagerName: networkManagerName, + NetworkGroupName: networkGroupName, + StaticMemberName: staticMemberName, + } +} + +// ParseStaticMemberID parses 'input' into a StaticMemberId +func ParseStaticMemberID(input string) (*StaticMemberId, error) { + parser := resourceids.NewParserFromResourceIdType(&StaticMemberId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := StaticMemberId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseStaticMemberIDInsensitively parses 'input' case-insensitively into a StaticMemberId +// note: this method should only be used for API response data and not user input +func ParseStaticMemberIDInsensitively(input string) (*StaticMemberId, error) { + parser := resourceids.NewParserFromResourceIdType(&StaticMemberId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := StaticMemberId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *StaticMemberId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkManagerName, ok = input.Parsed["networkManagerName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkManagerName", input) + } + + if id.NetworkGroupName, ok = input.Parsed["networkGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkGroupName", input) + } + + if id.StaticMemberName, ok = input.Parsed["staticMemberName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "staticMemberName", input) + } + + return nil +} + +// ValidateStaticMemberID checks that 'input' can be parsed as a Static Member ID +func ValidateStaticMemberID(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 := ParseStaticMemberID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Static Member ID +func (id StaticMemberId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkManagers/%s/networkGroups/%s/staticMembers/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkManagerName, id.NetworkGroupName, id.StaticMemberName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Static Member ID +func (id StaticMemberId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkManagers", "networkManagers", "networkManagers"), + resourceids.UserSpecifiedSegment("networkManagerName", "networkManagerValue"), + resourceids.StaticSegment("staticNetworkGroups", "networkGroups", "networkGroups"), + resourceids.UserSpecifiedSegment("networkGroupName", "networkGroupValue"), + resourceids.StaticSegment("staticStaticMembers", "staticMembers", "staticMembers"), + resourceids.UserSpecifiedSegment("staticMemberName", "staticMemberValue"), + } +} + +// String returns a human-readable description of this Static Member ID +func (id StaticMemberId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Manager Name: %q", id.NetworkManagerName), + fmt.Sprintf("Network Group Name: %q", id.NetworkGroupName), + fmt.Sprintf("Static Member Name: %q", id.StaticMemberName), + } + return fmt.Sprintf("Static Member (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/staticmembers/id_staticmember_test.go b/resource-manager/network/2024-01-01/staticmembers/id_staticmember_test.go new file mode 100644 index 00000000000..80cf1ec36f0 --- /dev/null +++ b/resource-manager/network/2024-01-01/staticmembers/id_staticmember_test.go @@ -0,0 +1,372 @@ +package staticmembers + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &StaticMemberId{} + +func TestNewStaticMemberID(t *testing.T) { + id := NewStaticMemberID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "networkGroupValue", "staticMemberValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkManagerName != "networkManagerValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkManagerName'", id.NetworkManagerName, "networkManagerValue") + } + + if id.NetworkGroupName != "networkGroupValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkGroupName'", id.NetworkGroupName, "networkGroupValue") + } + + if id.StaticMemberName != "staticMemberValue" { + t.Fatalf("Expected %q but got %q for Segment 'StaticMemberName'", id.StaticMemberName, "staticMemberValue") + } +} + +func TestFormatStaticMemberID(t *testing.T) { + actual := NewStaticMemberID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkManagerValue", "networkGroupValue", "staticMemberValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups/networkGroupValue/staticMembers/staticMemberValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseStaticMemberID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *StaticMemberId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups/networkGroupValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups/networkGroupValue/staticMembers", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups/networkGroupValue/staticMembers/staticMemberValue", + Expected: &StaticMemberId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + NetworkGroupName: "networkGroupValue", + StaticMemberName: "staticMemberValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups/networkGroupValue/staticMembers/staticMemberValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseStaticMemberID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + if actual.NetworkGroupName != v.Expected.NetworkGroupName { + t.Fatalf("Expected %q but got %q for NetworkGroupName", v.Expected.NetworkGroupName, actual.NetworkGroupName) + } + + if actual.StaticMemberName != v.Expected.StaticMemberName { + t.Fatalf("Expected %q but got %q for StaticMemberName", v.Expected.StaticMemberName, actual.StaticMemberName) + } + + } +} + +func TestParseStaticMemberIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *StaticMemberId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/nEtWoRkGrOuPs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups/networkGroupValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/nEtWoRkGrOuPs/nEtWoRkGrOuPvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups/networkGroupValue/staticMembers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/nEtWoRkGrOuPs/nEtWoRkGrOuPvAlUe/sTaTiCmEmBeRs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups/networkGroupValue/staticMembers/staticMemberValue", + Expected: &StaticMemberId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkManagerName: "networkManagerValue", + NetworkGroupName: "networkGroupValue", + StaticMemberName: "staticMemberValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkManagers/networkManagerValue/networkGroups/networkGroupValue/staticMembers/staticMemberValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/nEtWoRkGrOuPs/nEtWoRkGrOuPvAlUe/sTaTiCmEmBeRs/sTaTiCmEmBeRvAlUe", + Expected: &StaticMemberId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkManagerName: "nEtWoRkMaNaGeRvAlUe", + NetworkGroupName: "nEtWoRkGrOuPvAlUe", + StaticMemberName: "sTaTiCmEmBeRvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkMaNaGeRs/nEtWoRkMaNaGeRvAlUe/nEtWoRkGrOuPs/nEtWoRkGrOuPvAlUe/sTaTiCmEmBeRs/sTaTiCmEmBeRvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseStaticMemberIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkManagerName != v.Expected.NetworkManagerName { + t.Fatalf("Expected %q but got %q for NetworkManagerName", v.Expected.NetworkManagerName, actual.NetworkManagerName) + } + + if actual.NetworkGroupName != v.Expected.NetworkGroupName { + t.Fatalf("Expected %q but got %q for NetworkGroupName", v.Expected.NetworkGroupName, actual.NetworkGroupName) + } + + if actual.StaticMemberName != v.Expected.StaticMemberName { + t.Fatalf("Expected %q but got %q for StaticMemberName", v.Expected.StaticMemberName, actual.StaticMemberName) + } + + } +} + +func TestSegmentsForStaticMemberId(t *testing.T) { + segments := StaticMemberId{}.Segments() + if len(segments) == 0 { + t.Fatalf("StaticMemberId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/staticmembers/method_createorupdate.go b/resource-manager/network/2024-01-01/staticmembers/method_createorupdate.go new file mode 100644 index 00000000000..6921f0aedf3 --- /dev/null +++ b/resource-manager/network/2024-01-01/staticmembers/method_createorupdate.go @@ -0,0 +1,59 @@ +package staticmembers + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *StaticMember +} + +// CreateOrUpdate ... +func (c StaticMembersClient) CreateOrUpdate(ctx context.Context, id StaticMemberId, input StaticMember) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model StaticMember + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/staticmembers/method_delete.go b/resource-manager/network/2024-01-01/staticmembers/method_delete.go new file mode 100644 index 00000000000..5709eca59ec --- /dev/null +++ b/resource-manager/network/2024-01-01/staticmembers/method_delete.go @@ -0,0 +1,47 @@ +package staticmembers + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c StaticMembersClient) Delete(ctx context.Context, id StaticMemberId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/staticmembers/method_get.go b/resource-manager/network/2024-01-01/staticmembers/method_get.go new file mode 100644 index 00000000000..11fc970af6a --- /dev/null +++ b/resource-manager/network/2024-01-01/staticmembers/method_get.go @@ -0,0 +1,54 @@ +package staticmembers + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *StaticMember +} + +// Get ... +func (c StaticMembersClient) Get(ctx context.Context, id StaticMemberId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model StaticMember + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/staticmembers/method_list.go b/resource-manager/network/2024-01-01/staticmembers/method_list.go new file mode 100644 index 00000000000..fc087d77dc0 --- /dev/null +++ b/resource-manager/network/2024-01-01/staticmembers/method_list.go @@ -0,0 +1,120 @@ +package staticmembers + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]StaticMember +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []StaticMember +} + +type ListOperationOptions struct { + Top *int64 +} + +func DefaultListOperationOptions() ListOperationOptions { + return ListOperationOptions{} +} + +func (o ListOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o ListOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o ListOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Top != nil { + out.Append("$top", fmt.Sprintf("%v", *o.Top)) + } + return &out +} + +// List ... +func (c StaticMembersClient) List(ctx context.Context, id NetworkGroupId, options ListOperationOptions) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/staticMembers", id.ID()), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]StaticMember `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c StaticMembersClient) ListComplete(ctx context.Context, id NetworkGroupId, options ListOperationOptions) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, options, StaticMemberOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c StaticMembersClient) ListCompleteMatchingPredicate(ctx context.Context, id NetworkGroupId, options ListOperationOptions, predicate StaticMemberOperationPredicate) (result ListCompleteResult, err error) { + items := make([]StaticMember, 0) + + resp, err := c.List(ctx, id, options) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/staticmembers/model_staticmember.go b/resource-manager/network/2024-01-01/staticmembers/model_staticmember.go new file mode 100644 index 00000000000..b0d518168ea --- /dev/null +++ b/resource-manager/network/2024-01-01/staticmembers/model_staticmember.go @@ -0,0 +1,17 @@ +package staticmembers + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/systemdata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StaticMember struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *StaticMemberProperties `json:"properties,omitempty"` + SystemData *systemdata.SystemData `json:"systemData,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/staticmembers/model_staticmemberproperties.go b/resource-manager/network/2024-01-01/staticmembers/model_staticmemberproperties.go new file mode 100644 index 00000000000..513dd3e5b9b --- /dev/null +++ b/resource-manager/network/2024-01-01/staticmembers/model_staticmemberproperties.go @@ -0,0 +1,10 @@ +package staticmembers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StaticMemberProperties struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Region *string `json:"region,omitempty"` + ResourceId *string `json:"resourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/staticmembers/predicates.go b/resource-manager/network/2024-01-01/staticmembers/predicates.go new file mode 100644 index 00000000000..0fb08a96da7 --- /dev/null +++ b/resource-manager/network/2024-01-01/staticmembers/predicates.go @@ -0,0 +1,32 @@ +package staticmembers + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StaticMemberOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p StaticMemberOperationPredicate) Matches(input StaticMember) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/staticmembers/version.go b/resource-manager/network/2024-01-01/staticmembers/version.go new file mode 100644 index 00000000000..a5b078b5055 --- /dev/null +++ b/resource-manager/network/2024-01-01/staticmembers/version.go @@ -0,0 +1,12 @@ +package staticmembers + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/staticmembers/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/subnets/README.md b/resource-manager/network/2024-01-01/subnets/README.md new file mode 100644 index 00000000000..6a02970116d --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/README.md @@ -0,0 +1,83 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/subnets` Documentation + +The `subnets` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/subnets" +``` + + +### Client Initialization + +```go +client := subnets.NewSubnetsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `SubnetsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := commonids.NewSubnetID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkValue", "subnetValue") + +payload := subnets.Subnet{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `SubnetsClient.Delete` + +```go +ctx := context.TODO() +id := commonids.NewSubnetID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkValue", "subnetValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `SubnetsClient.Get` + +```go +ctx := context.TODO() +id := commonids.NewSubnetID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkValue", "subnetValue") + +read, err := client.Get(ctx, id, subnets.DefaultGetOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `SubnetsClient.List` + +```go +ctx := context.TODO() +id := commonids.NewVirtualNetworkID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkValue") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/subnets/client.go b/resource-manager/network/2024-01-01/subnets/client.go new file mode 100644 index 00000000000..b1f947b47be --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/client.go @@ -0,0 +1,26 @@ +package subnets + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetsClient struct { + Client *resourcemanager.Client +} + +func NewSubnetsClientWithBaseURI(sdkApi sdkEnv.Api) (*SubnetsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "subnets", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating SubnetsClient: %+v", err) + } + + return &SubnetsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/subnets/constants.go b/resource-manager/network/2024-01-01/subnets/constants.go new file mode 100644 index 00000000000..8c3fe71424a --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/constants.go @@ -0,0 +1,1198 @@ +package subnets + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettingsProtectionMode string + +const ( + DdosSettingsProtectionModeDisabled DdosSettingsProtectionMode = "Disabled" + DdosSettingsProtectionModeEnabled DdosSettingsProtectionMode = "Enabled" + DdosSettingsProtectionModeVirtualNetworkInherited DdosSettingsProtectionMode = "VirtualNetworkInherited" +) + +func PossibleValuesForDdosSettingsProtectionMode() []string { + return []string{ + string(DdosSettingsProtectionModeDisabled), + string(DdosSettingsProtectionModeEnabled), + string(DdosSettingsProtectionModeVirtualNetworkInherited), + } +} + +func (s *DdosSettingsProtectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDdosSettingsProtectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDdosSettingsProtectionMode(input string) (*DdosSettingsProtectionMode, error) { + vals := map[string]DdosSettingsProtectionMode{ + "disabled": DdosSettingsProtectionModeDisabled, + "enabled": DdosSettingsProtectionModeEnabled, + "virtualnetworkinherited": DdosSettingsProtectionModeVirtualNetworkInherited, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DdosSettingsProtectionMode(input) + return &out, nil +} + +type DeleteOptions string + +const ( + DeleteOptionsDelete DeleteOptions = "Delete" + DeleteOptionsDetach DeleteOptions = "Detach" +) + +func PossibleValuesForDeleteOptions() []string { + return []string{ + string(DeleteOptionsDelete), + string(DeleteOptionsDetach), + } +} + +func (s *DeleteOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteOptions(input string) (*DeleteOptions, error) { + vals := map[string]DeleteOptions{ + "delete": DeleteOptionsDelete, + "detach": DeleteOptionsDetach, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteOptions(input) + return &out, nil +} + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelInterfaceType string + +const ( + GatewayLoadBalancerTunnelInterfaceTypeExternal GatewayLoadBalancerTunnelInterfaceType = "External" + GatewayLoadBalancerTunnelInterfaceTypeInternal GatewayLoadBalancerTunnelInterfaceType = "Internal" + GatewayLoadBalancerTunnelInterfaceTypeNone GatewayLoadBalancerTunnelInterfaceType = "None" +) + +func PossibleValuesForGatewayLoadBalancerTunnelInterfaceType() []string { + return []string{ + string(GatewayLoadBalancerTunnelInterfaceTypeExternal), + string(GatewayLoadBalancerTunnelInterfaceTypeInternal), + string(GatewayLoadBalancerTunnelInterfaceTypeNone), + } +} + +func (s *GatewayLoadBalancerTunnelInterfaceType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelInterfaceType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelInterfaceType(input string) (*GatewayLoadBalancerTunnelInterfaceType, error) { + vals := map[string]GatewayLoadBalancerTunnelInterfaceType{ + "external": GatewayLoadBalancerTunnelInterfaceTypeExternal, + "internal": GatewayLoadBalancerTunnelInterfaceTypeInternal, + "none": GatewayLoadBalancerTunnelInterfaceTypeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelInterfaceType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelProtocol string + +const ( + GatewayLoadBalancerTunnelProtocolNative GatewayLoadBalancerTunnelProtocol = "Native" + GatewayLoadBalancerTunnelProtocolNone GatewayLoadBalancerTunnelProtocol = "None" + GatewayLoadBalancerTunnelProtocolVXLAN GatewayLoadBalancerTunnelProtocol = "VXLAN" +) + +func PossibleValuesForGatewayLoadBalancerTunnelProtocol() []string { + return []string{ + string(GatewayLoadBalancerTunnelProtocolNative), + string(GatewayLoadBalancerTunnelProtocolNone), + string(GatewayLoadBalancerTunnelProtocolVXLAN), + } +} + +func (s *GatewayLoadBalancerTunnelProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelProtocol(input string) (*GatewayLoadBalancerTunnelProtocol, error) { + vals := map[string]GatewayLoadBalancerTunnelProtocol{ + "native": GatewayLoadBalancerTunnelProtocolNative, + "none": GatewayLoadBalancerTunnelProtocolNone, + "vxlan": GatewayLoadBalancerTunnelProtocolVXLAN, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelProtocol(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} + +type LoadBalancerBackendAddressAdminState string + +const ( + LoadBalancerBackendAddressAdminStateDown LoadBalancerBackendAddressAdminState = "Down" + LoadBalancerBackendAddressAdminStateNone LoadBalancerBackendAddressAdminState = "None" + LoadBalancerBackendAddressAdminStateUp LoadBalancerBackendAddressAdminState = "Up" +) + +func PossibleValuesForLoadBalancerBackendAddressAdminState() []string { + return []string{ + string(LoadBalancerBackendAddressAdminStateDown), + string(LoadBalancerBackendAddressAdminStateNone), + string(LoadBalancerBackendAddressAdminStateUp), + } +} + +func (s *LoadBalancerBackendAddressAdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerBackendAddressAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerBackendAddressAdminState(input string) (*LoadBalancerBackendAddressAdminState, error) { + vals := map[string]LoadBalancerBackendAddressAdminState{ + "down": LoadBalancerBackendAddressAdminStateDown, + "none": LoadBalancerBackendAddressAdminStateNone, + "up": LoadBalancerBackendAddressAdminStateUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerBackendAddressAdminState(input) + return &out, nil +} + +type NatGatewaySkuName string + +const ( + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +func PossibleValuesForNatGatewaySkuName() []string { + return []string{ + string(NatGatewaySkuNameStandard), + } +} + +func (s *NatGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNatGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNatGatewaySkuName(input string) (*NatGatewaySkuName, error) { + vals := map[string]NatGatewaySkuName{ + "standard": NatGatewaySkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NatGatewaySkuName(input) + return &out, nil +} + +type NetworkInterfaceAuxiliaryMode string + +const ( + NetworkInterfaceAuxiliaryModeAcceleratedConnections NetworkInterfaceAuxiliaryMode = "AcceleratedConnections" + NetworkInterfaceAuxiliaryModeFloating NetworkInterfaceAuxiliaryMode = "Floating" + NetworkInterfaceAuxiliaryModeMaxConnections NetworkInterfaceAuxiliaryMode = "MaxConnections" + NetworkInterfaceAuxiliaryModeNone NetworkInterfaceAuxiliaryMode = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliaryMode() []string { + return []string{ + string(NetworkInterfaceAuxiliaryModeAcceleratedConnections), + string(NetworkInterfaceAuxiliaryModeFloating), + string(NetworkInterfaceAuxiliaryModeMaxConnections), + string(NetworkInterfaceAuxiliaryModeNone), + } +} + +func (s *NetworkInterfaceAuxiliaryMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliaryMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliaryMode(input string) (*NetworkInterfaceAuxiliaryMode, error) { + vals := map[string]NetworkInterfaceAuxiliaryMode{ + "acceleratedconnections": NetworkInterfaceAuxiliaryModeAcceleratedConnections, + "floating": NetworkInterfaceAuxiliaryModeFloating, + "maxconnections": NetworkInterfaceAuxiliaryModeMaxConnections, + "none": NetworkInterfaceAuxiliaryModeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliaryMode(input) + return &out, nil +} + +type NetworkInterfaceAuxiliarySku string + +const ( + NetworkInterfaceAuxiliarySkuAEight NetworkInterfaceAuxiliarySku = "A8" + NetworkInterfaceAuxiliarySkuAFour NetworkInterfaceAuxiliarySku = "A4" + NetworkInterfaceAuxiliarySkuAOne NetworkInterfaceAuxiliarySku = "A1" + NetworkInterfaceAuxiliarySkuATwo NetworkInterfaceAuxiliarySku = "A2" + NetworkInterfaceAuxiliarySkuNone NetworkInterfaceAuxiliarySku = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliarySku() []string { + return []string{ + string(NetworkInterfaceAuxiliarySkuAEight), + string(NetworkInterfaceAuxiliarySkuAFour), + string(NetworkInterfaceAuxiliarySkuAOne), + string(NetworkInterfaceAuxiliarySkuATwo), + string(NetworkInterfaceAuxiliarySkuNone), + } +} + +func (s *NetworkInterfaceAuxiliarySku) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliarySku(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliarySku(input string) (*NetworkInterfaceAuxiliarySku, error) { + vals := map[string]NetworkInterfaceAuxiliarySku{ + "a8": NetworkInterfaceAuxiliarySkuAEight, + "a4": NetworkInterfaceAuxiliarySkuAFour, + "a1": NetworkInterfaceAuxiliarySkuAOne, + "a2": NetworkInterfaceAuxiliarySkuATwo, + "none": NetworkInterfaceAuxiliarySkuNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliarySku(input) + return &out, nil +} + +type NetworkInterfaceMigrationPhase string + +const ( + NetworkInterfaceMigrationPhaseAbort NetworkInterfaceMigrationPhase = "Abort" + NetworkInterfaceMigrationPhaseCommit NetworkInterfaceMigrationPhase = "Commit" + NetworkInterfaceMigrationPhaseCommitted NetworkInterfaceMigrationPhase = "Committed" + NetworkInterfaceMigrationPhaseNone NetworkInterfaceMigrationPhase = "None" + NetworkInterfaceMigrationPhasePrepare NetworkInterfaceMigrationPhase = "Prepare" +) + +func PossibleValuesForNetworkInterfaceMigrationPhase() []string { + return []string{ + string(NetworkInterfaceMigrationPhaseAbort), + string(NetworkInterfaceMigrationPhaseCommit), + string(NetworkInterfaceMigrationPhaseCommitted), + string(NetworkInterfaceMigrationPhaseNone), + string(NetworkInterfaceMigrationPhasePrepare), + } +} + +func (s *NetworkInterfaceMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceMigrationPhase(input string) (*NetworkInterfaceMigrationPhase, error) { + vals := map[string]NetworkInterfaceMigrationPhase{ + "abort": NetworkInterfaceMigrationPhaseAbort, + "commit": NetworkInterfaceMigrationPhaseCommit, + "committed": NetworkInterfaceMigrationPhaseCommitted, + "none": NetworkInterfaceMigrationPhaseNone, + "prepare": NetworkInterfaceMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceMigrationPhase(input) + return &out, nil +} + +type NetworkInterfaceNicType string + +const ( + NetworkInterfaceNicTypeElastic NetworkInterfaceNicType = "Elastic" + NetworkInterfaceNicTypeStandard NetworkInterfaceNicType = "Standard" +) + +func PossibleValuesForNetworkInterfaceNicType() []string { + return []string{ + string(NetworkInterfaceNicTypeElastic), + string(NetworkInterfaceNicTypeStandard), + } +} + +func (s *NetworkInterfaceNicType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceNicType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceNicType(input string) (*NetworkInterfaceNicType, error) { + vals := map[string]NetworkInterfaceNicType{ + "elastic": NetworkInterfaceNicTypeElastic, + "standard": NetworkInterfaceNicTypeStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceNicType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type PublicIPAddressDnsSettingsDomainNameLabelScope string + +const ( + PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "NoReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "ResourceGroupReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "SubscriptionReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "TenantReuse" +) + +func PossibleValuesForPublicIPAddressDnsSettingsDomainNameLabelScope() []string { + return []string{ + string(PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse), + } +} + +func (s *PublicIPAddressDnsSettingsDomainNameLabelScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressDnsSettingsDomainNameLabelScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressDnsSettingsDomainNameLabelScope(input string) (*PublicIPAddressDnsSettingsDomainNameLabelScope, error) { + vals := map[string]PublicIPAddressDnsSettingsDomainNameLabelScope{ + "noreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse, + "resourcegroupreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse, + "subscriptionreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse, + "tenantreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressDnsSettingsDomainNameLabelScope(input) + return &out, nil +} + +type PublicIPAddressMigrationPhase string + +const ( + PublicIPAddressMigrationPhaseAbort PublicIPAddressMigrationPhase = "Abort" + PublicIPAddressMigrationPhaseCommit PublicIPAddressMigrationPhase = "Commit" + PublicIPAddressMigrationPhaseCommitted PublicIPAddressMigrationPhase = "Committed" + PublicIPAddressMigrationPhaseNone PublicIPAddressMigrationPhase = "None" + PublicIPAddressMigrationPhasePrepare PublicIPAddressMigrationPhase = "Prepare" +) + +func PossibleValuesForPublicIPAddressMigrationPhase() []string { + return []string{ + string(PublicIPAddressMigrationPhaseAbort), + string(PublicIPAddressMigrationPhaseCommit), + string(PublicIPAddressMigrationPhaseCommitted), + string(PublicIPAddressMigrationPhaseNone), + string(PublicIPAddressMigrationPhasePrepare), + } +} + +func (s *PublicIPAddressMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressMigrationPhase(input string) (*PublicIPAddressMigrationPhase, error) { + vals := map[string]PublicIPAddressMigrationPhase{ + "abort": PublicIPAddressMigrationPhaseAbort, + "commit": PublicIPAddressMigrationPhaseCommit, + "committed": PublicIPAddressMigrationPhaseCommitted, + "none": PublicIPAddressMigrationPhaseNone, + "prepare": PublicIPAddressMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressMigrationPhase(input) + return &out, nil +} + +type PublicIPAddressSkuName string + +const ( + PublicIPAddressSkuNameBasic PublicIPAddressSkuName = "Basic" + PublicIPAddressSkuNameStandard PublicIPAddressSkuName = "Standard" +) + +func PossibleValuesForPublicIPAddressSkuName() []string { + return []string{ + string(PublicIPAddressSkuNameBasic), + string(PublicIPAddressSkuNameStandard), + } +} + +func (s *PublicIPAddressSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuName(input string) (*PublicIPAddressSkuName, error) { + vals := map[string]PublicIPAddressSkuName{ + "basic": PublicIPAddressSkuNameBasic, + "standard": PublicIPAddressSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuName(input) + return &out, nil +} + +type PublicIPAddressSkuTier string + +const ( + PublicIPAddressSkuTierGlobal PublicIPAddressSkuTier = "Global" + PublicIPAddressSkuTierRegional PublicIPAddressSkuTier = "Regional" +) + +func PossibleValuesForPublicIPAddressSkuTier() []string { + return []string{ + string(PublicIPAddressSkuTierGlobal), + string(PublicIPAddressSkuTierRegional), + } +} + +func (s *PublicIPAddressSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuTier(input string) (*PublicIPAddressSkuTier, error) { + vals := map[string]PublicIPAddressSkuTier{ + "global": PublicIPAddressSkuTierGlobal, + "regional": PublicIPAddressSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuTier(input) + return &out, nil +} + +type RouteNextHopType string + +const ( + RouteNextHopTypeInternet RouteNextHopType = "Internet" + RouteNextHopTypeNone RouteNextHopType = "None" + RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" + RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" + RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" +) + +func PossibleValuesForRouteNextHopType() []string { + return []string{ + string(RouteNextHopTypeInternet), + string(RouteNextHopTypeNone), + string(RouteNextHopTypeVirtualAppliance), + string(RouteNextHopTypeVirtualNetworkGateway), + string(RouteNextHopTypeVnetLocal), + } +} + +func (s *RouteNextHopType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteNextHopType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteNextHopType(input string) (*RouteNextHopType, error) { + vals := map[string]RouteNextHopType{ + "internet": RouteNextHopTypeInternet, + "none": RouteNextHopTypeNone, + "virtualappliance": RouteNextHopTypeVirtualAppliance, + "virtualnetworkgateway": RouteNextHopTypeVirtualNetworkGateway, + "vnetlocal": RouteNextHopTypeVnetLocal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteNextHopType(input) + return &out, nil +} + +type SecurityRuleAccess string + +const ( + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +func PossibleValuesForSecurityRuleAccess() []string { + return []string{ + string(SecurityRuleAccessAllow), + string(SecurityRuleAccessDeny), + } +} + +func (s *SecurityRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleAccess(input string) (*SecurityRuleAccess, error) { + vals := map[string]SecurityRuleAccess{ + "allow": SecurityRuleAccessAllow, + "deny": SecurityRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleAccess(input) + return &out, nil +} + +type SecurityRuleDirection string + +const ( + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityRuleDirection() []string { + return []string{ + string(SecurityRuleDirectionInbound), + string(SecurityRuleDirectionOutbound), + } +} + +func (s *SecurityRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleDirection(input string) (*SecurityRuleDirection, error) { + vals := map[string]SecurityRuleDirection{ + "inbound": SecurityRuleDirectionInbound, + "outbound": SecurityRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleDirection(input) + return &out, nil +} + +type SecurityRuleProtocol string + +const ( + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + SecurityRuleProtocolAny SecurityRuleProtocol = "*" + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + SecurityRuleProtocolTcp SecurityRuleProtocol = "Tcp" + SecurityRuleProtocolUdp SecurityRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityRuleProtocol() []string { + return []string{ + string(SecurityRuleProtocolAh), + string(SecurityRuleProtocolAny), + string(SecurityRuleProtocolEsp), + string(SecurityRuleProtocolIcmp), + string(SecurityRuleProtocolTcp), + string(SecurityRuleProtocolUdp), + } +} + +func (s *SecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleProtocol(input string) (*SecurityRuleProtocol, error) { + vals := map[string]SecurityRuleProtocol{ + "ah": SecurityRuleProtocolAh, + "*": SecurityRuleProtocolAny, + "esp": SecurityRuleProtocolEsp, + "icmp": SecurityRuleProtocolIcmp, + "tcp": SecurityRuleProtocolTcp, + "udp": SecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleProtocol(input) + return &out, nil +} + +type SharingScope string + +const ( + SharingScopeDelegatedServices SharingScope = "DelegatedServices" + SharingScopeTenant SharingScope = "Tenant" +) + +func PossibleValuesForSharingScope() []string { + return []string{ + string(SharingScopeDelegatedServices), + string(SharingScopeTenant), + } +} + +func (s *SharingScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSharingScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSharingScope(input string) (*SharingScope, error) { + vals := map[string]SharingScope{ + "delegatedservices": SharingScopeDelegatedServices, + "tenant": SharingScopeTenant, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SharingScope(input) + return &out, nil +} + +type SyncMode string + +const ( + SyncModeAutomatic SyncMode = "Automatic" + SyncModeManual SyncMode = "Manual" +) + +func PossibleValuesForSyncMode() []string { + return []string{ + string(SyncModeAutomatic), + string(SyncModeManual), + } +} + +func (s *SyncMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSyncMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSyncMode(input string) (*SyncMode, error) { + vals := map[string]SyncMode{ + "automatic": SyncModeAutomatic, + "manual": SyncModeManual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SyncMode(input) + return &out, nil +} + +type TransportProtocol string + +const ( + TransportProtocolAll TransportProtocol = "All" + TransportProtocolTcp TransportProtocol = "Tcp" + TransportProtocolUdp TransportProtocol = "Udp" +) + +func PossibleValuesForTransportProtocol() []string { + return []string{ + string(TransportProtocolAll), + string(TransportProtocolTcp), + string(TransportProtocolUdp), + } +} + +func (s *TransportProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseTransportProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseTransportProtocol(input string) (*TransportProtocol, error) { + vals := map[string]TransportProtocol{ + "all": TransportProtocolAll, + "tcp": TransportProtocolTcp, + "udp": TransportProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := TransportProtocol(input) + return &out, nil +} + +type VirtualNetworkPrivateEndpointNetworkPolicies string + +const ( + VirtualNetworkPrivateEndpointNetworkPoliciesDisabled VirtualNetworkPrivateEndpointNetworkPolicies = "Disabled" + VirtualNetworkPrivateEndpointNetworkPoliciesEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "Enabled" + VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "NetworkSecurityGroupEnabled" + VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "RouteTableEnabled" +) + +func PossibleValuesForVirtualNetworkPrivateEndpointNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateEndpointNetworkPoliciesDisabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled), + } +} + +func (s *VirtualNetworkPrivateEndpointNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateEndpointNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateEndpointNetworkPolicies(input string) (*VirtualNetworkPrivateEndpointNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateEndpointNetworkPolicies{ + "disabled": VirtualNetworkPrivateEndpointNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateEndpointNetworkPoliciesEnabled, + "networksecuritygroupenabled": VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled, + "routetableenabled": VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateEndpointNetworkPolicies(input) + return &out, nil +} + +type VirtualNetworkPrivateLinkServiceNetworkPolicies string + +const ( + VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Disabled" + VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Enabled" +) + +func PossibleValuesForVirtualNetworkPrivateLinkServiceNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled), + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled), + } +} + +func (s *VirtualNetworkPrivateLinkServiceNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateLinkServiceNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateLinkServiceNetworkPolicies(input string) (*VirtualNetworkPrivateLinkServiceNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateLinkServiceNetworkPolicies{ + "disabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateLinkServiceNetworkPolicies(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/subnets/method_createorupdate.go b/resource-manager/network/2024-01-01/subnets/method_createorupdate.go new file mode 100644 index 00000000000..2f47359f975 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/method_createorupdate.go @@ -0,0 +1,76 @@ +package subnets + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *Subnet +} + +// CreateOrUpdate ... +func (c SubnetsClient) CreateOrUpdate(ctx context.Context, id commonids.SubnetId, input Subnet) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c SubnetsClient) CreateOrUpdateThenPoll(ctx context.Context, id commonids.SubnetId, input Subnet) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/subnets/method_delete.go b/resource-manager/network/2024-01-01/subnets/method_delete.go new file mode 100644 index 00000000000..8be424289f0 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/method_delete.go @@ -0,0 +1,72 @@ +package subnets + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c SubnetsClient) Delete(ctx context.Context, id commonids.SubnetId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c SubnetsClient) DeleteThenPoll(ctx context.Context, id commonids.SubnetId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/subnets/method_get.go b/resource-manager/network/2024-01-01/subnets/method_get.go new file mode 100644 index 00000000000..f43b6e2df8f --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/method_get.go @@ -0,0 +1,84 @@ +package subnets + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *Subnet +} + +type GetOperationOptions struct { + Expand *string +} + +func DefaultGetOperationOptions() GetOperationOptions { + return GetOperationOptions{} +} + +func (o GetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// Get ... +func (c SubnetsClient) Get(ctx context.Context, id commonids.SubnetId, options GetOperationOptions) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model Subnet + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/subnets/method_list.go b/resource-manager/network/2024-01-01/subnets/method_list.go new file mode 100644 index 00000000000..9d636728719 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/method_list.go @@ -0,0 +1,93 @@ +package subnets + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]Subnet +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []Subnet +} + +// List ... +func (c SubnetsClient) List(ctx context.Context, id commonids.VirtualNetworkId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/subnets", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]Subnet `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c SubnetsClient) ListComplete(ctx context.Context, id commonids.VirtualNetworkId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, SubnetOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c SubnetsClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.VirtualNetworkId, predicate SubnetOperationPredicate) (result ListCompleteResult, err error) { + items := make([]Subnet, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/subnets/model_applicationgatewaybackendaddress.go b/resource-manager/network/2024-01-01/subnets/model_applicationgatewaybackendaddress.go new file mode 100644 index 00000000000..3788306fb6c --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_applicationgatewaybackendaddress.go @@ -0,0 +1,9 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddress struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_applicationgatewaybackendaddresspool.go b/resource-manager/network/2024-01-01/subnets/model_applicationgatewaybackendaddresspool.go new file mode 100644 index 00000000000..916f79f9c4c --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_applicationgatewaybackendaddresspool.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_applicationgatewaybackendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_applicationgatewaybackendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..5cb3ab5e50f --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_applicationgatewaybackendaddresspoolpropertiesformat.go @@ -0,0 +1,10 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPoolPropertiesFormat struct { + BackendAddresses *[]ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"` + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_applicationgatewayipconfiguration.go b/resource-manager/network/2024-01-01/subnets/model_applicationgatewayipconfiguration.go new file mode 100644 index 00000000000..2064f06b67c --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_applicationgatewayipconfiguration.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_applicationgatewayipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_applicationgatewayipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..ba5d67b2ce4 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_applicationgatewayipconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/subnets/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..2b7038a9661 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..0444d465786 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_backendaddresspool.go b/resource-manager/network/2024-01-01/subnets/model_backendaddresspool.go new file mode 100644 index 00000000000..8549e5db3a8 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_backendaddresspool.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_backendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_backendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..561224fe97e --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_backendaddresspoolpropertiesformat.go @@ -0,0 +1,19 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPoolPropertiesFormat struct { + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + DrainPeriodInSeconds *int64 `json:"drainPeriodInSeconds,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancerBackendAddresses *[]LoadBalancerBackendAddress `json:"loadBalancerBackendAddresses,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + Location *string `json:"location,omitempty"` + OutboundRule *SubResource `json:"outboundRule,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SyncMode *SyncMode `json:"syncMode,omitempty"` + TunnelInterfaces *[]GatewayLoadBalancerTunnelInterface `json:"tunnelInterfaces,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_customdnsconfigpropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_customdnsconfigpropertiesformat.go new file mode 100644 index 00000000000..b8332f10ecf --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_customdnsconfigpropertiesformat.go @@ -0,0 +1,9 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomDnsConfigPropertiesFormat struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_ddossettings.go b/resource-manager/network/2024-01-01/subnets/model_ddossettings.go new file mode 100644 index 00000000000..d48851a6ba1 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_ddossettings.go @@ -0,0 +1,9 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettings struct { + DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"` + ProtectionMode *DdosSettingsProtectionMode `json:"protectionMode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_delegation.go b/resource-manager/network/2024-01-01/subnets/model_delegation.go new file mode 100644 index 00000000000..541d9d1d34b --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_delegation.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Delegation struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceDelegationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_flowlog.go b/resource-manager/network/2024-01-01/subnets/model_flowlog.go new file mode 100644 index 00000000000..e063f8c7730 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_flowlog.go @@ -0,0 +1,19 @@ +package subnets + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLog struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FlowLogPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/subnets/model_flowlogformatparameters.go new file mode 100644 index 00000000000..492844afa0c --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_flowlogpropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_flowlogpropertiesformat.go new file mode 100644 index 00000000000..a2a70e0c856 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_flowlogpropertiesformat.go @@ -0,0 +1,15 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogPropertiesFormat struct { + Enabled *bool `json:"enabled,omitempty"` + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` + TargetResourceGuid *string `json:"targetResourceGuid,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_frontendipconfiguration.go b/resource-manager/network/2024-01-01/subnets/model_frontendipconfiguration.go new file mode 100644 index 00000000000..f24121e7c39 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_frontendipconfiguration.go @@ -0,0 +1,17 @@ +package subnets + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_frontendipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_frontendipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..3c86535825a --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_frontendipconfigurationpropertiesformat.go @@ -0,0 +1,19 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfigurationPropertiesFormat struct { + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + InboundNatPools *[]SubResource `json:"inboundNatPools,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_gatewayloadbalancertunnelinterface.go b/resource-manager/network/2024-01-01/subnets/model_gatewayloadbalancertunnelinterface.go new file mode 100644 index 00000000000..3d2ff9b3010 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_gatewayloadbalancertunnelinterface.go @@ -0,0 +1,11 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayLoadBalancerTunnelInterface struct { + Identifier *int64 `json:"identifier,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *GatewayLoadBalancerTunnelProtocol `json:"protocol,omitempty"` + Type *GatewayLoadBalancerTunnelInterfaceType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_inboundnatrule.go b/resource-manager/network/2024-01-01/subnets/model_inboundnatrule.go new file mode 100644 index 00000000000..dd23aa7a490 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_inboundnatrule.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundNatRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_inboundnatrulepropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_inboundnatrulepropertiesformat.go new file mode 100644 index 00000000000..ac29e9fd37d --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_inboundnatrulepropertiesformat.go @@ -0,0 +1,19 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendIPConfiguration *NetworkInterfaceIPConfiguration `json:"backendIPConfiguration,omitempty"` + BackendPort *int64 `json:"backendPort,omitempty"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + FrontendPortRangeEnd *int64 `json:"frontendPortRangeEnd,omitempty"` + FrontendPortRangeStart *int64 `json:"frontendPortRangeStart,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol *TransportProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_ipconfiguration.go b/resource-manager/network/2024-01-01/subnets/model_ipconfiguration.go new file mode 100644 index 00000000000..3e2e5516ea9 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_ipconfiguration.go @@ -0,0 +1,11 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_ipconfigurationprofile.go b/resource-manager/network/2024-01-01/subnets/model_ipconfigurationprofile.go new file mode 100644 index 00000000000..a4d5be3c038 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_ipconfigurationprofile.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationProfilePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_ipconfigurationprofilepropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_ipconfigurationprofilepropertiesformat.go new file mode 100644 index 00000000000..bfb28994f14 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_ipconfigurationprofilepropertiesformat.go @@ -0,0 +1,9 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfilePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_ipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_ipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..4814acb3e8e --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_ipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_iptag.go b/resource-manager/network/2024-01-01/subnets/model_iptag.go new file mode 100644 index 00000000000..8ccc055cb31 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_iptag.go @@ -0,0 +1,9 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPTag struct { + IPTagType *string `json:"ipTagType,omitempty"` + Tag *string `json:"tag,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_loadbalancerbackendaddress.go b/resource-manager/network/2024-01-01/subnets/model_loadbalancerbackendaddress.go new file mode 100644 index 00000000000..e3b148912e3 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_loadbalancerbackendaddress.go @@ -0,0 +1,9 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddress struct { + Name *string `json:"name,omitempty"` + Properties *LoadBalancerBackendAddressPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_loadbalancerbackendaddresspropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_loadbalancerbackendaddresspropertiesformat.go new file mode 100644 index 00000000000..ee7815f178d --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_loadbalancerbackendaddresspropertiesformat.go @@ -0,0 +1,14 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPropertiesFormat struct { + AdminState *LoadBalancerBackendAddressAdminState `json:"adminState,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + InboundNatRulesPortMapping *[]NatRulePortMapping `json:"inboundNatRulesPortMapping,omitempty"` + LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIPConfiguration,omitempty"` + NetworkInterfaceIPConfiguration *SubResource `json:"networkInterfaceIPConfiguration,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_natgateway.go b/resource-manager/network/2024-01-01/subnets/model_natgateway.go new file mode 100644 index 00000000000..9a8fad20def --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_natgateway.go @@ -0,0 +1,20 @@ +package subnets + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"` + Sku *NatGatewaySku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_natgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_natgatewaypropertiesformat.go new file mode 100644 index 00000000000..e9043897c52 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_natgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayPropertiesFormat struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]SubResource `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_natgatewaysku.go b/resource-manager/network/2024-01-01/subnets/model_natgatewaysku.go new file mode 100644 index 00000000000..617e7c19ff3 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_natgatewaysku.go @@ -0,0 +1,8 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySku struct { + Name *NatGatewaySkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_natruleportmapping.go b/resource-manager/network/2024-01-01/subnets/model_natruleportmapping.go new file mode 100644 index 00000000000..1e546cf811d --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_natruleportmapping.go @@ -0,0 +1,10 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulePortMapping struct { + BackendPort *int64 `json:"backendPort,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + InboundNatRuleName *string `json:"inboundNatRuleName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_networkinterface.go b/resource-manager/network/2024-01-01/subnets/model_networkinterface.go new file mode 100644 index 00000000000..06d849fad90 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_networkinterface.go @@ -0,0 +1,19 @@ +package subnets + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterface struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfacePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_networkinterfacednssettings.go b/resource-manager/network/2024-01-01/subnets/model_networkinterfacednssettings.go new file mode 100644 index 00000000000..67fcb29afe7 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_networkinterfacednssettings.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceDnsSettings struct { + AppliedDnsServers *[]string `json:"appliedDnsServers,omitempty"` + DnsServers *[]string `json:"dnsServers,omitempty"` + InternalDnsNameLabel *string `json:"internalDnsNameLabel,omitempty"` + InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty"` + InternalFqdn *string `json:"internalFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_networkinterfaceipconfiguration.go b/resource-manager/network/2024-01-01/subnets/model_networkinterfaceipconfiguration.go new file mode 100644 index 00000000000..dea0691831d --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_networkinterfaceipconfiguration.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go b/resource-manager/network/2024-01-01/subnets/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go new file mode 100644 index 00000000000..51e7195920f --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go @@ -0,0 +1,10 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties struct { + Fqdns *[]string `json:"fqdns,omitempty"` + GroupId *string `json:"groupId,omitempty"` + RequiredMemberName *string `json:"requiredMemberName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_networkinterfaceipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_networkinterfaceipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..a1064b425b9 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_networkinterfaceipconfigurationpropertiesformat.go @@ -0,0 +1,22 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPropertiesFormat struct { + ApplicationGatewayBackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"applicationGatewayBackendAddressPools,omitempty"` + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + LoadBalancerBackendAddressPools *[]BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"` + LoadBalancerInboundNatRules *[]InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressPrefixLength *int64 `json:"privateIPAddressPrefixLength,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + PrivateLinkConnectionProperties *NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties `json:"privateLinkConnectionProperties,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` + VirtualNetworkTaps *[]VirtualNetworkTap `json:"virtualNetworkTaps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_networkinterfacepropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_networkinterfacepropertiesformat.go new file mode 100644 index 00000000000..dadc9421016 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_networkinterfacepropertiesformat.go @@ -0,0 +1,29 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfacePropertiesFormat struct { + AuxiliaryMode *NetworkInterfaceAuxiliaryMode `json:"auxiliaryMode,omitempty"` + AuxiliarySku *NetworkInterfaceAuxiliarySku `json:"auxiliarySku,omitempty"` + DisableTcpStateTracking *bool `json:"disableTcpStateTracking,omitempty"` + DnsSettings *NetworkInterfaceDnsSettings `json:"dnsSettings,omitempty"` + DscpConfiguration *SubResource `json:"dscpConfiguration,omitempty"` + EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"` + EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"` + HostedWorkloads *[]string `json:"hostedWorkloads,omitempty"` + IPConfigurations *[]NetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + MacAddress *string `json:"macAddress,omitempty"` + MigrationPhase *NetworkInterfaceMigrationPhase `json:"migrationPhase,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + NicType *NetworkInterfaceNicType `json:"nicType,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkService *PrivateLinkService `json:"privateLinkService,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + TapConfigurations *[]NetworkInterfaceTapConfiguration `json:"tapConfigurations,omitempty"` + VirtualMachine *SubResource `json:"virtualMachine,omitempty"` + VnetEncryptionSupported *bool `json:"vnetEncryptionSupported,omitempty"` + WorkloadType *string `json:"workloadType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_networkinterfacetapconfiguration.go b/resource-manager/network/2024-01-01/subnets/model_networkinterfacetapconfiguration.go new file mode 100644 index 00000000000..2cd16be245c --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_networkinterfacetapconfiguration.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceTapConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_networkinterfacetapconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_networkinterfacetapconfigurationpropertiesformat.go new file mode 100644 index 00000000000..1bc23cee100 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_networkinterfacetapconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualNetworkTap *VirtualNetworkTap `json:"virtualNetworkTap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_networksecuritygroup.go b/resource-manager/network/2024-01-01/subnets/model_networksecuritygroup.go new file mode 100644 index 00000000000..fa06f5f24cc --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_networksecuritygroup.go @@ -0,0 +1,14 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_networksecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_networksecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..da7b074dbbf --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_networksecuritygrouppropertiesformat.go @@ -0,0 +1,15 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupPropertiesFormat struct { + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + FlowLogs *[]FlowLog `json:"flowLogs,omitempty"` + FlushConnection *bool `json:"flushConnection,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_privateendpoint.go b/resource-manager/network/2024-01-01/subnets/model_privateendpoint.go new file mode 100644 index 00000000000..4fa549c3b13 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_privateendpoint.go @@ -0,0 +1,19 @@ +package subnets + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpoint struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_privateendpointconnection.go b/resource-manager/network/2024-01-01/subnets/model_privateendpointconnection.go new file mode 100644 index 00000000000..1e354419cca --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_privateendpointconnection.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_privateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/subnets/model_privateendpointconnectionproperties.go new file mode 100644 index 00000000000..ff12b5a54fc --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_privateendpointconnectionproperties.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateEndpointLocation *string `json:"privateEndpointLocation,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_privateendpointipconfiguration.go b/resource-manager/network/2024-01-01/subnets/model_privateendpointipconfiguration.go new file mode 100644 index 00000000000..20625cb09d3 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_privateendpointipconfiguration.go @@ -0,0 +1,11 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_privateendpointipconfigurationproperties.go b/resource-manager/network/2024-01-01/subnets/model_privateendpointipconfigurationproperties.go new file mode 100644 index 00000000000..5d90f3c61bf --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_privateendpointipconfigurationproperties.go @@ -0,0 +1,10 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfigurationProperties struct { + GroupId *string `json:"groupId,omitempty"` + MemberName *string `json:"memberName,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_privateendpointproperties.go b/resource-manager/network/2024-01-01/subnets/model_privateendpointproperties.go new file mode 100644 index 00000000000..4913ece3049 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_privateendpointproperties.go @@ -0,0 +1,16 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointProperties struct { + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + CustomDnsConfigs *[]CustomDnsConfigPropertiesFormat `json:"customDnsConfigs,omitempty"` + CustomNetworkInterfaceName *string `json:"customNetworkInterfaceName,omitempty"` + IPConfigurations *[]PrivateEndpointIPConfiguration `json:"ipConfigurations,omitempty"` + ManualPrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"manualPrivateLinkServiceConnections,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"privateLinkServiceConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_privatelinkservice.go b/resource-manager/network/2024-01-01/subnets/model_privatelinkservice.go new file mode 100644 index 00000000000..34c00e7cffb --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_privatelinkservice.go @@ -0,0 +1,19 @@ +package subnets + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkService struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_privatelinkserviceconnection.go b/resource-manager/network/2024-01-01/subnets/model_privatelinkserviceconnection.go new file mode 100644 index 00000000000..af937a19eda --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_privatelinkserviceconnection.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_privatelinkserviceconnectionproperties.go b/resource-manager/network/2024-01-01/subnets/model_privatelinkserviceconnectionproperties.go new file mode 100644 index 00000000000..d6ad965c136 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_privatelinkserviceconnectionproperties.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionProperties struct { + GroupIds *[]string `json:"groupIds,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + PrivateLinkServiceId *string `json:"privateLinkServiceId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestMessage *string `json:"requestMessage,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_privatelinkserviceconnectionstate.go b/resource-manager/network/2024-01-01/subnets/model_privatelinkserviceconnectionstate.go new file mode 100644 index 00000000000..4072e649f7a --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_privatelinkserviceconnectionstate.go @@ -0,0 +1,10 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionState struct { + ActionsRequired *string `json:"actionsRequired,omitempty"` + Description *string `json:"description,omitempty"` + Status *string `json:"status,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_privatelinkserviceipconfiguration.go b/resource-manager/network/2024-01-01/subnets/model_privatelinkserviceipconfiguration.go new file mode 100644 index 00000000000..c48e1e87c65 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_privatelinkserviceipconfiguration.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_privatelinkserviceipconfigurationproperties.go b/resource-manager/network/2024-01-01/subnets/model_privatelinkserviceipconfigurationproperties.go new file mode 100644 index 00000000000..eccb8844155 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_privatelinkserviceipconfigurationproperties.go @@ -0,0 +1,13 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_privatelinkserviceproperties.go b/resource-manager/network/2024-01-01/subnets/model_privatelinkserviceproperties.go new file mode 100644 index 00000000000..0f4d213769b --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_privatelinkserviceproperties.go @@ -0,0 +1,17 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceProperties struct { + Alias *string `json:"alias,omitempty"` + AutoApproval *ResourceSet `json:"autoApproval,omitempty"` + EnableProxyProtocol *bool `json:"enableProxyProtocol,omitempty"` + Fqdns *[]string `json:"fqdns,omitempty"` + IPConfigurations *[]PrivateLinkServiceIPConfiguration `json:"ipConfigurations,omitempty"` + LoadBalancerFrontendIPConfigurations *[]FrontendIPConfiguration `json:"loadBalancerFrontendIpConfigurations,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Visibility *ResourceSet `json:"visibility,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_publicipaddress.go b/resource-manager/network/2024-01-01/subnets/model_publicipaddress.go new file mode 100644 index 00000000000..9931f78d236 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_publicipaddress.go @@ -0,0 +1,22 @@ +package subnets + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddress struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PublicIPAddressPropertiesFormat `json:"properties,omitempty"` + Sku *PublicIPAddressSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_publicipaddressdnssettings.go b/resource-manager/network/2024-01-01/subnets/model_publicipaddressdnssettings.go new file mode 100644 index 00000000000..d002238e788 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_publicipaddressdnssettings.go @@ -0,0 +1,11 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressDnsSettings struct { + DomainNameLabel *string `json:"domainNameLabel,omitempty"` + DomainNameLabelScope *PublicIPAddressDnsSettingsDomainNameLabelScope `json:"domainNameLabelScope,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + ReverseFqdn *string `json:"reverseFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_publicipaddresspropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_publicipaddresspropertiesformat.go new file mode 100644 index 00000000000..c8c5eb4251a --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_publicipaddresspropertiesformat.go @@ -0,0 +1,23 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressPropertiesFormat struct { + DdosSettings *DdosSettings `json:"ddosSettings,omitempty"` + DeleteOption *DeleteOptions `json:"deleteOption,omitempty"` + DnsSettings *PublicIPAddressDnsSettings `json:"dnsSettings,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty"` + IPTags *[]IPTag `json:"ipTags,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + LinkedPublicIPAddress *PublicIPAddress `json:"linkedPublicIPAddress,omitempty"` + MigrationPhase *PublicIPAddressMigrationPhase `json:"migrationPhase,omitempty"` + NatGateway *NatGateway `json:"natGateway,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"` + PublicIPAllocationMethod *IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServicePublicIPAddress *PublicIPAddress `json:"servicePublicIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_publicipaddresssku.go b/resource-manager/network/2024-01-01/subnets/model_publicipaddresssku.go new file mode 100644 index 00000000000..21dd8f7d664 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_publicipaddresssku.go @@ -0,0 +1,9 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressSku struct { + Name *PublicIPAddressSkuName `json:"name,omitempty"` + Tier *PublicIPAddressSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_resourcenavigationlink.go b/resource-manager/network/2024-01-01/subnets/model_resourcenavigationlink.go new file mode 100644 index 00000000000..fcd37a760e6 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_resourcenavigationlink.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ResourceNavigationLinkFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_resourcenavigationlinkformat.go b/resource-manager/network/2024-01-01/subnets/model_resourcenavigationlinkformat.go new file mode 100644 index 00000000000..103426fc9c3 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_resourcenavigationlinkformat.go @@ -0,0 +1,10 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLinkFormat struct { + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_resourceset.go b/resource-manager/network/2024-01-01/subnets/model_resourceset.go new file mode 100644 index 00000000000..5daeebab425 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_resourceset.go @@ -0,0 +1,8 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceSet struct { + Subscriptions *[]string `json:"subscriptions,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/subnets/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..8ea922b85fe --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_route.go b/resource-manager/network/2024-01-01/subnets/model_route.go new file mode 100644 index 00000000000..e40ded16b00 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_route.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Route struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RoutePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_routepropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_routepropertiesformat.go new file mode 100644 index 00000000000..c87b62acaed --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_routepropertiesformat.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutePropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + HasBgpOverride *bool `json:"hasBgpOverride,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + NextHopType RouteNextHopType `json:"nextHopType"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_routetable.go b/resource-manager/network/2024-01-01/subnets/model_routetable.go new file mode 100644 index 00000000000..6bb137b8242 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_routetable.go @@ -0,0 +1,14 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTable struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteTablePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_routetablepropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_routetablepropertiesformat.go new file mode 100644 index 00000000000..07d88ea8a30 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_routetablepropertiesformat.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTablePropertiesFormat struct { + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Routes *[]Route `json:"routes,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_securityrule.go b/resource-manager/network/2024-01-01/subnets/model_securityrule.go new file mode 100644 index 00000000000..70772203f7b --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_securityrule.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_securityrulepropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_securityrulepropertiesformat.go new file mode 100644 index 00000000000..cad2dbd820c --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_securityrulepropertiesformat.go @@ -0,0 +1,23 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulePropertiesFormat struct { + Access SecurityRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction SecurityRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_serviceassociationlink.go b/resource-manager/network/2024-01-01/subnets/model_serviceassociationlink.go new file mode 100644 index 00000000000..c82eae5ac15 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_serviceassociationlink.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceAssociationLinkPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_serviceassociationlinkpropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_serviceassociationlinkpropertiesformat.go new file mode 100644 index 00000000000..f1a92b71485 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_serviceassociationlinkpropertiesformat.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLinkPropertiesFormat struct { + AllowDelete *bool `json:"allowDelete,omitempty"` + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + Locations *[]string `json:"locations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_servicedelegationpropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_servicedelegationpropertiesformat.go new file mode 100644 index 00000000000..1680e52b8a1 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_servicedelegationpropertiesformat.go @@ -0,0 +1,10 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceDelegationPropertiesFormat struct { + Actions *[]string `json:"actions,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_serviceendpointpolicy.go b/resource-manager/network/2024-01-01/subnets/model_serviceendpointpolicy.go new file mode 100644 index 00000000000..68813a7b3e8 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_serviceendpointpolicy.go @@ -0,0 +1,15 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Kind *string `json:"kind,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_serviceendpointpolicydefinition.go b/resource-manager/network/2024-01-01/subnets/model_serviceendpointpolicydefinition.go new file mode 100644 index 00000000000..8fa72c305ed --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_serviceendpointpolicydefinition.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinition struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_serviceendpointpolicydefinitionpropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_serviceendpointpolicydefinitionpropertiesformat.go new file mode 100644 index 00000000000..b7b56f401a8 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_serviceendpointpolicydefinitionpropertiesformat.go @@ -0,0 +1,11 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionPropertiesFormat struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` + ServiceResources *[]string `json:"serviceResources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_serviceendpointpolicypropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_serviceendpointpolicypropertiesformat.go new file mode 100644 index 00000000000..5e0804aa438 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_serviceendpointpolicypropertiesformat.go @@ -0,0 +1,13 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyPropertiesFormat struct { + ContextualServiceEndpointPolicies *[]string `json:"contextualServiceEndpointPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServiceAlias *string `json:"serviceAlias,omitempty"` + ServiceEndpointPolicyDefinitions *[]ServiceEndpointPolicyDefinition `json:"serviceEndpointPolicyDefinitions,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_serviceendpointpropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_serviceendpointpropertiesformat.go new file mode 100644 index 00000000000..e3835d75d21 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_serviceendpointpropertiesformat.go @@ -0,0 +1,11 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPropertiesFormat struct { + Locations *[]string `json:"locations,omitempty"` + NetworkIdentifier *SubResource `json:"networkIdentifier,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_subnet.go b/resource-manager/network/2024-01-01/subnets/model_subnet.go new file mode 100644 index 00000000000..820673d7c16 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_subnet.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Subnet struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SubnetPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_subnetpropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_subnetpropertiesformat.go new file mode 100644 index 00000000000..23fdab8b9ae --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_subnetpropertiesformat.go @@ -0,0 +1,28 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + ApplicationGatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"applicationGatewayIPConfigurations,omitempty"` + DefaultOutboundAccess *bool `json:"defaultOutboundAccess,omitempty"` + Delegations *[]Delegation `json:"delegations,omitempty"` + IPAllocations *[]SubResource `json:"ipAllocations,omitempty"` + IPConfigurationProfiles *[]IPConfigurationProfile `json:"ipConfigurationProfiles,omitempty"` + IPConfigurations *[]IPConfiguration `json:"ipConfigurations,omitempty"` + NatGateway *SubResource `json:"natGateway,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + PrivateEndpointNetworkPolicies *VirtualNetworkPrivateEndpointNetworkPolicies `json:"privateEndpointNetworkPolicies,omitempty"` + PrivateEndpoints *[]PrivateEndpoint `json:"privateEndpoints,omitempty"` + PrivateLinkServiceNetworkPolicies *VirtualNetworkPrivateLinkServiceNetworkPolicies `json:"privateLinkServiceNetworkPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Purpose *string `json:"purpose,omitempty"` + ResourceNavigationLinks *[]ResourceNavigationLink `json:"resourceNavigationLinks,omitempty"` + RouteTable *RouteTable `json:"routeTable,omitempty"` + ServiceAssociationLinks *[]ServiceAssociationLink `json:"serviceAssociationLinks,omitempty"` + ServiceEndpointPolicies *[]ServiceEndpointPolicy `json:"serviceEndpointPolicies,omitempty"` + ServiceEndpoints *[]ServiceEndpointPropertiesFormat `json:"serviceEndpoints,omitempty"` + SharingScope *SharingScope `json:"sharingScope,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_subresource.go b/resource-manager/network/2024-01-01/subnets/model_subresource.go new file mode 100644 index 00000000000..d986a303819 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_subresource.go @@ -0,0 +1,8 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/subnets/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..e93599e3f9c --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/subnets/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..fa6abc84aef --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_virtualnetworktap.go b/resource-manager/network/2024-01-01/subnets/model_virtualnetworktap.go new file mode 100644 index 00000000000..f9e8be401f9 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_virtualnetworktap.go @@ -0,0 +1,14 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkTapPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/model_virtualnetworktappropertiesformat.go b/resource-manager/network/2024-01-01/subnets/model_virtualnetworktappropertiesformat.go new file mode 100644 index 00000000000..c8b60852b33 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/model_virtualnetworktappropertiesformat.go @@ -0,0 +1,13 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapPropertiesFormat struct { + DestinationLoadBalancerFrontEndIPConfiguration *FrontendIPConfiguration `json:"destinationLoadBalancerFrontEndIPConfiguration,omitempty"` + DestinationNetworkInterfaceIPConfiguration *NetworkInterfaceIPConfiguration `json:"destinationNetworkInterfaceIPConfiguration,omitempty"` + DestinationPort *int64 `json:"destinationPort,omitempty"` + NetworkInterfaceTapConfigurations *[]NetworkInterfaceTapConfiguration `json:"networkInterfaceTapConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/subnets/predicates.go b/resource-manager/network/2024-01-01/subnets/predicates.go new file mode 100644 index 00000000000..33b8979e3cc --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/predicates.go @@ -0,0 +1,32 @@ +package subnets + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p SubnetOperationPredicate) Matches(input Subnet) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/subnets/version.go b/resource-manager/network/2024-01-01/subnets/version.go new file mode 100644 index 00000000000..dee7e7bc526 --- /dev/null +++ b/resource-manager/network/2024-01-01/subnets/version.go @@ -0,0 +1,12 @@ +package subnets + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/subnets/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/trafficanalytics/README.md b/resource-manager/network/2024-01-01/trafficanalytics/README.md new file mode 100644 index 00000000000..f947af5dc65 --- /dev/null +++ b/resource-manager/network/2024-01-01/trafficanalytics/README.md @@ -0,0 +1,54 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/trafficanalytics` Documentation + +The `trafficanalytics` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/trafficanalytics" +``` + + +### Client Initialization + +```go +client := trafficanalytics.NewTrafficAnalyticsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `TrafficAnalyticsClient.NetworkWatchersGetFlowLogStatus` + +```go +ctx := context.TODO() +id := trafficanalytics.NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + +payload := trafficanalytics.FlowLogStatusParameters{ + // ... +} + + +if err := client.NetworkWatchersGetFlowLogStatusThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `TrafficAnalyticsClient.NetworkWatchersSetFlowLogConfiguration` + +```go +ctx := context.TODO() +id := trafficanalytics.NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + +payload := trafficanalytics.FlowLogInformation{ + // ... +} + + +if err := client.NetworkWatchersSetFlowLogConfigurationThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` diff --git a/resource-manager/network/2024-01-01/trafficanalytics/client.go b/resource-manager/network/2024-01-01/trafficanalytics/client.go new file mode 100644 index 00000000000..78e1d6ab331 --- /dev/null +++ b/resource-manager/network/2024-01-01/trafficanalytics/client.go @@ -0,0 +1,26 @@ +package trafficanalytics + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsClient struct { + Client *resourcemanager.Client +} + +func NewTrafficAnalyticsClientWithBaseURI(sdkApi sdkEnv.Api) (*TrafficAnalyticsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "trafficanalytics", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating TrafficAnalyticsClient: %+v", err) + } + + return &TrafficAnalyticsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/trafficanalytics/constants.go b/resource-manager/network/2024-01-01/trafficanalytics/constants.go new file mode 100644 index 00000000000..54031e636e9 --- /dev/null +++ b/resource-manager/network/2024-01-01/trafficanalytics/constants.go @@ -0,0 +1,48 @@ +package trafficanalytics + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/trafficanalytics/id_networkwatcher.go b/resource-manager/network/2024-01-01/trafficanalytics/id_networkwatcher.go new file mode 100644 index 00000000000..f13408f03b5 --- /dev/null +++ b/resource-manager/network/2024-01-01/trafficanalytics/id_networkwatcher.go @@ -0,0 +1,130 @@ +package trafficanalytics + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NetworkWatcherId{}) +} + +var _ resourceids.ResourceId = &NetworkWatcherId{} + +// NetworkWatcherId is a struct representing the Resource ID for a Network Watcher +type NetworkWatcherId struct { + SubscriptionId string + ResourceGroupName string + NetworkWatcherName string +} + +// NewNetworkWatcherID returns a new NetworkWatcherId struct +func NewNetworkWatcherID(subscriptionId string, resourceGroupName string, networkWatcherName string) NetworkWatcherId { + return NetworkWatcherId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkWatcherName: networkWatcherName, + } +} + +// ParseNetworkWatcherID parses 'input' into a NetworkWatcherId +func ParseNetworkWatcherID(input string) (*NetworkWatcherId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkWatcherId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkWatcherId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNetworkWatcherIDInsensitively parses 'input' case-insensitively into a NetworkWatcherId +// note: this method should only be used for API response data and not user input +func ParseNetworkWatcherIDInsensitively(input string) (*NetworkWatcherId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkWatcherId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkWatcherId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NetworkWatcherId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkWatcherName, ok = input.Parsed["networkWatcherName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkWatcherName", input) + } + + return nil +} + +// ValidateNetworkWatcherID checks that 'input' can be parsed as a Network Watcher ID +func ValidateNetworkWatcherID(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 := ParseNetworkWatcherID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Network Watcher ID +func (id NetworkWatcherId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkWatchers/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkWatcherName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Network Watcher ID +func (id NetworkWatcherId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkWatchers", "networkWatchers", "networkWatchers"), + resourceids.UserSpecifiedSegment("networkWatcherName", "networkWatcherValue"), + } +} + +// String returns a human-readable description of this Network Watcher ID +func (id NetworkWatcherId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Watcher Name: %q", id.NetworkWatcherName), + } + return fmt.Sprintf("Network Watcher (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/trafficanalytics/id_networkwatcher_test.go b/resource-manager/network/2024-01-01/trafficanalytics/id_networkwatcher_test.go new file mode 100644 index 00000000000..8edd286c390 --- /dev/null +++ b/resource-manager/network/2024-01-01/trafficanalytics/id_networkwatcher_test.go @@ -0,0 +1,282 @@ +package trafficanalytics + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NetworkWatcherId{} + +func TestNewNetworkWatcherID(t *testing.T) { + id := NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkWatcherName != "networkWatcherValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkWatcherName'", id.NetworkWatcherName, "networkWatcherValue") + } +} + +func TestFormatNetworkWatcherID(t *testing.T) { + actual := NewNetworkWatcherID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkWatcherValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNetworkWatcherID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkWatcherId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue", + Expected: &NetworkWatcherId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkWatcherName: "networkWatcherValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkWatcherID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkWatcherName != v.Expected.NetworkWatcherName { + t.Fatalf("Expected %q but got %q for NetworkWatcherName", v.Expected.NetworkWatcherName, actual.NetworkWatcherName) + } + + } +} + +func TestParseNetworkWatcherIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkWatcherId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue", + Expected: &NetworkWatcherId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkWatcherName: "networkWatcherValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkWatchers/networkWatcherValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs/nEtWoRkWaTcHeRvAlUe", + Expected: &NetworkWatcherId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkWatcherName: "nEtWoRkWaTcHeRvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkWaTcHeRs/nEtWoRkWaTcHeRvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkWatcherIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkWatcherName != v.Expected.NetworkWatcherName { + t.Fatalf("Expected %q but got %q for NetworkWatcherName", v.Expected.NetworkWatcherName, actual.NetworkWatcherName) + } + + } +} + +func TestSegmentsForNetworkWatcherId(t *testing.T) { + segments := NetworkWatcherId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NetworkWatcherId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/trafficanalytics/method_networkwatchersgetflowlogstatus.go b/resource-manager/network/2024-01-01/trafficanalytics/method_networkwatchersgetflowlogstatus.go new file mode 100644 index 00000000000..279a26b8a48 --- /dev/null +++ b/resource-manager/network/2024-01-01/trafficanalytics/method_networkwatchersgetflowlogstatus.go @@ -0,0 +1,75 @@ +package trafficanalytics + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkWatchersGetFlowLogStatusOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *FlowLogInformation +} + +// NetworkWatchersGetFlowLogStatus ... +func (c TrafficAnalyticsClient) NetworkWatchersGetFlowLogStatus(ctx context.Context, id NetworkWatcherId, input FlowLogStatusParameters) (result NetworkWatchersGetFlowLogStatusOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/queryFlowLogStatus", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// NetworkWatchersGetFlowLogStatusThenPoll performs NetworkWatchersGetFlowLogStatus then polls until it's completed +func (c TrafficAnalyticsClient) NetworkWatchersGetFlowLogStatusThenPoll(ctx context.Context, id NetworkWatcherId, input FlowLogStatusParameters) error { + result, err := c.NetworkWatchersGetFlowLogStatus(ctx, id, input) + if err != nil { + return fmt.Errorf("performing NetworkWatchersGetFlowLogStatus: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after NetworkWatchersGetFlowLogStatus: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/trafficanalytics/method_networkwatcherssetflowlogconfiguration.go b/resource-manager/network/2024-01-01/trafficanalytics/method_networkwatcherssetflowlogconfiguration.go new file mode 100644 index 00000000000..859ca423b3c --- /dev/null +++ b/resource-manager/network/2024-01-01/trafficanalytics/method_networkwatcherssetflowlogconfiguration.go @@ -0,0 +1,75 @@ +package trafficanalytics + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkWatchersSetFlowLogConfigurationOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *FlowLogInformation +} + +// NetworkWatchersSetFlowLogConfiguration ... +func (c TrafficAnalyticsClient) NetworkWatchersSetFlowLogConfiguration(ctx context.Context, id NetworkWatcherId, input FlowLogInformation) (result NetworkWatchersSetFlowLogConfigurationOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/configureFlowLog", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// NetworkWatchersSetFlowLogConfigurationThenPoll performs NetworkWatchersSetFlowLogConfiguration then polls until it's completed +func (c TrafficAnalyticsClient) NetworkWatchersSetFlowLogConfigurationThenPoll(ctx context.Context, id NetworkWatcherId, input FlowLogInformation) error { + result, err := c.NetworkWatchersSetFlowLogConfiguration(ctx, id, input) + if err != nil { + return fmt.Errorf("performing NetworkWatchersSetFlowLogConfiguration: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after NetworkWatchersSetFlowLogConfiguration: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/trafficanalytics/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/trafficanalytics/model_flowlogformatparameters.go new file mode 100644 index 00000000000..87ffe400a44 --- /dev/null +++ b/resource-manager/network/2024-01-01/trafficanalytics/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package trafficanalytics + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/trafficanalytics/model_flowloginformation.go b/resource-manager/network/2024-01-01/trafficanalytics/model_flowloginformation.go new file mode 100644 index 00000000000..c4dc94d99f7 --- /dev/null +++ b/resource-manager/network/2024-01-01/trafficanalytics/model_flowloginformation.go @@ -0,0 +1,15 @@ +package trafficanalytics + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogInformation struct { + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Properties FlowLogProperties `json:"properties"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/trafficanalytics/model_flowlogproperties.go b/resource-manager/network/2024-01-01/trafficanalytics/model_flowlogproperties.go new file mode 100644 index 00000000000..b26bd4b572a --- /dev/null +++ b/resource-manager/network/2024-01-01/trafficanalytics/model_flowlogproperties.go @@ -0,0 +1,11 @@ +package trafficanalytics + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogProperties struct { + Enabled bool `json:"enabled"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` +} diff --git a/resource-manager/network/2024-01-01/trafficanalytics/model_flowlogstatusparameters.go b/resource-manager/network/2024-01-01/trafficanalytics/model_flowlogstatusparameters.go new file mode 100644 index 00000000000..a066e2ad70a --- /dev/null +++ b/resource-manager/network/2024-01-01/trafficanalytics/model_flowlogstatusparameters.go @@ -0,0 +1,8 @@ +package trafficanalytics + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogStatusParameters struct { + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/trafficanalytics/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/trafficanalytics/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..b432d3a27f0 --- /dev/null +++ b/resource-manager/network/2024-01-01/trafficanalytics/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package trafficanalytics + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/trafficanalytics/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/trafficanalytics/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..01350bb98c2 --- /dev/null +++ b/resource-manager/network/2024-01-01/trafficanalytics/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package trafficanalytics + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/trafficanalytics/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/trafficanalytics/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..94df925e175 --- /dev/null +++ b/resource-manager/network/2024-01-01/trafficanalytics/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package trafficanalytics + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/trafficanalytics/version.go b/resource-manager/network/2024-01-01/trafficanalytics/version.go new file mode 100644 index 00000000000..0b4e4d6d39f --- /dev/null +++ b/resource-manager/network/2024-01-01/trafficanalytics/version.go @@ -0,0 +1,12 @@ +package trafficanalytics + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/trafficanalytics/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/usages/README.md b/resource-manager/network/2024-01-01/usages/README.md new file mode 100644 index 00000000000..07f39236cb6 --- /dev/null +++ b/resource-manager/network/2024-01-01/usages/README.md @@ -0,0 +1,37 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/usages` Documentation + +The `usages` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/usages" +``` + + +### Client Initialization + +```go +client := usages.NewUsagesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `UsagesClient.List` + +```go +ctx := context.TODO() +id := usages.NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/usages/client.go b/resource-manager/network/2024-01-01/usages/client.go new file mode 100644 index 00000000000..772d6a5be35 --- /dev/null +++ b/resource-manager/network/2024-01-01/usages/client.go @@ -0,0 +1,26 @@ +package usages + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UsagesClient struct { + Client *resourcemanager.Client +} + +func NewUsagesClientWithBaseURI(sdkApi sdkEnv.Api) (*UsagesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "usages", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating UsagesClient: %+v", err) + } + + return &UsagesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/usages/constants.go b/resource-manager/network/2024-01-01/usages/constants.go new file mode 100644 index 00000000000..0d8916ba5aa --- /dev/null +++ b/resource-manager/network/2024-01-01/usages/constants.go @@ -0,0 +1,48 @@ +package usages + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UsageUnit string + +const ( + UsageUnitCount UsageUnit = "Count" +) + +func PossibleValuesForUsageUnit() []string { + return []string{ + string(UsageUnitCount), + } +} + +func (s *UsageUnit) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseUsageUnit(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseUsageUnit(input string) (*UsageUnit, error) { + vals := map[string]UsageUnit{ + "count": UsageUnitCount, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := UsageUnit(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/usages/id_location.go b/resource-manager/network/2024-01-01/usages/id_location.go new file mode 100644 index 00000000000..6499c99bc79 --- /dev/null +++ b/resource-manager/network/2024-01-01/usages/id_location.go @@ -0,0 +1,121 @@ +package usages + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&LocationId{}) +} + +var _ resourceids.ResourceId = &LocationId{} + +// LocationId is a struct representing the Resource ID for a Location +type LocationId struct { + SubscriptionId string + LocationName string +} + +// NewLocationID returns a new LocationId struct +func NewLocationID(subscriptionId string, locationName string) LocationId { + return LocationId{ + SubscriptionId: subscriptionId, + LocationName: locationName, + } +} + +// ParseLocationID parses 'input' into a LocationId +func ParseLocationID(input string) (*LocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&LocationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseLocationIDInsensitively parses 'input' case-insensitively into a LocationId +// note: this method should only be used for API response data and not user input +func ParseLocationIDInsensitively(input string) (*LocationId, error) { + parser := resourceids.NewParserFromResourceIdType(&LocationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := LocationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *LocationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.LocationName, ok = input.Parsed["locationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "locationName", input) + } + + return nil +} + +// ValidateLocationID checks that 'input' can be parsed as a Location ID +func ValidateLocationID(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 := ParseLocationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Location ID +func (id LocationId) ID() string { + fmtString := "/subscriptions/%s/providers/Microsoft.Network/locations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.LocationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Location ID +func (id LocationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticLocations", "locations", "locations"), + resourceids.UserSpecifiedSegment("locationName", "locationValue"), + } +} + +// String returns a human-readable description of this Location ID +func (id LocationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Location Name: %q", id.LocationName), + } + return fmt.Sprintf("Location (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/usages/id_location_test.go b/resource-manager/network/2024-01-01/usages/id_location_test.go new file mode 100644 index 00000000000..90cb643f003 --- /dev/null +++ b/resource-manager/network/2024-01-01/usages/id_location_test.go @@ -0,0 +1,237 @@ +package usages + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &LocationId{} + +func TestNewLocationID(t *testing.T) { + id := NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.LocationName != "locationValue" { + t.Fatalf("Expected %q but got %q for Segment 'LocationName'", id.LocationName, "locationValue") + } +} + +func TestFormatLocationID(t *testing.T) { + actual := NewLocationID("12345678-1234-9876-4563-123456789012", "locationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseLocationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLocationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestParseLocationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *LocationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "locationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/locations/locationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe", + Expected: &LocationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + LocationName: "lOcAtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/lOcAtIoNs/lOcAtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseLocationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.LocationName != v.Expected.LocationName { + t.Fatalf("Expected %q but got %q for LocationName", v.Expected.LocationName, actual.LocationName) + } + + } +} + +func TestSegmentsForLocationId(t *testing.T) { + segments := LocationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("LocationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/usages/method_list.go b/resource-manager/network/2024-01-01/usages/method_list.go new file mode 100644 index 00000000000..6f4166f6dfc --- /dev/null +++ b/resource-manager/network/2024-01-01/usages/method_list.go @@ -0,0 +1,92 @@ +package usages + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]Usage +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []Usage +} + +// List ... +func (c UsagesClient) List(ctx context.Context, id LocationId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/usages", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]Usage `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c UsagesClient) ListComplete(ctx context.Context, id LocationId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, UsageOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c UsagesClient) ListCompleteMatchingPredicate(ctx context.Context, id LocationId, predicate UsageOperationPredicate) (result ListCompleteResult, err error) { + items := make([]Usage, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/usages/model_usage.go b/resource-manager/network/2024-01-01/usages/model_usage.go new file mode 100644 index 00000000000..2a734980b2c --- /dev/null +++ b/resource-manager/network/2024-01-01/usages/model_usage.go @@ -0,0 +1,12 @@ +package usages + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Usage struct { + CurrentValue int64 `json:"currentValue"` + Id *string `json:"id,omitempty"` + Limit int64 `json:"limit"` + Name UsageName `json:"name"` + Unit UsageUnit `json:"unit"` +} diff --git a/resource-manager/network/2024-01-01/usages/model_usagename.go b/resource-manager/network/2024-01-01/usages/model_usagename.go new file mode 100644 index 00000000000..ff2d9cbdd3e --- /dev/null +++ b/resource-manager/network/2024-01-01/usages/model_usagename.go @@ -0,0 +1,9 @@ +package usages + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UsageName struct { + LocalizedValue *string `json:"localizedValue,omitempty"` + Value *string `json:"value,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/usages/predicates.go b/resource-manager/network/2024-01-01/usages/predicates.go new file mode 100644 index 00000000000..ad3b401c1ce --- /dev/null +++ b/resource-manager/network/2024-01-01/usages/predicates.go @@ -0,0 +1,27 @@ +package usages + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UsageOperationPredicate struct { + CurrentValue *int64 + Id *string + Limit *int64 +} + +func (p UsageOperationPredicate) Matches(input Usage) bool { + + if p.CurrentValue != nil && *p.CurrentValue != input.CurrentValue { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Limit != nil && *p.Limit != input.Limit { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/usages/version.go b/resource-manager/network/2024-01-01/usages/version.go new file mode 100644 index 00000000000..db9a6b86f5b --- /dev/null +++ b/resource-manager/network/2024-01-01/usages/version.go @@ -0,0 +1,12 @@ +package usages + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/usages/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/vipswap/README.md b/resource-manager/network/2024-01-01/vipswap/README.md new file mode 100644 index 00000000000..4a0c6489673 --- /dev/null +++ b/resource-manager/network/2024-01-01/vipswap/README.md @@ -0,0 +1,69 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/vipswap` Documentation + +The `vipswap` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/vipswap" +``` + + +### Client Initialization + +```go +client := vipswap.NewVipSwapClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `VipSwapClient.Create` + +```go +ctx := context.TODO() +id := vipswap.NewCloudServiceID("12345678-1234-9876-4563-123456789012", "resourceGroupValue", "cloudServiceValue") + +payload := vipswap.SwapResource{ + // ... +} + + +if err := client.CreateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VipSwapClient.Get` + +```go +ctx := context.TODO() +id := vipswap.NewCloudServiceID("12345678-1234-9876-4563-123456789012", "resourceGroupValue", "cloudServiceValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VipSwapClient.List` + +```go +ctx := context.TODO() +id := vipswap.NewCloudServiceID("12345678-1234-9876-4563-123456789012", "resourceGroupValue", "cloudServiceValue") + +read, err := client.List(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/vipswap/client.go b/resource-manager/network/2024-01-01/vipswap/client.go new file mode 100644 index 00000000000..2a7d8c2afe7 --- /dev/null +++ b/resource-manager/network/2024-01-01/vipswap/client.go @@ -0,0 +1,26 @@ +package vipswap + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VipSwapClient struct { + Client *resourcemanager.Client +} + +func NewVipSwapClientWithBaseURI(sdkApi sdkEnv.Api) (*VipSwapClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "vipswap", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating VipSwapClient: %+v", err) + } + + return &VipSwapClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/vipswap/constants.go b/resource-manager/network/2024-01-01/vipswap/constants.go new file mode 100644 index 00000000000..c6cf7234532 --- /dev/null +++ b/resource-manager/network/2024-01-01/vipswap/constants.go @@ -0,0 +1,51 @@ +package vipswap + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SlotType string + +const ( + SlotTypeProduction SlotType = "Production" + SlotTypeStaging SlotType = "Staging" +) + +func PossibleValuesForSlotType() []string { + return []string{ + string(SlotTypeProduction), + string(SlotTypeStaging), + } +} + +func (s *SlotType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSlotType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSlotType(input string) (*SlotType, error) { + vals := map[string]SlotType{ + "production": SlotTypeProduction, + "staging": SlotTypeStaging, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SlotType(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/vipswap/id_cloudservice.go b/resource-manager/network/2024-01-01/vipswap/id_cloudservice.go new file mode 100644 index 00000000000..5801e90709d --- /dev/null +++ b/resource-manager/network/2024-01-01/vipswap/id_cloudservice.go @@ -0,0 +1,130 @@ +package vipswap + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&CloudServiceId{}) +} + +var _ resourceids.ResourceId = &CloudServiceId{} + +// CloudServiceId is a struct representing the Resource ID for a Cloud Service +type CloudServiceId struct { + SubscriptionId string + ResourceGroupName string + CloudServiceName string +} + +// NewCloudServiceID returns a new CloudServiceId struct +func NewCloudServiceID(subscriptionId string, resourceGroupName string, cloudServiceName string) CloudServiceId { + return CloudServiceId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + CloudServiceName: cloudServiceName, + } +} + +// ParseCloudServiceID parses 'input' into a CloudServiceId +func ParseCloudServiceID(input string) (*CloudServiceId, error) { + parser := resourceids.NewParserFromResourceIdType(&CloudServiceId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := CloudServiceId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseCloudServiceIDInsensitively parses 'input' case-insensitively into a CloudServiceId +// note: this method should only be used for API response data and not user input +func ParseCloudServiceIDInsensitively(input string) (*CloudServiceId, error) { + parser := resourceids.NewParserFromResourceIdType(&CloudServiceId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := CloudServiceId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *CloudServiceId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.CloudServiceName, ok = input.Parsed["cloudServiceName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "cloudServiceName", input) + } + + return nil +} + +// ValidateCloudServiceID checks that 'input' can be parsed as a Cloud Service ID +func ValidateCloudServiceID(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 := ParseCloudServiceID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Cloud Service ID +func (id CloudServiceId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Compute/cloudServices/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.CloudServiceName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Cloud Service ID +func (id CloudServiceId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.UserSpecifiedSegment("resourceGroupName", "resourceGroupValue"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftCompute", "Microsoft.Compute", "Microsoft.Compute"), + resourceids.StaticSegment("staticCloudServices", "cloudServices", "cloudServices"), + resourceids.UserSpecifiedSegment("cloudServiceName", "cloudServiceValue"), + } +} + +// String returns a human-readable description of this Cloud Service ID +func (id CloudServiceId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Cloud Service Name: %q", id.CloudServiceName), + } + return fmt.Sprintf("Cloud Service (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/vipswap/id_cloudservice_test.go b/resource-manager/network/2024-01-01/vipswap/id_cloudservice_test.go new file mode 100644 index 00000000000..0184ee4262a --- /dev/null +++ b/resource-manager/network/2024-01-01/vipswap/id_cloudservice_test.go @@ -0,0 +1,282 @@ +package vipswap + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &CloudServiceId{} + +func TestNewCloudServiceID(t *testing.T) { + id := NewCloudServiceID("12345678-1234-9876-4563-123456789012", "resourceGroupValue", "cloudServiceValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "resourceGroupValue" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "resourceGroupValue") + } + + if id.CloudServiceName != "cloudServiceValue" { + t.Fatalf("Expected %q but got %q for Segment 'CloudServiceName'", id.CloudServiceName, "cloudServiceValue") + } +} + +func TestFormatCloudServiceID(t *testing.T) { + actual := NewCloudServiceID("12345678-1234-9876-4563-123456789012", "resourceGroupValue", "cloudServiceValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Compute/cloudServices/cloudServiceValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseCloudServiceID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *CloudServiceId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Compute", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Compute/cloudServices", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Compute/cloudServices/cloudServiceValue", + Expected: &CloudServiceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "resourceGroupValue", + CloudServiceName: "cloudServiceValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Compute/cloudServices/cloudServiceValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseCloudServiceID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.CloudServiceName != v.Expected.CloudServiceName { + t.Fatalf("Expected %q but got %q for CloudServiceName", v.Expected.CloudServiceName, actual.CloudServiceName) + } + + } +} + +func TestParseCloudServiceIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *CloudServiceId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/rEsOuRcEgRoUpVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/rEsOuRcEgRoUpVaLuE/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Compute", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/rEsOuRcEgRoUpVaLuE/pRoViDeRs/mIcRoSoFt.cOmPuTe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Compute/cloudServices", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/rEsOuRcEgRoUpVaLuE/pRoViDeRs/mIcRoSoFt.cOmPuTe/cLoUdSeRvIcEs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Compute/cloudServices/cloudServiceValue", + Expected: &CloudServiceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "resourceGroupValue", + CloudServiceName: "cloudServiceValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroupValue/providers/Microsoft.Compute/cloudServices/cloudServiceValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/rEsOuRcEgRoUpVaLuE/pRoViDeRs/mIcRoSoFt.cOmPuTe/cLoUdSeRvIcEs/cLoUdSeRvIcEvAlUe", + Expected: &CloudServiceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "rEsOuRcEgRoUpVaLuE", + CloudServiceName: "cLoUdSeRvIcEvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/rEsOuRcEgRoUpVaLuE/pRoViDeRs/mIcRoSoFt.cOmPuTe/cLoUdSeRvIcEs/cLoUdSeRvIcEvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseCloudServiceIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.CloudServiceName != v.Expected.CloudServiceName { + t.Fatalf("Expected %q but got %q for CloudServiceName", v.Expected.CloudServiceName, actual.CloudServiceName) + } + + } +} + +func TestSegmentsForCloudServiceId(t *testing.T) { + segments := CloudServiceId{}.Segments() + if len(segments) == 0 { + t.Fatalf("CloudServiceId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/vipswap/method_create.go b/resource-manager/network/2024-01-01/vipswap/method_create.go new file mode 100644 index 00000000000..c7db22cb3af --- /dev/null +++ b/resource-manager/network/2024-01-01/vipswap/method_create.go @@ -0,0 +1,74 @@ +package vipswap + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Create ... +func (c VipSwapClient) Create(ctx context.Context, id CloudServiceId, input SwapResource) (result CreateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/cloudServiceSlots/swap", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateThenPoll performs Create then polls until it's completed +func (c VipSwapClient) CreateThenPoll(ctx context.Context, id CloudServiceId, input SwapResource) error { + result, err := c.Create(ctx, id, input) + if err != nil { + return fmt.Errorf("performing Create: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Create: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/vipswap/method_get.go b/resource-manager/network/2024-01-01/vipswap/method_get.go new file mode 100644 index 00000000000..2d61c8f37e0 --- /dev/null +++ b/resource-manager/network/2024-01-01/vipswap/method_get.go @@ -0,0 +1,55 @@ +package vipswap + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *SwapResource +} + +// Get ... +func (c VipSwapClient) Get(ctx context.Context, id CloudServiceId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/cloudServiceSlots/swap", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model SwapResource + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/vipswap/method_list.go b/resource-manager/network/2024-01-01/vipswap/method_list.go new file mode 100644 index 00000000000..32407cc2c5c --- /dev/null +++ b/resource-manager/network/2024-01-01/vipswap/method_list.go @@ -0,0 +1,55 @@ +package vipswap + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *SwapResourceListResult +} + +// List ... +func (c VipSwapClient) List(ctx context.Context, id CloudServiceId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/cloudServiceSlots", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model SwapResourceListResult + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/vipswap/model_swapresource.go b/resource-manager/network/2024-01-01/vipswap/model_swapresource.go new file mode 100644 index 00000000000..cd135639ade --- /dev/null +++ b/resource-manager/network/2024-01-01/vipswap/model_swapresource.go @@ -0,0 +1,11 @@ +package vipswap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SwapResource struct { + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SwapResourceProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vipswap/model_swapresourcelistresult.go b/resource-manager/network/2024-01-01/vipswap/model_swapresourcelistresult.go new file mode 100644 index 00000000000..d4cb9490d3a --- /dev/null +++ b/resource-manager/network/2024-01-01/vipswap/model_swapresourcelistresult.go @@ -0,0 +1,8 @@ +package vipswap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SwapResourceListResult struct { + Value *[]SwapResource `json:"value,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vipswap/model_swapresourceproperties.go b/resource-manager/network/2024-01-01/vipswap/model_swapresourceproperties.go new file mode 100644 index 00000000000..8254763b326 --- /dev/null +++ b/resource-manager/network/2024-01-01/vipswap/model_swapresourceproperties.go @@ -0,0 +1,8 @@ +package vipswap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SwapResourceProperties struct { + SlotType *SlotType `json:"slotType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vipswap/version.go b/resource-manager/network/2024-01-01/vipswap/version.go new file mode 100644 index 00000000000..006a85f3f78 --- /dev/null +++ b/resource-manager/network/2024-01-01/vipswap/version.go @@ -0,0 +1,12 @@ +package vipswap + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/vipswap/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/virtualappliancesites/README.md b/resource-manager/network/2024-01-01/virtualappliancesites/README.md new file mode 100644 index 00000000000..ab9e3124862 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualappliancesites/README.md @@ -0,0 +1,82 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualappliancesites` Documentation + +The `virtualappliancesites` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualappliancesites" +``` + + +### Client Initialization + +```go +client := virtualappliancesites.NewVirtualApplianceSitesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `VirtualApplianceSitesClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := virtualappliancesites.NewVirtualApplianceSiteID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue", "virtualApplianceSiteValue") + +payload := virtualappliancesites.VirtualApplianceSite{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualApplianceSitesClient.Delete` + +```go +ctx := context.TODO() +id := virtualappliancesites.NewVirtualApplianceSiteID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue", "virtualApplianceSiteValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualApplianceSitesClient.Get` + +```go +ctx := context.TODO() +id := virtualappliancesites.NewVirtualApplianceSiteID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue", "virtualApplianceSiteValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualApplianceSitesClient.List` + +```go +ctx := context.TODO() +id := virtualappliancesites.NewNetworkVirtualApplianceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/virtualappliancesites/client.go b/resource-manager/network/2024-01-01/virtualappliancesites/client.go new file mode 100644 index 00000000000..415b8e6e46b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualappliancesites/client.go @@ -0,0 +1,26 @@ +package virtualappliancesites + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualApplianceSitesClient struct { + Client *resourcemanager.Client +} + +func NewVirtualApplianceSitesClientWithBaseURI(sdkApi sdkEnv.Api) (*VirtualApplianceSitesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "virtualappliancesites", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating VirtualApplianceSitesClient: %+v", err) + } + + return &VirtualApplianceSitesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/virtualappliancesites/constants.go b/resource-manager/network/2024-01-01/virtualappliancesites/constants.go new file mode 100644 index 00000000000..bd413f43290 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualappliancesites/constants.go @@ -0,0 +1,57 @@ +package virtualappliancesites + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/virtualappliancesites/id_networkvirtualappliance.go b/resource-manager/network/2024-01-01/virtualappliancesites/id_networkvirtualappliance.go new file mode 100644 index 00000000000..d414a3c2d42 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualappliancesites/id_networkvirtualappliance.go @@ -0,0 +1,130 @@ +package virtualappliancesites + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NetworkVirtualApplianceId{}) +} + +var _ resourceids.ResourceId = &NetworkVirtualApplianceId{} + +// NetworkVirtualApplianceId is a struct representing the Resource ID for a Network Virtual Appliance +type NetworkVirtualApplianceId struct { + SubscriptionId string + ResourceGroupName string + NetworkVirtualApplianceName string +} + +// NewNetworkVirtualApplianceID returns a new NetworkVirtualApplianceId struct +func NewNetworkVirtualApplianceID(subscriptionId string, resourceGroupName string, networkVirtualApplianceName string) NetworkVirtualApplianceId { + return NetworkVirtualApplianceId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkVirtualApplianceName: networkVirtualApplianceName, + } +} + +// ParseNetworkVirtualApplianceID parses 'input' into a NetworkVirtualApplianceId +func ParseNetworkVirtualApplianceID(input string) (*NetworkVirtualApplianceId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkVirtualApplianceId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkVirtualApplianceId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNetworkVirtualApplianceIDInsensitively parses 'input' case-insensitively into a NetworkVirtualApplianceId +// note: this method should only be used for API response data and not user input +func ParseNetworkVirtualApplianceIDInsensitively(input string) (*NetworkVirtualApplianceId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkVirtualApplianceId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkVirtualApplianceId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NetworkVirtualApplianceId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkVirtualApplianceName, ok = input.Parsed["networkVirtualApplianceName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkVirtualApplianceName", input) + } + + return nil +} + +// ValidateNetworkVirtualApplianceID checks that 'input' can be parsed as a Network Virtual Appliance ID +func ValidateNetworkVirtualApplianceID(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 := ParseNetworkVirtualApplianceID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Network Virtual Appliance ID +func (id NetworkVirtualApplianceId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkVirtualAppliances/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkVirtualApplianceName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Network Virtual Appliance ID +func (id NetworkVirtualApplianceId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkVirtualAppliances", "networkVirtualAppliances", "networkVirtualAppliances"), + resourceids.UserSpecifiedSegment("networkVirtualApplianceName", "networkVirtualApplianceValue"), + } +} + +// String returns a human-readable description of this Network Virtual Appliance ID +func (id NetworkVirtualApplianceId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Virtual Appliance Name: %q", id.NetworkVirtualApplianceName), + } + return fmt.Sprintf("Network Virtual Appliance (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualappliancesites/id_networkvirtualappliance_test.go b/resource-manager/network/2024-01-01/virtualappliancesites/id_networkvirtualappliance_test.go new file mode 100644 index 00000000000..e09dcbc11c4 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualappliancesites/id_networkvirtualappliance_test.go @@ -0,0 +1,282 @@ +package virtualappliancesites + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NetworkVirtualApplianceId{} + +func TestNewNetworkVirtualApplianceID(t *testing.T) { + id := NewNetworkVirtualApplianceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkVirtualApplianceName != "networkVirtualApplianceValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkVirtualApplianceName'", id.NetworkVirtualApplianceName, "networkVirtualApplianceValue") + } +} + +func TestFormatNetworkVirtualApplianceID(t *testing.T) { + actual := NewNetworkVirtualApplianceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNetworkVirtualApplianceID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkVirtualApplianceId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue", + Expected: &NetworkVirtualApplianceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkVirtualApplianceName: "networkVirtualApplianceValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkVirtualApplianceID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkVirtualApplianceName != v.Expected.NetworkVirtualApplianceName { + t.Fatalf("Expected %q but got %q for NetworkVirtualApplianceName", v.Expected.NetworkVirtualApplianceName, actual.NetworkVirtualApplianceName) + } + + } +} + +func TestParseNetworkVirtualApplianceIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkVirtualApplianceId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue", + Expected: &NetworkVirtualApplianceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkVirtualApplianceName: "networkVirtualApplianceValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS/nEtWoRkViRtUaLaPpLiAnCeVaLuE", + Expected: &NetworkVirtualApplianceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkVirtualApplianceName: "nEtWoRkViRtUaLaPpLiAnCeVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS/nEtWoRkViRtUaLaPpLiAnCeVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkVirtualApplianceIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkVirtualApplianceName != v.Expected.NetworkVirtualApplianceName { + t.Fatalf("Expected %q but got %q for NetworkVirtualApplianceName", v.Expected.NetworkVirtualApplianceName, actual.NetworkVirtualApplianceName) + } + + } +} + +func TestSegmentsForNetworkVirtualApplianceId(t *testing.T) { + segments := NetworkVirtualApplianceId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NetworkVirtualApplianceId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualappliancesites/id_virtualappliancesite.go b/resource-manager/network/2024-01-01/virtualappliancesites/id_virtualappliancesite.go new file mode 100644 index 00000000000..a0500e43c74 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualappliancesites/id_virtualappliancesite.go @@ -0,0 +1,139 @@ +package virtualappliancesites + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&VirtualApplianceSiteId{}) +} + +var _ resourceids.ResourceId = &VirtualApplianceSiteId{} + +// VirtualApplianceSiteId is a struct representing the Resource ID for a Virtual Appliance Site +type VirtualApplianceSiteId struct { + SubscriptionId string + ResourceGroupName string + NetworkVirtualApplianceName string + VirtualApplianceSiteName string +} + +// NewVirtualApplianceSiteID returns a new VirtualApplianceSiteId struct +func NewVirtualApplianceSiteID(subscriptionId string, resourceGroupName string, networkVirtualApplianceName string, virtualApplianceSiteName string) VirtualApplianceSiteId { + return VirtualApplianceSiteId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkVirtualApplianceName: networkVirtualApplianceName, + VirtualApplianceSiteName: virtualApplianceSiteName, + } +} + +// ParseVirtualApplianceSiteID parses 'input' into a VirtualApplianceSiteId +func ParseVirtualApplianceSiteID(input string) (*VirtualApplianceSiteId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualApplianceSiteId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualApplianceSiteId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseVirtualApplianceSiteIDInsensitively parses 'input' case-insensitively into a VirtualApplianceSiteId +// note: this method should only be used for API response data and not user input +func ParseVirtualApplianceSiteIDInsensitively(input string) (*VirtualApplianceSiteId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualApplianceSiteId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualApplianceSiteId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *VirtualApplianceSiteId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkVirtualApplianceName, ok = input.Parsed["networkVirtualApplianceName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkVirtualApplianceName", input) + } + + if id.VirtualApplianceSiteName, ok = input.Parsed["virtualApplianceSiteName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "virtualApplianceSiteName", input) + } + + return nil +} + +// ValidateVirtualApplianceSiteID checks that 'input' can be parsed as a Virtual Appliance Site ID +func ValidateVirtualApplianceSiteID(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 := ParseVirtualApplianceSiteID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Virtual Appliance Site ID +func (id VirtualApplianceSiteId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkVirtualAppliances/%s/virtualApplianceSites/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkVirtualApplianceName, id.VirtualApplianceSiteName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Virtual Appliance Site ID +func (id VirtualApplianceSiteId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkVirtualAppliances", "networkVirtualAppliances", "networkVirtualAppliances"), + resourceids.UserSpecifiedSegment("networkVirtualApplianceName", "networkVirtualApplianceValue"), + resourceids.StaticSegment("staticVirtualApplianceSites", "virtualApplianceSites", "virtualApplianceSites"), + resourceids.UserSpecifiedSegment("virtualApplianceSiteName", "virtualApplianceSiteValue"), + } +} + +// String returns a human-readable description of this Virtual Appliance Site ID +func (id VirtualApplianceSiteId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Virtual Appliance Name: %q", id.NetworkVirtualApplianceName), + fmt.Sprintf("Virtual Appliance Site Name: %q", id.VirtualApplianceSiteName), + } + return fmt.Sprintf("Virtual Appliance Site (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualappliancesites/id_virtualappliancesite_test.go b/resource-manager/network/2024-01-01/virtualappliancesites/id_virtualappliancesite_test.go new file mode 100644 index 00000000000..d7b3754367a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualappliancesites/id_virtualappliancesite_test.go @@ -0,0 +1,327 @@ +package virtualappliancesites + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &VirtualApplianceSiteId{} + +func TestNewVirtualApplianceSiteID(t *testing.T) { + id := NewVirtualApplianceSiteID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue", "virtualApplianceSiteValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkVirtualApplianceName != "networkVirtualApplianceValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkVirtualApplianceName'", id.NetworkVirtualApplianceName, "networkVirtualApplianceValue") + } + + if id.VirtualApplianceSiteName != "virtualApplianceSiteValue" { + t.Fatalf("Expected %q but got %q for Segment 'VirtualApplianceSiteName'", id.VirtualApplianceSiteName, "virtualApplianceSiteValue") + } +} + +func TestFormatVirtualApplianceSiteID(t *testing.T) { + actual := NewVirtualApplianceSiteID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue", "virtualApplianceSiteValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/virtualApplianceSites/virtualApplianceSiteValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseVirtualApplianceSiteID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualApplianceSiteId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/virtualApplianceSites", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/virtualApplianceSites/virtualApplianceSiteValue", + Expected: &VirtualApplianceSiteId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkVirtualApplianceName: "networkVirtualApplianceValue", + VirtualApplianceSiteName: "virtualApplianceSiteValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/virtualApplianceSites/virtualApplianceSiteValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualApplianceSiteID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkVirtualApplianceName != v.Expected.NetworkVirtualApplianceName { + t.Fatalf("Expected %q but got %q for NetworkVirtualApplianceName", v.Expected.NetworkVirtualApplianceName, actual.NetworkVirtualApplianceName) + } + + if actual.VirtualApplianceSiteName != v.Expected.VirtualApplianceSiteName { + t.Fatalf("Expected %q but got %q for VirtualApplianceSiteName", v.Expected.VirtualApplianceSiteName, actual.VirtualApplianceSiteName) + } + + } +} + +func TestParseVirtualApplianceSiteIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualApplianceSiteId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS/nEtWoRkViRtUaLaPpLiAnCeVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/virtualApplianceSites", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS/nEtWoRkViRtUaLaPpLiAnCeVaLuE/vIrTuAlApPlIaNcEsItEs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/virtualApplianceSites/virtualApplianceSiteValue", + Expected: &VirtualApplianceSiteId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkVirtualApplianceName: "networkVirtualApplianceValue", + VirtualApplianceSiteName: "virtualApplianceSiteValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/virtualApplianceSites/virtualApplianceSiteValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS/nEtWoRkViRtUaLaPpLiAnCeVaLuE/vIrTuAlApPlIaNcEsItEs/vIrTuAlApPlIaNcEsItEvAlUe", + Expected: &VirtualApplianceSiteId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkVirtualApplianceName: "nEtWoRkViRtUaLaPpLiAnCeVaLuE", + VirtualApplianceSiteName: "vIrTuAlApPlIaNcEsItEvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS/nEtWoRkViRtUaLaPpLiAnCeVaLuE/vIrTuAlApPlIaNcEsItEs/vIrTuAlApPlIaNcEsItEvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualApplianceSiteIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkVirtualApplianceName != v.Expected.NetworkVirtualApplianceName { + t.Fatalf("Expected %q but got %q for NetworkVirtualApplianceName", v.Expected.NetworkVirtualApplianceName, actual.NetworkVirtualApplianceName) + } + + if actual.VirtualApplianceSiteName != v.Expected.VirtualApplianceSiteName { + t.Fatalf("Expected %q but got %q for VirtualApplianceSiteName", v.Expected.VirtualApplianceSiteName, actual.VirtualApplianceSiteName) + } + + } +} + +func TestSegmentsForVirtualApplianceSiteId(t *testing.T) { + segments := VirtualApplianceSiteId{}.Segments() + if len(segments) == 0 { + t.Fatalf("VirtualApplianceSiteId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualappliancesites/method_createorupdate.go b/resource-manager/network/2024-01-01/virtualappliancesites/method_createorupdate.go new file mode 100644 index 00000000000..2022580c6d0 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualappliancesites/method_createorupdate.go @@ -0,0 +1,75 @@ +package virtualappliancesites + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VirtualApplianceSite +} + +// CreateOrUpdate ... +func (c VirtualApplianceSitesClient) CreateOrUpdate(ctx context.Context, id VirtualApplianceSiteId, input VirtualApplianceSite) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c VirtualApplianceSitesClient) CreateOrUpdateThenPoll(ctx context.Context, id VirtualApplianceSiteId, input VirtualApplianceSite) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualappliancesites/method_delete.go b/resource-manager/network/2024-01-01/virtualappliancesites/method_delete.go new file mode 100644 index 00000000000..50e7f186f39 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualappliancesites/method_delete.go @@ -0,0 +1,71 @@ +package virtualappliancesites + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c VirtualApplianceSitesClient) Delete(ctx context.Context, id VirtualApplianceSiteId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c VirtualApplianceSitesClient) DeleteThenPoll(ctx context.Context, id VirtualApplianceSiteId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualappliancesites/method_get.go b/resource-manager/network/2024-01-01/virtualappliancesites/method_get.go new file mode 100644 index 00000000000..c78f7f1cf64 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualappliancesites/method_get.go @@ -0,0 +1,54 @@ +package virtualappliancesites + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VirtualApplianceSite +} + +// Get ... +func (c VirtualApplianceSitesClient) Get(ctx context.Context, id VirtualApplianceSiteId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VirtualApplianceSite + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualappliancesites/method_list.go b/resource-manager/network/2024-01-01/virtualappliancesites/method_list.go new file mode 100644 index 00000000000..b8a9fc0c70b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualappliancesites/method_list.go @@ -0,0 +1,92 @@ +package virtualappliancesites + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VirtualApplianceSite +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []VirtualApplianceSite +} + +// List ... +func (c VirtualApplianceSitesClient) List(ctx context.Context, id NetworkVirtualApplianceId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/virtualApplianceSites", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VirtualApplianceSite `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c VirtualApplianceSitesClient) ListComplete(ctx context.Context, id NetworkVirtualApplianceId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, VirtualApplianceSiteOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualApplianceSitesClient) ListCompleteMatchingPredicate(ctx context.Context, id NetworkVirtualApplianceId, predicate VirtualApplianceSiteOperationPredicate) (result ListCompleteResult, err error) { + items := make([]VirtualApplianceSite, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualappliancesites/model_breakoutcategorypolicies.go b/resource-manager/network/2024-01-01/virtualappliancesites/model_breakoutcategorypolicies.go new file mode 100644 index 00000000000..6a2b15ecb1d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualappliancesites/model_breakoutcategorypolicies.go @@ -0,0 +1,10 @@ +package virtualappliancesites + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BreakOutCategoryPolicies struct { + Allow *bool `json:"allow,omitempty"` + Default *bool `json:"default,omitempty"` + Optimize *bool `json:"optimize,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualappliancesites/model_office365policyproperties.go b/resource-manager/network/2024-01-01/virtualappliancesites/model_office365policyproperties.go new file mode 100644 index 00000000000..b891141a5ba --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualappliancesites/model_office365policyproperties.go @@ -0,0 +1,8 @@ +package virtualappliancesites + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Office365PolicyProperties struct { + BreakOutCategories *BreakOutCategoryPolicies `json:"breakOutCategories,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualappliancesites/model_virtualappliancesite.go b/resource-manager/network/2024-01-01/virtualappliancesites/model_virtualappliancesite.go new file mode 100644 index 00000000000..1b84d25c56d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualappliancesites/model_virtualappliancesite.go @@ -0,0 +1,12 @@ +package virtualappliancesites + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualApplianceSite struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualApplianceSiteProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualappliancesites/model_virtualappliancesiteproperties.go b/resource-manager/network/2024-01-01/virtualappliancesites/model_virtualappliancesiteproperties.go new file mode 100644 index 00000000000..5d01b6ab8f8 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualappliancesites/model_virtualappliancesiteproperties.go @@ -0,0 +1,10 @@ +package virtualappliancesites + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualApplianceSiteProperties struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + O365Policy *Office365PolicyProperties `json:"o365Policy,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualappliancesites/predicates.go b/resource-manager/network/2024-01-01/virtualappliancesites/predicates.go new file mode 100644 index 00000000000..af31f940d24 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualappliancesites/predicates.go @@ -0,0 +1,32 @@ +package virtualappliancesites + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualApplianceSiteOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p VirtualApplianceSiteOperationPredicate) Matches(input VirtualApplianceSite) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/virtualappliancesites/version.go b/resource-manager/network/2024-01-01/virtualappliancesites/version.go new file mode 100644 index 00000000000..747e350d5c0 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualappliancesites/version.go @@ -0,0 +1,12 @@ +package virtualappliancesites + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/virtualappliancesites/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/virtualapplianceskus/README.md b/resource-manager/network/2024-01-01/virtualapplianceskus/README.md new file mode 100644 index 00000000000..57e51b09990 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualapplianceskus/README.md @@ -0,0 +1,54 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualapplianceskus` Documentation + +The `virtualapplianceskus` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualapplianceskus" +``` + + +### Client Initialization + +```go +client := virtualapplianceskus.NewVirtualApplianceSkusClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `VirtualApplianceSkusClient.Get` + +```go +ctx := context.TODO() +id := virtualapplianceskus.NewNetworkVirtualApplianceSkuID("12345678-1234-9876-4563-123456789012", "networkVirtualApplianceSkuValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualApplianceSkusClient.List` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/virtualapplianceskus/client.go b/resource-manager/network/2024-01-01/virtualapplianceskus/client.go new file mode 100644 index 00000000000..db6e9902bb9 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualapplianceskus/client.go @@ -0,0 +1,26 @@ +package virtualapplianceskus + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualApplianceSkusClient struct { + Client *resourcemanager.Client +} + +func NewVirtualApplianceSkusClientWithBaseURI(sdkApi sdkEnv.Api) (*VirtualApplianceSkusClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "virtualapplianceskus", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating VirtualApplianceSkusClient: %+v", err) + } + + return &VirtualApplianceSkusClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/virtualapplianceskus/id_networkvirtualappliancesku.go b/resource-manager/network/2024-01-01/virtualapplianceskus/id_networkvirtualappliancesku.go new file mode 100644 index 00000000000..a2683ac973a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualapplianceskus/id_networkvirtualappliancesku.go @@ -0,0 +1,121 @@ +package virtualapplianceskus + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NetworkVirtualApplianceSkuId{}) +} + +var _ resourceids.ResourceId = &NetworkVirtualApplianceSkuId{} + +// NetworkVirtualApplianceSkuId is a struct representing the Resource ID for a Network Virtual Appliance Sku +type NetworkVirtualApplianceSkuId struct { + SubscriptionId string + NetworkVirtualApplianceSkuName string +} + +// NewNetworkVirtualApplianceSkuID returns a new NetworkVirtualApplianceSkuId struct +func NewNetworkVirtualApplianceSkuID(subscriptionId string, networkVirtualApplianceSkuName string) NetworkVirtualApplianceSkuId { + return NetworkVirtualApplianceSkuId{ + SubscriptionId: subscriptionId, + NetworkVirtualApplianceSkuName: networkVirtualApplianceSkuName, + } +} + +// ParseNetworkVirtualApplianceSkuID parses 'input' into a NetworkVirtualApplianceSkuId +func ParseNetworkVirtualApplianceSkuID(input string) (*NetworkVirtualApplianceSkuId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkVirtualApplianceSkuId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkVirtualApplianceSkuId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNetworkVirtualApplianceSkuIDInsensitively parses 'input' case-insensitively into a NetworkVirtualApplianceSkuId +// note: this method should only be used for API response data and not user input +func ParseNetworkVirtualApplianceSkuIDInsensitively(input string) (*NetworkVirtualApplianceSkuId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkVirtualApplianceSkuId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkVirtualApplianceSkuId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NetworkVirtualApplianceSkuId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.NetworkVirtualApplianceSkuName, ok = input.Parsed["networkVirtualApplianceSkuName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkVirtualApplianceSkuName", input) + } + + return nil +} + +// ValidateNetworkVirtualApplianceSkuID checks that 'input' can be parsed as a Network Virtual Appliance Sku ID +func ValidateNetworkVirtualApplianceSkuID(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 := ParseNetworkVirtualApplianceSkuID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Network Virtual Appliance Sku ID +func (id NetworkVirtualApplianceSkuId) ID() string { + fmtString := "/subscriptions/%s/providers/Microsoft.Network/networkVirtualApplianceSkus/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.NetworkVirtualApplianceSkuName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Network Virtual Appliance Sku ID +func (id NetworkVirtualApplianceSkuId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkVirtualApplianceSkus", "networkVirtualApplianceSkus", "networkVirtualApplianceSkus"), + resourceids.UserSpecifiedSegment("networkVirtualApplianceSkuName", "networkVirtualApplianceSkuValue"), + } +} + +// String returns a human-readable description of this Network Virtual Appliance Sku ID +func (id NetworkVirtualApplianceSkuId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Network Virtual Appliance Sku Name: %q", id.NetworkVirtualApplianceSkuName), + } + return fmt.Sprintf("Network Virtual Appliance Sku (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualapplianceskus/id_networkvirtualappliancesku_test.go b/resource-manager/network/2024-01-01/virtualapplianceskus/id_networkvirtualappliancesku_test.go new file mode 100644 index 00000000000..70d241ebe4c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualapplianceskus/id_networkvirtualappliancesku_test.go @@ -0,0 +1,237 @@ +package virtualapplianceskus + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NetworkVirtualApplianceSkuId{} + +func TestNewNetworkVirtualApplianceSkuID(t *testing.T) { + id := NewNetworkVirtualApplianceSkuID("12345678-1234-9876-4563-123456789012", "networkVirtualApplianceSkuValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.NetworkVirtualApplianceSkuName != "networkVirtualApplianceSkuValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkVirtualApplianceSkuName'", id.NetworkVirtualApplianceSkuName, "networkVirtualApplianceSkuValue") + } +} + +func TestFormatNetworkVirtualApplianceSkuID(t *testing.T) { + actual := NewNetworkVirtualApplianceSkuID("12345678-1234-9876-4563-123456789012", "networkVirtualApplianceSkuValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/networkVirtualApplianceSkus/networkVirtualApplianceSkuValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNetworkVirtualApplianceSkuID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkVirtualApplianceSkuId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/networkVirtualApplianceSkus", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/networkVirtualApplianceSkus/networkVirtualApplianceSkuValue", + Expected: &NetworkVirtualApplianceSkuId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + NetworkVirtualApplianceSkuName: "networkVirtualApplianceSkuValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/networkVirtualApplianceSkus/networkVirtualApplianceSkuValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkVirtualApplianceSkuID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.NetworkVirtualApplianceSkuName != v.Expected.NetworkVirtualApplianceSkuName { + t.Fatalf("Expected %q but got %q for NetworkVirtualApplianceSkuName", v.Expected.NetworkVirtualApplianceSkuName, actual.NetworkVirtualApplianceSkuName) + } + + } +} + +func TestParseNetworkVirtualApplianceSkuIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkVirtualApplianceSkuId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/networkVirtualApplianceSkus", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeSkUs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/networkVirtualApplianceSkus/networkVirtualApplianceSkuValue", + Expected: &NetworkVirtualApplianceSkuId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + NetworkVirtualApplianceSkuName: "networkVirtualApplianceSkuValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/networkVirtualApplianceSkus/networkVirtualApplianceSkuValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeSkUs/nEtWoRkViRtUaLaPpLiAnCeSkUvAlUe", + Expected: &NetworkVirtualApplianceSkuId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + NetworkVirtualApplianceSkuName: "nEtWoRkViRtUaLaPpLiAnCeSkUvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeSkUs/nEtWoRkViRtUaLaPpLiAnCeSkUvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkVirtualApplianceSkuIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.NetworkVirtualApplianceSkuName != v.Expected.NetworkVirtualApplianceSkuName { + t.Fatalf("Expected %q but got %q for NetworkVirtualApplianceSkuName", v.Expected.NetworkVirtualApplianceSkuName, actual.NetworkVirtualApplianceSkuName) + } + + } +} + +func TestSegmentsForNetworkVirtualApplianceSkuId(t *testing.T) { + segments := NetworkVirtualApplianceSkuId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NetworkVirtualApplianceSkuId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualapplianceskus/method_get.go b/resource-manager/network/2024-01-01/virtualapplianceskus/method_get.go new file mode 100644 index 00000000000..87cc1eef20e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualapplianceskus/method_get.go @@ -0,0 +1,54 @@ +package virtualapplianceskus + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkVirtualApplianceSku +} + +// Get ... +func (c VirtualApplianceSkusClient) Get(ctx context.Context, id NetworkVirtualApplianceSkuId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkVirtualApplianceSku + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualapplianceskus/method_list.go b/resource-manager/network/2024-01-01/virtualapplianceskus/method_list.go new file mode 100644 index 00000000000..1e8f39f7e10 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualapplianceskus/method_list.go @@ -0,0 +1,93 @@ +package virtualapplianceskus + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NetworkVirtualApplianceSku +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []NetworkVirtualApplianceSku +} + +// List ... +func (c VirtualApplianceSkusClient) List(ctx context.Context, id commonids.SubscriptionId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/networkVirtualApplianceSkus", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NetworkVirtualApplianceSku `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c VirtualApplianceSkusClient) ListComplete(ctx context.Context, id commonids.SubscriptionId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, NetworkVirtualApplianceSkuOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualApplianceSkusClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate NetworkVirtualApplianceSkuOperationPredicate) (result ListCompleteResult, err error) { + items := make([]NetworkVirtualApplianceSku, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualapplianceskus/model_networkvirtualappliancesku.go b/resource-manager/network/2024-01-01/virtualapplianceskus/model_networkvirtualappliancesku.go new file mode 100644 index 00000000000..93719c4daa2 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualapplianceskus/model_networkvirtualappliancesku.go @@ -0,0 +1,14 @@ +package virtualapplianceskus + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkVirtualApplianceSku struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkVirtualApplianceSkuPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualapplianceskus/model_networkvirtualapplianceskuinstances.go b/resource-manager/network/2024-01-01/virtualapplianceskus/model_networkvirtualapplianceskuinstances.go new file mode 100644 index 00000000000..99b52442ed2 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualapplianceskus/model_networkvirtualapplianceskuinstances.go @@ -0,0 +1,9 @@ +package virtualapplianceskus + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkVirtualApplianceSkuInstances struct { + InstanceCount *int64 `json:"instanceCount,omitempty"` + ScaleUnit *string `json:"scaleUnit,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualapplianceskus/model_networkvirtualapplianceskupropertiesformat.go b/resource-manager/network/2024-01-01/virtualapplianceskus/model_networkvirtualapplianceskupropertiesformat.go new file mode 100644 index 00000000000..5df8c3c3b00 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualapplianceskus/model_networkvirtualapplianceskupropertiesformat.go @@ -0,0 +1,10 @@ +package virtualapplianceskus + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkVirtualApplianceSkuPropertiesFormat struct { + AvailableScaleUnits *[]NetworkVirtualApplianceSkuInstances `json:"availableScaleUnits,omitempty"` + AvailableVersions *[]string `json:"availableVersions,omitempty"` + Vendor *string `json:"vendor,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualapplianceskus/predicates.go b/resource-manager/network/2024-01-01/virtualapplianceskus/predicates.go new file mode 100644 index 00000000000..758bba40370 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualapplianceskus/predicates.go @@ -0,0 +1,37 @@ +package virtualapplianceskus + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkVirtualApplianceSkuOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p NetworkVirtualApplianceSkuOperationPredicate) Matches(input NetworkVirtualApplianceSku) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/virtualapplianceskus/version.go b/resource-manager/network/2024-01-01/virtualapplianceskus/version.go new file mode 100644 index 00000000000..8c4dfc35294 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualapplianceskus/version.go @@ -0,0 +1,12 @@ +package virtualapplianceskus + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/virtualapplianceskus/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/README.md b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/README.md new file mode 100644 index 00000000000..3d27dd325ee --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/README.md @@ -0,0 +1,208 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections` Documentation + +The `virtualnetworkgatewayconnections` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections" +``` + + +### Client Initialization + +```go +client := virtualnetworkgatewayconnections.NewVirtualNetworkGatewayConnectionsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `VirtualNetworkGatewayConnectionsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := virtualnetworkgatewayconnections.NewConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "connectionValue") + +payload := virtualnetworkgatewayconnections.VirtualNetworkGatewayConnection{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewayConnectionsClient.Delete` + +```go +ctx := context.TODO() +id := virtualnetworkgatewayconnections.NewConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "connectionValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewayConnectionsClient.Get` + +```go +ctx := context.TODO() +id := virtualnetworkgatewayconnections.NewConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "connectionValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualNetworkGatewayConnectionsClient.GetIkeSas` + +```go +ctx := context.TODO() +id := virtualnetworkgatewayconnections.NewConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "connectionValue") + +if err := client.GetIkeSasThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewayConnectionsClient.GetSharedKey` + +```go +ctx := context.TODO() +id := virtualnetworkgatewayconnections.NewConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "connectionValue") + +read, err := client.GetSharedKey(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualNetworkGatewayConnectionsClient.List` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualNetworkGatewayConnectionsClient.ResetConnection` + +```go +ctx := context.TODO() +id := virtualnetworkgatewayconnections.NewConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "connectionValue") + +if err := client.ResetConnectionThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewayConnectionsClient.ResetSharedKey` + +```go +ctx := context.TODO() +id := virtualnetworkgatewayconnections.NewConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "connectionValue") + +payload := virtualnetworkgatewayconnections.ConnectionResetSharedKey{ + // ... +} + + +if err := client.ResetSharedKeyThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewayConnectionsClient.SetSharedKey` + +```go +ctx := context.TODO() +id := virtualnetworkgatewayconnections.NewConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "connectionValue") + +payload := virtualnetworkgatewayconnections.ConnectionSharedKey{ + // ... +} + + +if err := client.SetSharedKeyThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewayConnectionsClient.StartPacketCapture` + +```go +ctx := context.TODO() +id := virtualnetworkgatewayconnections.NewConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "connectionValue") + +payload := virtualnetworkgatewayconnections.VpnPacketCaptureStartParameters{ + // ... +} + + +if err := client.StartPacketCaptureThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewayConnectionsClient.StopPacketCapture` + +```go +ctx := context.TODO() +id := virtualnetworkgatewayconnections.NewConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "connectionValue") + +payload := virtualnetworkgatewayconnections.VpnPacketCaptureStopParameters{ + // ... +} + + +if err := client.StopPacketCaptureThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewayConnectionsClient.UpdateTags` + +```go +ctx := context.TODO() +id := virtualnetworkgatewayconnections.NewConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "connectionValue") + +payload := virtualnetworkgatewayconnections.TagsObject{ + // ... +} + + +if err := client.UpdateTagsThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/client.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/client.go new file mode 100644 index 00000000000..f0cf4471c90 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/client.go @@ -0,0 +1,26 @@ +package virtualnetworkgatewayconnections + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayConnectionsClient struct { + Client *resourcemanager.Client +} + +func NewVirtualNetworkGatewayConnectionsClientWithBaseURI(sdkApi sdkEnv.Api) (*VirtualNetworkGatewayConnectionsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "virtualnetworkgatewayconnections", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating VirtualNetworkGatewayConnectionsClient: %+v", err) + } + + return &VirtualNetworkGatewayConnectionsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/constants.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/constants.go new file mode 100644 index 00000000000..0d5c94e9343 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/constants.go @@ -0,0 +1,1184 @@ +package virtualnetworkgatewayconnections + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AdminState string + +const ( + AdminStateDisabled AdminState = "Disabled" + AdminStateEnabled AdminState = "Enabled" +) + +func PossibleValuesForAdminState() []string { + return []string{ + string(AdminStateDisabled), + string(AdminStateEnabled), + } +} + +func (s *AdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAdminState(input string) (*AdminState, error) { + vals := map[string]AdminState{ + "disabled": AdminStateDisabled, + "enabled": AdminStateEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := AdminState(input) + return &out, nil +} + +type DhGroup string + +const ( + DhGroupDHGroupOne DhGroup = "DHGroup1" + DhGroupDHGroupOneFour DhGroup = "DHGroup14" + DhGroupDHGroupTwo DhGroup = "DHGroup2" + DhGroupDHGroupTwoFour DhGroup = "DHGroup24" + DhGroupDHGroupTwoZeroFourEight DhGroup = "DHGroup2048" + DhGroupECPThreeEightFour DhGroup = "ECP384" + DhGroupECPTwoFiveSix DhGroup = "ECP256" + DhGroupNone DhGroup = "None" +) + +func PossibleValuesForDhGroup() []string { + return []string{ + string(DhGroupDHGroupOne), + string(DhGroupDHGroupOneFour), + string(DhGroupDHGroupTwo), + string(DhGroupDHGroupTwoFour), + string(DhGroupDHGroupTwoZeroFourEight), + string(DhGroupECPThreeEightFour), + string(DhGroupECPTwoFiveSix), + string(DhGroupNone), + } +} + +func (s *DhGroup) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDhGroup(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDhGroup(input string) (*DhGroup, error) { + vals := map[string]DhGroup{ + "dhgroup1": DhGroupDHGroupOne, + "dhgroup14": DhGroupDHGroupOneFour, + "dhgroup2": DhGroupDHGroupTwo, + "dhgroup24": DhGroupDHGroupTwoFour, + "dhgroup2048": DhGroupDHGroupTwoZeroFourEight, + "ecp384": DhGroupECPThreeEightFour, + "ecp256": DhGroupECPTwoFiveSix, + "none": DhGroupNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DhGroup(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type IPsecEncryption string + +const ( + IPsecEncryptionAESOneNineTwo IPsecEncryption = "AES192" + IPsecEncryptionAESOneTwoEight IPsecEncryption = "AES128" + IPsecEncryptionAESTwoFiveSix IPsecEncryption = "AES256" + IPsecEncryptionDES IPsecEncryption = "DES" + IPsecEncryptionDESThree IPsecEncryption = "DES3" + IPsecEncryptionGCMAESOneNineTwo IPsecEncryption = "GCMAES192" + IPsecEncryptionGCMAESOneTwoEight IPsecEncryption = "GCMAES128" + IPsecEncryptionGCMAESTwoFiveSix IPsecEncryption = "GCMAES256" + IPsecEncryptionNone IPsecEncryption = "None" +) + +func PossibleValuesForIPsecEncryption() []string { + return []string{ + string(IPsecEncryptionAESOneNineTwo), + string(IPsecEncryptionAESOneTwoEight), + string(IPsecEncryptionAESTwoFiveSix), + string(IPsecEncryptionDES), + string(IPsecEncryptionDESThree), + string(IPsecEncryptionGCMAESOneNineTwo), + string(IPsecEncryptionGCMAESOneTwoEight), + string(IPsecEncryptionGCMAESTwoFiveSix), + string(IPsecEncryptionNone), + } +} + +func (s *IPsecEncryption) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPsecEncryption(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPsecEncryption(input string) (*IPsecEncryption, error) { + vals := map[string]IPsecEncryption{ + "aes192": IPsecEncryptionAESOneNineTwo, + "aes128": IPsecEncryptionAESOneTwoEight, + "aes256": IPsecEncryptionAESTwoFiveSix, + "des": IPsecEncryptionDES, + "des3": IPsecEncryptionDESThree, + "gcmaes192": IPsecEncryptionGCMAESOneNineTwo, + "gcmaes128": IPsecEncryptionGCMAESOneTwoEight, + "gcmaes256": IPsecEncryptionGCMAESTwoFiveSix, + "none": IPsecEncryptionNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPsecEncryption(input) + return &out, nil +} + +type IPsecIntegrity string + +const ( + IPsecIntegrityGCMAESOneNineTwo IPsecIntegrity = "GCMAES192" + IPsecIntegrityGCMAESOneTwoEight IPsecIntegrity = "GCMAES128" + IPsecIntegrityGCMAESTwoFiveSix IPsecIntegrity = "GCMAES256" + IPsecIntegrityMDFive IPsecIntegrity = "MD5" + IPsecIntegritySHAOne IPsecIntegrity = "SHA1" + IPsecIntegritySHATwoFiveSix IPsecIntegrity = "SHA256" +) + +func PossibleValuesForIPsecIntegrity() []string { + return []string{ + string(IPsecIntegrityGCMAESOneNineTwo), + string(IPsecIntegrityGCMAESOneTwoEight), + string(IPsecIntegrityGCMAESTwoFiveSix), + string(IPsecIntegrityMDFive), + string(IPsecIntegritySHAOne), + string(IPsecIntegritySHATwoFiveSix), + } +} + +func (s *IPsecIntegrity) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPsecIntegrity(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPsecIntegrity(input string) (*IPsecIntegrity, error) { + vals := map[string]IPsecIntegrity{ + "gcmaes192": IPsecIntegrityGCMAESOneNineTwo, + "gcmaes128": IPsecIntegrityGCMAESOneTwoEight, + "gcmaes256": IPsecIntegrityGCMAESTwoFiveSix, + "md5": IPsecIntegrityMDFive, + "sha1": IPsecIntegritySHAOne, + "sha256": IPsecIntegritySHATwoFiveSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPsecIntegrity(input) + return &out, nil +} + +type IkeEncryption string + +const ( + IkeEncryptionAESOneNineTwo IkeEncryption = "AES192" + IkeEncryptionAESOneTwoEight IkeEncryption = "AES128" + IkeEncryptionAESTwoFiveSix IkeEncryption = "AES256" + IkeEncryptionDES IkeEncryption = "DES" + IkeEncryptionDESThree IkeEncryption = "DES3" + IkeEncryptionGCMAESOneTwoEight IkeEncryption = "GCMAES128" + IkeEncryptionGCMAESTwoFiveSix IkeEncryption = "GCMAES256" +) + +func PossibleValuesForIkeEncryption() []string { + return []string{ + string(IkeEncryptionAESOneNineTwo), + string(IkeEncryptionAESOneTwoEight), + string(IkeEncryptionAESTwoFiveSix), + string(IkeEncryptionDES), + string(IkeEncryptionDESThree), + string(IkeEncryptionGCMAESOneTwoEight), + string(IkeEncryptionGCMAESTwoFiveSix), + } +} + +func (s *IkeEncryption) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIkeEncryption(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIkeEncryption(input string) (*IkeEncryption, error) { + vals := map[string]IkeEncryption{ + "aes192": IkeEncryptionAESOneNineTwo, + "aes128": IkeEncryptionAESOneTwoEight, + "aes256": IkeEncryptionAESTwoFiveSix, + "des": IkeEncryptionDES, + "des3": IkeEncryptionDESThree, + "gcmaes128": IkeEncryptionGCMAESOneTwoEight, + "gcmaes256": IkeEncryptionGCMAESTwoFiveSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IkeEncryption(input) + return &out, nil +} + +type IkeIntegrity string + +const ( + IkeIntegrityGCMAESOneTwoEight IkeIntegrity = "GCMAES128" + IkeIntegrityGCMAESTwoFiveSix IkeIntegrity = "GCMAES256" + IkeIntegrityMDFive IkeIntegrity = "MD5" + IkeIntegritySHAOne IkeIntegrity = "SHA1" + IkeIntegritySHAThreeEightFour IkeIntegrity = "SHA384" + IkeIntegritySHATwoFiveSix IkeIntegrity = "SHA256" +) + +func PossibleValuesForIkeIntegrity() []string { + return []string{ + string(IkeIntegrityGCMAESOneTwoEight), + string(IkeIntegrityGCMAESTwoFiveSix), + string(IkeIntegrityMDFive), + string(IkeIntegritySHAOne), + string(IkeIntegritySHAThreeEightFour), + string(IkeIntegritySHATwoFiveSix), + } +} + +func (s *IkeIntegrity) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIkeIntegrity(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIkeIntegrity(input string) (*IkeIntegrity, error) { + vals := map[string]IkeIntegrity{ + "gcmaes128": IkeIntegrityGCMAESOneTwoEight, + "gcmaes256": IkeIntegrityGCMAESTwoFiveSix, + "md5": IkeIntegrityMDFive, + "sha1": IkeIntegritySHAOne, + "sha384": IkeIntegritySHAThreeEightFour, + "sha256": IkeIntegritySHATwoFiveSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IkeIntegrity(input) + return &out, nil +} + +type PfsGroup string + +const ( + PfsGroupECPThreeEightFour PfsGroup = "ECP384" + PfsGroupECPTwoFiveSix PfsGroup = "ECP256" + PfsGroupNone PfsGroup = "None" + PfsGroupPFSMM PfsGroup = "PFSMM" + PfsGroupPFSOne PfsGroup = "PFS1" + PfsGroupPFSOneFour PfsGroup = "PFS14" + PfsGroupPFSTwo PfsGroup = "PFS2" + PfsGroupPFSTwoFour PfsGroup = "PFS24" + PfsGroupPFSTwoZeroFourEight PfsGroup = "PFS2048" +) + +func PossibleValuesForPfsGroup() []string { + return []string{ + string(PfsGroupECPThreeEightFour), + string(PfsGroupECPTwoFiveSix), + string(PfsGroupNone), + string(PfsGroupPFSMM), + string(PfsGroupPFSOne), + string(PfsGroupPFSOneFour), + string(PfsGroupPFSTwo), + string(PfsGroupPFSTwoFour), + string(PfsGroupPFSTwoZeroFourEight), + } +} + +func (s *PfsGroup) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePfsGroup(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePfsGroup(input string) (*PfsGroup, error) { + vals := map[string]PfsGroup{ + "ecp384": PfsGroupECPThreeEightFour, + "ecp256": PfsGroupECPTwoFiveSix, + "none": PfsGroupNone, + "pfsmm": PfsGroupPFSMM, + "pfs1": PfsGroupPFSOne, + "pfs14": PfsGroupPFSOneFour, + "pfs2": PfsGroupPFSTwo, + "pfs24": PfsGroupPFSTwoFour, + "pfs2048": PfsGroupPFSTwoZeroFourEight, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PfsGroup(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type VirtualNetworkGatewayConnectionMode string + +const ( + VirtualNetworkGatewayConnectionModeDefault VirtualNetworkGatewayConnectionMode = "Default" + VirtualNetworkGatewayConnectionModeInitiatorOnly VirtualNetworkGatewayConnectionMode = "InitiatorOnly" + VirtualNetworkGatewayConnectionModeResponderOnly VirtualNetworkGatewayConnectionMode = "ResponderOnly" +) + +func PossibleValuesForVirtualNetworkGatewayConnectionMode() []string { + return []string{ + string(VirtualNetworkGatewayConnectionModeDefault), + string(VirtualNetworkGatewayConnectionModeInitiatorOnly), + string(VirtualNetworkGatewayConnectionModeResponderOnly), + } +} + +func (s *VirtualNetworkGatewayConnectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkGatewayConnectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkGatewayConnectionMode(input string) (*VirtualNetworkGatewayConnectionMode, error) { + vals := map[string]VirtualNetworkGatewayConnectionMode{ + "default": VirtualNetworkGatewayConnectionModeDefault, + "initiatoronly": VirtualNetworkGatewayConnectionModeInitiatorOnly, + "responderonly": VirtualNetworkGatewayConnectionModeResponderOnly, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkGatewayConnectionMode(input) + return &out, nil +} + +type VirtualNetworkGatewayConnectionProtocol string + +const ( + VirtualNetworkGatewayConnectionProtocolIKEvOne VirtualNetworkGatewayConnectionProtocol = "IKEv1" + VirtualNetworkGatewayConnectionProtocolIKEvTwo VirtualNetworkGatewayConnectionProtocol = "IKEv2" +) + +func PossibleValuesForVirtualNetworkGatewayConnectionProtocol() []string { + return []string{ + string(VirtualNetworkGatewayConnectionProtocolIKEvOne), + string(VirtualNetworkGatewayConnectionProtocolIKEvTwo), + } +} + +func (s *VirtualNetworkGatewayConnectionProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkGatewayConnectionProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkGatewayConnectionProtocol(input string) (*VirtualNetworkGatewayConnectionProtocol, error) { + vals := map[string]VirtualNetworkGatewayConnectionProtocol{ + "ikev1": VirtualNetworkGatewayConnectionProtocolIKEvOne, + "ikev2": VirtualNetworkGatewayConnectionProtocolIKEvTwo, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkGatewayConnectionProtocol(input) + return &out, nil +} + +type VirtualNetworkGatewayConnectionStatus string + +const ( + VirtualNetworkGatewayConnectionStatusConnected VirtualNetworkGatewayConnectionStatus = "Connected" + VirtualNetworkGatewayConnectionStatusConnecting VirtualNetworkGatewayConnectionStatus = "Connecting" + VirtualNetworkGatewayConnectionStatusNotConnected VirtualNetworkGatewayConnectionStatus = "NotConnected" + VirtualNetworkGatewayConnectionStatusUnknown VirtualNetworkGatewayConnectionStatus = "Unknown" +) + +func PossibleValuesForVirtualNetworkGatewayConnectionStatus() []string { + return []string{ + string(VirtualNetworkGatewayConnectionStatusConnected), + string(VirtualNetworkGatewayConnectionStatusConnecting), + string(VirtualNetworkGatewayConnectionStatusNotConnected), + string(VirtualNetworkGatewayConnectionStatusUnknown), + } +} + +func (s *VirtualNetworkGatewayConnectionStatus) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkGatewayConnectionStatus(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkGatewayConnectionStatus(input string) (*VirtualNetworkGatewayConnectionStatus, error) { + vals := map[string]VirtualNetworkGatewayConnectionStatus{ + "connected": VirtualNetworkGatewayConnectionStatusConnected, + "connecting": VirtualNetworkGatewayConnectionStatusConnecting, + "notconnected": VirtualNetworkGatewayConnectionStatusNotConnected, + "unknown": VirtualNetworkGatewayConnectionStatusUnknown, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkGatewayConnectionStatus(input) + return &out, nil +} + +type VirtualNetworkGatewayConnectionType string + +const ( + VirtualNetworkGatewayConnectionTypeExpressRoute VirtualNetworkGatewayConnectionType = "ExpressRoute" + VirtualNetworkGatewayConnectionTypeIPsec VirtualNetworkGatewayConnectionType = "IPsec" + VirtualNetworkGatewayConnectionTypeVPNClient VirtualNetworkGatewayConnectionType = "VPNClient" + VirtualNetworkGatewayConnectionTypeVnetTwoVnet VirtualNetworkGatewayConnectionType = "Vnet2Vnet" +) + +func PossibleValuesForVirtualNetworkGatewayConnectionType() []string { + return []string{ + string(VirtualNetworkGatewayConnectionTypeExpressRoute), + string(VirtualNetworkGatewayConnectionTypeIPsec), + string(VirtualNetworkGatewayConnectionTypeVPNClient), + string(VirtualNetworkGatewayConnectionTypeVnetTwoVnet), + } +} + +func (s *VirtualNetworkGatewayConnectionType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkGatewayConnectionType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkGatewayConnectionType(input string) (*VirtualNetworkGatewayConnectionType, error) { + vals := map[string]VirtualNetworkGatewayConnectionType{ + "expressroute": VirtualNetworkGatewayConnectionTypeExpressRoute, + "ipsec": VirtualNetworkGatewayConnectionTypeIPsec, + "vpnclient": VirtualNetworkGatewayConnectionTypeVPNClient, + "vnet2vnet": VirtualNetworkGatewayConnectionTypeVnetTwoVnet, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkGatewayConnectionType(input) + return &out, nil +} + +type VirtualNetworkGatewaySkuName string + +const ( + VirtualNetworkGatewaySkuNameBasic VirtualNetworkGatewaySkuName = "Basic" + VirtualNetworkGatewaySkuNameErGwOneAZ VirtualNetworkGatewaySkuName = "ErGw1AZ" + VirtualNetworkGatewaySkuNameErGwScale VirtualNetworkGatewaySkuName = "ErGwScale" + VirtualNetworkGatewaySkuNameErGwThreeAZ VirtualNetworkGatewaySkuName = "ErGw3AZ" + VirtualNetworkGatewaySkuNameErGwTwoAZ VirtualNetworkGatewaySkuName = "ErGw2AZ" + VirtualNetworkGatewaySkuNameHighPerformance VirtualNetworkGatewaySkuName = "HighPerformance" + VirtualNetworkGatewaySkuNameStandard VirtualNetworkGatewaySkuName = "Standard" + VirtualNetworkGatewaySkuNameUltraPerformance VirtualNetworkGatewaySkuName = "UltraPerformance" + VirtualNetworkGatewaySkuNameVpnGwFive VirtualNetworkGatewaySkuName = "VpnGw5" + VirtualNetworkGatewaySkuNameVpnGwFiveAZ VirtualNetworkGatewaySkuName = "VpnGw5AZ" + VirtualNetworkGatewaySkuNameVpnGwFour VirtualNetworkGatewaySkuName = "VpnGw4" + VirtualNetworkGatewaySkuNameVpnGwFourAZ VirtualNetworkGatewaySkuName = "VpnGw4AZ" + VirtualNetworkGatewaySkuNameVpnGwOne VirtualNetworkGatewaySkuName = "VpnGw1" + VirtualNetworkGatewaySkuNameVpnGwOneAZ VirtualNetworkGatewaySkuName = "VpnGw1AZ" + VirtualNetworkGatewaySkuNameVpnGwThree VirtualNetworkGatewaySkuName = "VpnGw3" + VirtualNetworkGatewaySkuNameVpnGwThreeAZ VirtualNetworkGatewaySkuName = "VpnGw3AZ" + VirtualNetworkGatewaySkuNameVpnGwTwo VirtualNetworkGatewaySkuName = "VpnGw2" + VirtualNetworkGatewaySkuNameVpnGwTwoAZ VirtualNetworkGatewaySkuName = "VpnGw2AZ" +) + +func PossibleValuesForVirtualNetworkGatewaySkuName() []string { + return []string{ + string(VirtualNetworkGatewaySkuNameBasic), + string(VirtualNetworkGatewaySkuNameErGwOneAZ), + string(VirtualNetworkGatewaySkuNameErGwScale), + string(VirtualNetworkGatewaySkuNameErGwThreeAZ), + string(VirtualNetworkGatewaySkuNameErGwTwoAZ), + string(VirtualNetworkGatewaySkuNameHighPerformance), + string(VirtualNetworkGatewaySkuNameStandard), + string(VirtualNetworkGatewaySkuNameUltraPerformance), + string(VirtualNetworkGatewaySkuNameVpnGwFive), + string(VirtualNetworkGatewaySkuNameVpnGwFiveAZ), + string(VirtualNetworkGatewaySkuNameVpnGwFour), + string(VirtualNetworkGatewaySkuNameVpnGwFourAZ), + string(VirtualNetworkGatewaySkuNameVpnGwOne), + string(VirtualNetworkGatewaySkuNameVpnGwOneAZ), + string(VirtualNetworkGatewaySkuNameVpnGwThree), + string(VirtualNetworkGatewaySkuNameVpnGwThreeAZ), + string(VirtualNetworkGatewaySkuNameVpnGwTwo), + string(VirtualNetworkGatewaySkuNameVpnGwTwoAZ), + } +} + +func (s *VirtualNetworkGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkGatewaySkuName(input string) (*VirtualNetworkGatewaySkuName, error) { + vals := map[string]VirtualNetworkGatewaySkuName{ + "basic": VirtualNetworkGatewaySkuNameBasic, + "ergw1az": VirtualNetworkGatewaySkuNameErGwOneAZ, + "ergwscale": VirtualNetworkGatewaySkuNameErGwScale, + "ergw3az": VirtualNetworkGatewaySkuNameErGwThreeAZ, + "ergw2az": VirtualNetworkGatewaySkuNameErGwTwoAZ, + "highperformance": VirtualNetworkGatewaySkuNameHighPerformance, + "standard": VirtualNetworkGatewaySkuNameStandard, + "ultraperformance": VirtualNetworkGatewaySkuNameUltraPerformance, + "vpngw5": VirtualNetworkGatewaySkuNameVpnGwFive, + "vpngw5az": VirtualNetworkGatewaySkuNameVpnGwFiveAZ, + "vpngw4": VirtualNetworkGatewaySkuNameVpnGwFour, + "vpngw4az": VirtualNetworkGatewaySkuNameVpnGwFourAZ, + "vpngw1": VirtualNetworkGatewaySkuNameVpnGwOne, + "vpngw1az": VirtualNetworkGatewaySkuNameVpnGwOneAZ, + "vpngw3": VirtualNetworkGatewaySkuNameVpnGwThree, + "vpngw3az": VirtualNetworkGatewaySkuNameVpnGwThreeAZ, + "vpngw2": VirtualNetworkGatewaySkuNameVpnGwTwo, + "vpngw2az": VirtualNetworkGatewaySkuNameVpnGwTwoAZ, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkGatewaySkuName(input) + return &out, nil +} + +type VirtualNetworkGatewaySkuTier string + +const ( + VirtualNetworkGatewaySkuTierBasic VirtualNetworkGatewaySkuTier = "Basic" + VirtualNetworkGatewaySkuTierErGwOneAZ VirtualNetworkGatewaySkuTier = "ErGw1AZ" + VirtualNetworkGatewaySkuTierErGwScale VirtualNetworkGatewaySkuTier = "ErGwScale" + VirtualNetworkGatewaySkuTierErGwThreeAZ VirtualNetworkGatewaySkuTier = "ErGw3AZ" + VirtualNetworkGatewaySkuTierErGwTwoAZ VirtualNetworkGatewaySkuTier = "ErGw2AZ" + VirtualNetworkGatewaySkuTierHighPerformance VirtualNetworkGatewaySkuTier = "HighPerformance" + VirtualNetworkGatewaySkuTierStandard VirtualNetworkGatewaySkuTier = "Standard" + VirtualNetworkGatewaySkuTierUltraPerformance VirtualNetworkGatewaySkuTier = "UltraPerformance" + VirtualNetworkGatewaySkuTierVpnGwFive VirtualNetworkGatewaySkuTier = "VpnGw5" + VirtualNetworkGatewaySkuTierVpnGwFiveAZ VirtualNetworkGatewaySkuTier = "VpnGw5AZ" + VirtualNetworkGatewaySkuTierVpnGwFour VirtualNetworkGatewaySkuTier = "VpnGw4" + VirtualNetworkGatewaySkuTierVpnGwFourAZ VirtualNetworkGatewaySkuTier = "VpnGw4AZ" + VirtualNetworkGatewaySkuTierVpnGwOne VirtualNetworkGatewaySkuTier = "VpnGw1" + VirtualNetworkGatewaySkuTierVpnGwOneAZ VirtualNetworkGatewaySkuTier = "VpnGw1AZ" + VirtualNetworkGatewaySkuTierVpnGwThree VirtualNetworkGatewaySkuTier = "VpnGw3" + VirtualNetworkGatewaySkuTierVpnGwThreeAZ VirtualNetworkGatewaySkuTier = "VpnGw3AZ" + VirtualNetworkGatewaySkuTierVpnGwTwo VirtualNetworkGatewaySkuTier = "VpnGw2" + VirtualNetworkGatewaySkuTierVpnGwTwoAZ VirtualNetworkGatewaySkuTier = "VpnGw2AZ" +) + +func PossibleValuesForVirtualNetworkGatewaySkuTier() []string { + return []string{ + string(VirtualNetworkGatewaySkuTierBasic), + string(VirtualNetworkGatewaySkuTierErGwOneAZ), + string(VirtualNetworkGatewaySkuTierErGwScale), + string(VirtualNetworkGatewaySkuTierErGwThreeAZ), + string(VirtualNetworkGatewaySkuTierErGwTwoAZ), + string(VirtualNetworkGatewaySkuTierHighPerformance), + string(VirtualNetworkGatewaySkuTierStandard), + string(VirtualNetworkGatewaySkuTierUltraPerformance), + string(VirtualNetworkGatewaySkuTierVpnGwFive), + string(VirtualNetworkGatewaySkuTierVpnGwFiveAZ), + string(VirtualNetworkGatewaySkuTierVpnGwFour), + string(VirtualNetworkGatewaySkuTierVpnGwFourAZ), + string(VirtualNetworkGatewaySkuTierVpnGwOne), + string(VirtualNetworkGatewaySkuTierVpnGwOneAZ), + string(VirtualNetworkGatewaySkuTierVpnGwThree), + string(VirtualNetworkGatewaySkuTierVpnGwThreeAZ), + string(VirtualNetworkGatewaySkuTierVpnGwTwo), + string(VirtualNetworkGatewaySkuTierVpnGwTwoAZ), + } +} + +func (s *VirtualNetworkGatewaySkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkGatewaySkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkGatewaySkuTier(input string) (*VirtualNetworkGatewaySkuTier, error) { + vals := map[string]VirtualNetworkGatewaySkuTier{ + "basic": VirtualNetworkGatewaySkuTierBasic, + "ergw1az": VirtualNetworkGatewaySkuTierErGwOneAZ, + "ergwscale": VirtualNetworkGatewaySkuTierErGwScale, + "ergw3az": VirtualNetworkGatewaySkuTierErGwThreeAZ, + "ergw2az": VirtualNetworkGatewaySkuTierErGwTwoAZ, + "highperformance": VirtualNetworkGatewaySkuTierHighPerformance, + "standard": VirtualNetworkGatewaySkuTierStandard, + "ultraperformance": VirtualNetworkGatewaySkuTierUltraPerformance, + "vpngw5": VirtualNetworkGatewaySkuTierVpnGwFive, + "vpngw5az": VirtualNetworkGatewaySkuTierVpnGwFiveAZ, + "vpngw4": VirtualNetworkGatewaySkuTierVpnGwFour, + "vpngw4az": VirtualNetworkGatewaySkuTierVpnGwFourAZ, + "vpngw1": VirtualNetworkGatewaySkuTierVpnGwOne, + "vpngw1az": VirtualNetworkGatewaySkuTierVpnGwOneAZ, + "vpngw3": VirtualNetworkGatewaySkuTierVpnGwThree, + "vpngw3az": VirtualNetworkGatewaySkuTierVpnGwThreeAZ, + "vpngw2": VirtualNetworkGatewaySkuTierVpnGwTwo, + "vpngw2az": VirtualNetworkGatewaySkuTierVpnGwTwoAZ, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkGatewaySkuTier(input) + return &out, nil +} + +type VirtualNetworkGatewayType string + +const ( + VirtualNetworkGatewayTypeExpressRoute VirtualNetworkGatewayType = "ExpressRoute" + VirtualNetworkGatewayTypeLocalGateway VirtualNetworkGatewayType = "LocalGateway" + VirtualNetworkGatewayTypeVpn VirtualNetworkGatewayType = "Vpn" +) + +func PossibleValuesForVirtualNetworkGatewayType() []string { + return []string{ + string(VirtualNetworkGatewayTypeExpressRoute), + string(VirtualNetworkGatewayTypeLocalGateway), + string(VirtualNetworkGatewayTypeVpn), + } +} + +func (s *VirtualNetworkGatewayType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkGatewayType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkGatewayType(input string) (*VirtualNetworkGatewayType, error) { + vals := map[string]VirtualNetworkGatewayType{ + "expressroute": VirtualNetworkGatewayTypeExpressRoute, + "localgateway": VirtualNetworkGatewayTypeLocalGateway, + "vpn": VirtualNetworkGatewayTypeVpn, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkGatewayType(input) + return &out, nil +} + +type VpnAuthenticationType string + +const ( + VpnAuthenticationTypeAAD VpnAuthenticationType = "AAD" + VpnAuthenticationTypeCertificate VpnAuthenticationType = "Certificate" + VpnAuthenticationTypeRadius VpnAuthenticationType = "Radius" +) + +func PossibleValuesForVpnAuthenticationType() []string { + return []string{ + string(VpnAuthenticationTypeAAD), + string(VpnAuthenticationTypeCertificate), + string(VpnAuthenticationTypeRadius), + } +} + +func (s *VpnAuthenticationType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnAuthenticationType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnAuthenticationType(input string) (*VpnAuthenticationType, error) { + vals := map[string]VpnAuthenticationType{ + "aad": VpnAuthenticationTypeAAD, + "certificate": VpnAuthenticationTypeCertificate, + "radius": VpnAuthenticationTypeRadius, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnAuthenticationType(input) + return &out, nil +} + +type VpnClientProtocol string + +const ( + VpnClientProtocolIkeVTwo VpnClientProtocol = "IkeV2" + VpnClientProtocolOpenVPN VpnClientProtocol = "OpenVPN" + VpnClientProtocolSSTP VpnClientProtocol = "SSTP" +) + +func PossibleValuesForVpnClientProtocol() []string { + return []string{ + string(VpnClientProtocolIkeVTwo), + string(VpnClientProtocolOpenVPN), + string(VpnClientProtocolSSTP), + } +} + +func (s *VpnClientProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnClientProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnClientProtocol(input string) (*VpnClientProtocol, error) { + vals := map[string]VpnClientProtocol{ + "ikev2": VpnClientProtocolIkeVTwo, + "openvpn": VpnClientProtocolOpenVPN, + "sstp": VpnClientProtocolSSTP, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnClientProtocol(input) + return &out, nil +} + +type VpnGatewayGeneration string + +const ( + VpnGatewayGenerationGenerationOne VpnGatewayGeneration = "Generation1" + VpnGatewayGenerationGenerationTwo VpnGatewayGeneration = "Generation2" + VpnGatewayGenerationNone VpnGatewayGeneration = "None" +) + +func PossibleValuesForVpnGatewayGeneration() []string { + return []string{ + string(VpnGatewayGenerationGenerationOne), + string(VpnGatewayGenerationGenerationTwo), + string(VpnGatewayGenerationNone), + } +} + +func (s *VpnGatewayGeneration) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnGatewayGeneration(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnGatewayGeneration(input string) (*VpnGatewayGeneration, error) { + vals := map[string]VpnGatewayGeneration{ + "generation1": VpnGatewayGenerationGenerationOne, + "generation2": VpnGatewayGenerationGenerationTwo, + "none": VpnGatewayGenerationNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnGatewayGeneration(input) + return &out, nil +} + +type VpnNatRuleMode string + +const ( + VpnNatRuleModeEgressSnat VpnNatRuleMode = "EgressSnat" + VpnNatRuleModeIngressSnat VpnNatRuleMode = "IngressSnat" +) + +func PossibleValuesForVpnNatRuleMode() []string { + return []string{ + string(VpnNatRuleModeEgressSnat), + string(VpnNatRuleModeIngressSnat), + } +} + +func (s *VpnNatRuleMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnNatRuleMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnNatRuleMode(input string) (*VpnNatRuleMode, error) { + vals := map[string]VpnNatRuleMode{ + "egresssnat": VpnNatRuleModeEgressSnat, + "ingresssnat": VpnNatRuleModeIngressSnat, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnNatRuleMode(input) + return &out, nil +} + +type VpnNatRuleType string + +const ( + VpnNatRuleTypeDynamic VpnNatRuleType = "Dynamic" + VpnNatRuleTypeStatic VpnNatRuleType = "Static" +) + +func PossibleValuesForVpnNatRuleType() []string { + return []string{ + string(VpnNatRuleTypeDynamic), + string(VpnNatRuleTypeStatic), + } +} + +func (s *VpnNatRuleType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnNatRuleType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnNatRuleType(input string) (*VpnNatRuleType, error) { + vals := map[string]VpnNatRuleType{ + "dynamic": VpnNatRuleTypeDynamic, + "static": VpnNatRuleTypeStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnNatRuleType(input) + return &out, nil +} + +type VpnPolicyMemberAttributeType string + +const ( + VpnPolicyMemberAttributeTypeAADGroupId VpnPolicyMemberAttributeType = "AADGroupId" + VpnPolicyMemberAttributeTypeCertificateGroupId VpnPolicyMemberAttributeType = "CertificateGroupId" + VpnPolicyMemberAttributeTypeRadiusAzureGroupId VpnPolicyMemberAttributeType = "RadiusAzureGroupId" +) + +func PossibleValuesForVpnPolicyMemberAttributeType() []string { + return []string{ + string(VpnPolicyMemberAttributeTypeAADGroupId), + string(VpnPolicyMemberAttributeTypeCertificateGroupId), + string(VpnPolicyMemberAttributeTypeRadiusAzureGroupId), + } +} + +func (s *VpnPolicyMemberAttributeType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnPolicyMemberAttributeType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnPolicyMemberAttributeType(input string) (*VpnPolicyMemberAttributeType, error) { + vals := map[string]VpnPolicyMemberAttributeType{ + "aadgroupid": VpnPolicyMemberAttributeTypeAADGroupId, + "certificategroupid": VpnPolicyMemberAttributeTypeCertificateGroupId, + "radiusazuregroupid": VpnPolicyMemberAttributeTypeRadiusAzureGroupId, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnPolicyMemberAttributeType(input) + return &out, nil +} + +type VpnType string + +const ( + VpnTypePolicyBased VpnType = "PolicyBased" + VpnTypeRouteBased VpnType = "RouteBased" +) + +func PossibleValuesForVpnType() []string { + return []string{ + string(VpnTypePolicyBased), + string(VpnTypeRouteBased), + } +} + +func (s *VpnType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnType(input string) (*VpnType, error) { + vals := map[string]VpnType{ + "policybased": VpnTypePolicyBased, + "routebased": VpnTypeRouteBased, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnType(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/id_connection.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/id_connection.go new file mode 100644 index 00000000000..23a8c6154a7 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/id_connection.go @@ -0,0 +1,130 @@ +package virtualnetworkgatewayconnections + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ConnectionId{}) +} + +var _ resourceids.ResourceId = &ConnectionId{} + +// ConnectionId is a struct representing the Resource ID for a Connection +type ConnectionId struct { + SubscriptionId string + ResourceGroupName string + ConnectionName string +} + +// NewConnectionID returns a new ConnectionId struct +func NewConnectionID(subscriptionId string, resourceGroupName string, connectionName string) ConnectionId { + return ConnectionId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ConnectionName: connectionName, + } +} + +// ParseConnectionID parses 'input' into a ConnectionId +func ParseConnectionID(input string) (*ConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&ConnectionId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseConnectionIDInsensitively parses 'input' case-insensitively into a ConnectionId +// note: this method should only be used for API response data and not user input +func ParseConnectionIDInsensitively(input string) (*ConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&ConnectionId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ConnectionId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ConnectionName, ok = input.Parsed["connectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "connectionName", input) + } + + return nil +} + +// ValidateConnectionID checks that 'input' can be parsed as a Connection ID +func ValidateConnectionID(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 := ParseConnectionID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Connection ID +func (id ConnectionId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/connections/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ConnectionName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Connection ID +func (id ConnectionId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticConnections", "connections", "connections"), + resourceids.UserSpecifiedSegment("connectionName", "connectionValue"), + } +} + +// String returns a human-readable description of this Connection ID +func (id ConnectionId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Connection Name: %q", id.ConnectionName), + } + return fmt.Sprintf("Connection (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/id_connection_test.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/id_connection_test.go new file mode 100644 index 00000000000..739348c5d82 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/id_connection_test.go @@ -0,0 +1,282 @@ +package virtualnetworkgatewayconnections + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ConnectionId{} + +func TestNewConnectionID(t *testing.T) { + id := NewConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "connectionValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ConnectionName != "connectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'ConnectionName'", id.ConnectionName, "connectionValue") + } +} + +func TestFormatConnectionID(t *testing.T) { + actual := NewConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "connectionValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/connections/connectionValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseConnectionID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/connections", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/connections/connectionValue", + Expected: &ConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ConnectionName: "connectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/connections/connectionValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseConnectionID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ConnectionName != v.Expected.ConnectionName { + t.Fatalf("Expected %q but got %q for ConnectionName", v.Expected.ConnectionName, actual.ConnectionName) + } + + } +} + +func TestParseConnectionIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/connections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/cOnNeCtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/connections/connectionValue", + Expected: &ConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ConnectionName: "connectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/connections/connectionValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/cOnNeCtIoNs/cOnNeCtIoNvAlUe", + Expected: &ConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ConnectionName: "cOnNeCtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/cOnNeCtIoNs/cOnNeCtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseConnectionIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ConnectionName != v.Expected.ConnectionName { + t.Fatalf("Expected %q but got %q for ConnectionName", v.Expected.ConnectionName, actual.ConnectionName) + } + + } +} + +func TestSegmentsForConnectionId(t *testing.T) { + segments := ConnectionId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ConnectionId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_createorupdate.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_createorupdate.go new file mode 100644 index 00000000000..2c95ee84254 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_createorupdate.go @@ -0,0 +1,75 @@ +package virtualnetworkgatewayconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VirtualNetworkGatewayConnection +} + +// CreateOrUpdate ... +func (c VirtualNetworkGatewayConnectionsClient) CreateOrUpdate(ctx context.Context, id ConnectionId, input VirtualNetworkGatewayConnection) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c VirtualNetworkGatewayConnectionsClient) CreateOrUpdateThenPoll(ctx context.Context, id ConnectionId, input VirtualNetworkGatewayConnection) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_delete.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_delete.go new file mode 100644 index 00000000000..4d46161ff40 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_delete.go @@ -0,0 +1,71 @@ +package virtualnetworkgatewayconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c VirtualNetworkGatewayConnectionsClient) Delete(ctx context.Context, id ConnectionId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c VirtualNetworkGatewayConnectionsClient) DeleteThenPoll(ctx context.Context, id ConnectionId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_get.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_get.go new file mode 100644 index 00000000000..e00568d96cb --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_get.go @@ -0,0 +1,54 @@ +package virtualnetworkgatewayconnections + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VirtualNetworkGatewayConnection +} + +// Get ... +func (c VirtualNetworkGatewayConnectionsClient) Get(ctx context.Context, id ConnectionId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VirtualNetworkGatewayConnection + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_getikesas.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_getikesas.go new file mode 100644 index 00000000000..f146120f19e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_getikesas.go @@ -0,0 +1,71 @@ +package virtualnetworkgatewayconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetIkeSasOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *string +} + +// GetIkeSas ... +func (c VirtualNetworkGatewayConnectionsClient) GetIkeSas(ctx context.Context, id ConnectionId) (result GetIkeSasOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/getikesas", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// GetIkeSasThenPoll performs GetIkeSas then polls until it's completed +func (c VirtualNetworkGatewayConnectionsClient) GetIkeSasThenPoll(ctx context.Context, id ConnectionId) error { + result, err := c.GetIkeSas(ctx, id) + if err != nil { + return fmt.Errorf("performing GetIkeSas: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after GetIkeSas: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_getsharedkey.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_getsharedkey.go new file mode 100644 index 00000000000..bc9ecd13466 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_getsharedkey.go @@ -0,0 +1,55 @@ +package virtualnetworkgatewayconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetSharedKeyOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *ConnectionSharedKey +} + +// GetSharedKey ... +func (c VirtualNetworkGatewayConnectionsClient) GetSharedKey(ctx context.Context, id ConnectionId) (result GetSharedKeyOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/sharedkey", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model ConnectionSharedKey + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_list.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_list.go new file mode 100644 index 00000000000..6c9d02a4538 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_list.go @@ -0,0 +1,93 @@ +package virtualnetworkgatewayconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VirtualNetworkGatewayConnection +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []VirtualNetworkGatewayConnection +} + +// List ... +func (c VirtualNetworkGatewayConnectionsClient) List(ctx context.Context, id commonids.ResourceGroupId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/connections", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VirtualNetworkGatewayConnection `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c VirtualNetworkGatewayConnectionsClient) ListComplete(ctx context.Context, id commonids.ResourceGroupId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, VirtualNetworkGatewayConnectionOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualNetworkGatewayConnectionsClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate VirtualNetworkGatewayConnectionOperationPredicate) (result ListCompleteResult, err error) { + items := make([]VirtualNetworkGatewayConnection, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_resetconnection.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_resetconnection.go new file mode 100644 index 00000000000..7898a434030 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_resetconnection.go @@ -0,0 +1,69 @@ +package virtualnetworkgatewayconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResetConnectionOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// ResetConnection ... +func (c VirtualNetworkGatewayConnectionsClient) ResetConnection(ctx context.Context, id ConnectionId) (result ResetConnectionOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/resetconnection", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// ResetConnectionThenPoll performs ResetConnection then polls until it's completed +func (c VirtualNetworkGatewayConnectionsClient) ResetConnectionThenPoll(ctx context.Context, id ConnectionId) error { + result, err := c.ResetConnection(ctx, id) + if err != nil { + return fmt.Errorf("performing ResetConnection: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after ResetConnection: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_resetsharedkey.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_resetsharedkey.go new file mode 100644 index 00000000000..37c842b0ba1 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_resetsharedkey.go @@ -0,0 +1,75 @@ +package virtualnetworkgatewayconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResetSharedKeyOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *ConnectionResetSharedKey +} + +// ResetSharedKey ... +func (c VirtualNetworkGatewayConnectionsClient) ResetSharedKey(ctx context.Context, id ConnectionId, input ConnectionResetSharedKey) (result ResetSharedKeyOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/sharedkey/reset", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// ResetSharedKeyThenPoll performs ResetSharedKey then polls until it's completed +func (c VirtualNetworkGatewayConnectionsClient) ResetSharedKeyThenPoll(ctx context.Context, id ConnectionId, input ConnectionResetSharedKey) error { + result, err := c.ResetSharedKey(ctx, id, input) + if err != nil { + return fmt.Errorf("performing ResetSharedKey: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after ResetSharedKey: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_setsharedkey.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_setsharedkey.go new file mode 100644 index 00000000000..7cce553c953 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_setsharedkey.go @@ -0,0 +1,75 @@ +package virtualnetworkgatewayconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SetSharedKeyOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *ConnectionSharedKey +} + +// SetSharedKey ... +func (c VirtualNetworkGatewayConnectionsClient) SetSharedKey(ctx context.Context, id ConnectionId, input ConnectionSharedKey) (result SetSharedKeyOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: fmt.Sprintf("%s/sharedkey", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// SetSharedKeyThenPoll performs SetSharedKey then polls until it's completed +func (c VirtualNetworkGatewayConnectionsClient) SetSharedKeyThenPoll(ctx context.Context, id ConnectionId, input ConnectionSharedKey) error { + result, err := c.SetSharedKey(ctx, id, input) + if err != nil { + return fmt.Errorf("performing SetSharedKey: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after SetSharedKey: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_startpacketcapture.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_startpacketcapture.go new file mode 100644 index 00000000000..d0bd4f6819d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_startpacketcapture.go @@ -0,0 +1,75 @@ +package virtualnetworkgatewayconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StartPacketCaptureOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *string +} + +// StartPacketCapture ... +func (c VirtualNetworkGatewayConnectionsClient) StartPacketCapture(ctx context.Context, id ConnectionId, input VpnPacketCaptureStartParameters) (result StartPacketCaptureOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/startPacketCapture", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// StartPacketCaptureThenPoll performs StartPacketCapture then polls until it's completed +func (c VirtualNetworkGatewayConnectionsClient) StartPacketCaptureThenPoll(ctx context.Context, id ConnectionId, input VpnPacketCaptureStartParameters) error { + result, err := c.StartPacketCapture(ctx, id, input) + if err != nil { + return fmt.Errorf("performing StartPacketCapture: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after StartPacketCapture: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_stoppacketcapture.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_stoppacketcapture.go new file mode 100644 index 00000000000..8741b058a40 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_stoppacketcapture.go @@ -0,0 +1,75 @@ +package virtualnetworkgatewayconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StopPacketCaptureOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *string +} + +// StopPacketCapture ... +func (c VirtualNetworkGatewayConnectionsClient) StopPacketCapture(ctx context.Context, id ConnectionId, input VpnPacketCaptureStopParameters) (result StopPacketCaptureOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/stopPacketCapture", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// StopPacketCaptureThenPoll performs StopPacketCapture then polls until it's completed +func (c VirtualNetworkGatewayConnectionsClient) StopPacketCaptureThenPoll(ctx context.Context, id ConnectionId, input VpnPacketCaptureStopParameters) error { + result, err := c.StopPacketCapture(ctx, id, input) + if err != nil { + return fmt.Errorf("performing StopPacketCapture: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after StopPacketCapture: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_updatetags.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_updatetags.go new file mode 100644 index 00000000000..6a0ba8aaae8 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/method_updatetags.go @@ -0,0 +1,75 @@ +package virtualnetworkgatewayconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VirtualNetworkGatewayConnection +} + +// UpdateTags ... +func (c VirtualNetworkGatewayConnectionsClient) UpdateTags(ctx context.Context, id ConnectionId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// UpdateTagsThenPoll performs UpdateTags then polls until it's completed +func (c VirtualNetworkGatewayConnectionsClient) UpdateTagsThenPoll(ctx context.Context, id ConnectionId, input TagsObject) error { + result, err := c.UpdateTags(ctx, id, input) + if err != nil { + return fmt.Errorf("performing UpdateTags: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after UpdateTags: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_addressspace.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_addressspace.go new file mode 100644 index 00000000000..e94b1820056 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_addressspace.go @@ -0,0 +1,8 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AddressSpace struct { + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_bgpsettings.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_bgpsettings.go new file mode 100644 index 00000000000..e03680282e6 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_bgpsettings.go @@ -0,0 +1,11 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BgpSettings struct { + Asn *int64 `json:"asn,omitempty"` + BgpPeeringAddress *string `json:"bgpPeeringAddress,omitempty"` + BgpPeeringAddresses *[]IPConfigurationBgpPeeringAddress `json:"bgpPeeringAddresses,omitempty"` + PeerWeight *int64 `json:"peerWeight,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_connectionresetsharedkey.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_connectionresetsharedkey.go new file mode 100644 index 00000000000..3e1887b9d36 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_connectionresetsharedkey.go @@ -0,0 +1,8 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionResetSharedKey struct { + KeyLength int64 `json:"keyLength"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_connectionsharedkey.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_connectionsharedkey.go new file mode 100644 index 00000000000..069812d03a4 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_connectionsharedkey.go @@ -0,0 +1,9 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConnectionSharedKey struct { + Id *string `json:"id,omitempty"` + Value string `json:"value"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_gatewaycustombgpipaddressipconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_gatewaycustombgpipaddressipconfiguration.go new file mode 100644 index 00000000000..7fda76a8317 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_gatewaycustombgpipaddressipconfiguration.go @@ -0,0 +1,9 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayCustomBgpIPAddressIPConfiguration struct { + CustomBgpIPAddress string `json:"customBgpIpAddress"` + IPConfigurationId string `json:"ipConfigurationId"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_ipconfigurationbgppeeringaddress.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_ipconfigurationbgppeeringaddress.go new file mode 100644 index 00000000000..dd6001591ee --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_ipconfigurationbgppeeringaddress.go @@ -0,0 +1,11 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationBgpPeeringAddress struct { + CustomBgpIPAddresses *[]string `json:"customBgpIpAddresses,omitempty"` + DefaultBgpIPAddresses *[]string `json:"defaultBgpIpAddresses,omitempty"` + IPconfigurationId *string `json:"ipconfigurationId,omitempty"` + TunnelIPAddresses *[]string `json:"tunnelIpAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_ipsecpolicy.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_ipsecpolicy.go new file mode 100644 index 00000000000..e36e053ac75 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_ipsecpolicy.go @@ -0,0 +1,15 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPsecPolicy struct { + DhGroup DhGroup `json:"dhGroup"` + IPsecEncryption IPsecEncryption `json:"ipsecEncryption"` + IPsecIntegrity IPsecIntegrity `json:"ipsecIntegrity"` + IkeEncryption IkeEncryption `json:"ikeEncryption"` + IkeIntegrity IkeIntegrity `json:"ikeIntegrity"` + PfsGroup PfsGroup `json:"pfsGroup"` + SaDataSizeKilobytes int64 `json:"saDataSizeKilobytes"` + SaLifeTimeSeconds int64 `json:"saLifeTimeSeconds"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_localnetworkgateway.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_localnetworkgateway.go new file mode 100644 index 00000000000..9ddafdd0d6e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_localnetworkgateway.go @@ -0,0 +1,14 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LocalNetworkGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties LocalNetworkGatewayPropertiesFormat `json:"properties"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_localnetworkgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_localnetworkgatewaypropertiesformat.go new file mode 100644 index 00000000000..bf0176c3023 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_localnetworkgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LocalNetworkGatewayPropertiesFormat struct { + BgpSettings *BgpSettings `json:"bgpSettings,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + GatewayIPAddress *string `json:"gatewayIpAddress,omitempty"` + LocalNetworkAddressSpace *AddressSpace `json:"localNetworkAddressSpace,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_radiusserver.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_radiusserver.go new file mode 100644 index 00000000000..ffc93e64965 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_radiusserver.go @@ -0,0 +1,10 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RadiusServer struct { + RadiusServerAddress string `json:"radiusServerAddress"` + RadiusServerScore *int64 `json:"radiusServerScore,omitempty"` + RadiusServerSecret *string `json:"radiusServerSecret,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_subresource.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_subresource.go new file mode 100644 index 00000000000..25e6382622d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_subresource.go @@ -0,0 +1,8 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_tagsobject.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_tagsobject.go new file mode 100644 index 00000000000..5f1bce5d03d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_tagsobject.go @@ -0,0 +1,8 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_trafficselectorpolicy.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_trafficselectorpolicy.go new file mode 100644 index 00000000000..7d824402850 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_trafficselectorpolicy.go @@ -0,0 +1,9 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficSelectorPolicy struct { + LocalAddressRanges []string `json:"localAddressRanges"` + RemoteAddressRanges []string `json:"remoteAddressRanges"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_tunnelconnectionhealth.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_tunnelconnectionhealth.go new file mode 100644 index 00000000000..71722a9b5e7 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_tunnelconnectionhealth.go @@ -0,0 +1,12 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TunnelConnectionHealth struct { + ConnectionStatus *VirtualNetworkGatewayConnectionStatus `json:"connectionStatus,omitempty"` + EgressBytesTransferred *int64 `json:"egressBytesTransferred,omitempty"` + IngressBytesTransferred *int64 `json:"ingressBytesTransferred,omitempty"` + LastConnectionEstablishedUtcTime *string `json:"lastConnectionEstablishedUtcTime,omitempty"` + Tunnel *string `json:"tunnel,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgateway.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgateway.go new file mode 100644 index 00000000000..4fc1211e31d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgateway.go @@ -0,0 +1,21 @@ +package virtualnetworkgatewayconnections + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGateway struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties VirtualNetworkGatewayPropertiesFormat `json:"properties"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewayautoscalebounds.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewayautoscalebounds.go new file mode 100644 index 00000000000..1c546e60aa6 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewayautoscalebounds.go @@ -0,0 +1,9 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayAutoScaleBounds struct { + Max *int64 `json:"max,omitempty"` + Min *int64 `json:"min,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewayautoscaleconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewayautoscaleconfiguration.go new file mode 100644 index 00000000000..5fd318f0446 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewayautoscaleconfiguration.go @@ -0,0 +1,8 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayAutoScaleConfiguration struct { + Bounds *VirtualNetworkGatewayAutoScaleBounds `json:"bounds,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewayconnection.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewayconnection.go new file mode 100644 index 00000000000..05a6ea7eb90 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewayconnection.go @@ -0,0 +1,14 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties VirtualNetworkGatewayConnectionPropertiesFormat `json:"properties"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewayconnectionpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewayconnectionpropertiesformat.go new file mode 100644 index 00000000000..ef9af43f207 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewayconnectionpropertiesformat.go @@ -0,0 +1,34 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayConnectionPropertiesFormat struct { + AuthorizationKey *string `json:"authorizationKey,omitempty"` + ConnectionMode *VirtualNetworkGatewayConnectionMode `json:"connectionMode,omitempty"` + ConnectionProtocol *VirtualNetworkGatewayConnectionProtocol `json:"connectionProtocol,omitempty"` + ConnectionStatus *VirtualNetworkGatewayConnectionStatus `json:"connectionStatus,omitempty"` + ConnectionType VirtualNetworkGatewayConnectionType `json:"connectionType"` + DpdTimeoutSeconds *int64 `json:"dpdTimeoutSeconds,omitempty"` + EgressBytesTransferred *int64 `json:"egressBytesTransferred,omitempty"` + EgressNatRules *[]SubResource `json:"egressNatRules,omitempty"` + EnableBgp *bool `json:"enableBgp,omitempty"` + EnablePrivateLinkFastPath *bool `json:"enablePrivateLinkFastPath,omitempty"` + ExpressRouteGatewayBypass *bool `json:"expressRouteGatewayBypass,omitempty"` + GatewayCustomBgpIPAddresses *[]GatewayCustomBgpIPAddressIPConfiguration `json:"gatewayCustomBgpIpAddresses,omitempty"` + IPsecPolicies *[]IPsecPolicy `json:"ipsecPolicies,omitempty"` + IngressBytesTransferred *int64 `json:"ingressBytesTransferred,omitempty"` + IngressNatRules *[]SubResource `json:"ingressNatRules,omitempty"` + LocalNetworkGateway2 *LocalNetworkGateway `json:"localNetworkGateway2,omitempty"` + Peer *SubResource `json:"peer,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + RoutingWeight *int64 `json:"routingWeight,omitempty"` + SharedKey *string `json:"sharedKey,omitempty"` + TrafficSelectorPolicies *[]TrafficSelectorPolicy `json:"trafficSelectorPolicies,omitempty"` + TunnelConnectionStatus *[]TunnelConnectionHealth `json:"tunnelConnectionStatus,omitempty"` + UseLocalAzureIPAddress *bool `json:"useLocalAzureIpAddress,omitempty"` + UsePolicyBasedTrafficSelectors *bool `json:"usePolicyBasedTrafficSelectors,omitempty"` + VirtualNetworkGateway1 VirtualNetworkGateway `json:"virtualNetworkGateway1"` + VirtualNetworkGateway2 *VirtualNetworkGateway `json:"virtualNetworkGateway2,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewayipconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewayipconfiguration.go new file mode 100644 index 00000000000..30467eb2ed1 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewayipconfiguration.go @@ -0,0 +1,11 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewayipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewayipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..863c3769296 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewayipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayIPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *SubResource `json:"publicIPAddress,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewaynatrule.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewaynatrule.go new file mode 100644 index 00000000000..ff6c91b0d66 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewaynatrule.go @@ -0,0 +1,12 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkGatewayNatRuleProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewaynatruleproperties.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewaynatruleproperties.go new file mode 100644 index 00000000000..75185bb4a84 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewaynatruleproperties.go @@ -0,0 +1,13 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayNatRuleProperties struct { + ExternalMappings *[]VpnNatRuleMapping `json:"externalMappings,omitempty"` + IPConfigurationId *string `json:"ipConfigurationId,omitempty"` + InternalMappings *[]VpnNatRuleMapping `json:"internalMappings,omitempty"` + Mode *VpnNatRuleMode `json:"mode,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Type *VpnNatRuleType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewaypolicygroup.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewaypolicygroup.go new file mode 100644 index 00000000000..cd507b1d533 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewaypolicygroup.go @@ -0,0 +1,11 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayPolicyGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkGatewayPolicyGroupProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewaypolicygroupmember.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewaypolicygroupmember.go new file mode 100644 index 00000000000..632e3bda52f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewaypolicygroupmember.go @@ -0,0 +1,10 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayPolicyGroupMember struct { + AttributeType *VpnPolicyMemberAttributeType `json:"attributeType,omitempty"` + AttributeValue *string `json:"attributeValue,omitempty"` + Name *string `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewaypolicygroupproperties.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewaypolicygroupproperties.go new file mode 100644 index 00000000000..6b20992105c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewaypolicygroupproperties.go @@ -0,0 +1,12 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayPolicyGroupProperties struct { + IsDefault bool `json:"isDefault"` + PolicyMembers []VirtualNetworkGatewayPolicyGroupMember `json:"policyMembers"` + Priority int64 `json:"priority"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VngClientConnectionConfigurations *[]SubResource `json:"vngClientConnectionConfigurations,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewaypropertiesformat.go new file mode 100644 index 00000000000..e35b30c9f00 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewaypropertiesformat.go @@ -0,0 +1,32 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayPropertiesFormat struct { + ActiveActive *bool `json:"activeActive,omitempty"` + AdminState *AdminState `json:"adminState,omitempty"` + AllowRemoteVnetTraffic *bool `json:"allowRemoteVnetTraffic,omitempty"` + AllowVirtualWanTraffic *bool `json:"allowVirtualWanTraffic,omitempty"` + AutoScaleConfiguration *VirtualNetworkGatewayAutoScaleConfiguration `json:"autoScaleConfiguration,omitempty"` + BgpSettings *BgpSettings `json:"bgpSettings,omitempty"` + CustomRoutes *AddressSpace `json:"customRoutes,omitempty"` + DisableIPSecReplayProtection *bool `json:"disableIPSecReplayProtection,omitempty"` + EnableBgp *bool `json:"enableBgp,omitempty"` + EnableBgpRouteTranslationForNat *bool `json:"enableBgpRouteTranslationForNat,omitempty"` + EnableDnsForwarding *bool `json:"enableDnsForwarding,omitempty"` + EnablePrivateIPAddress *bool `json:"enablePrivateIpAddress,omitempty"` + GatewayDefaultSite *SubResource `json:"gatewayDefaultSite,omitempty"` + GatewayType *VirtualNetworkGatewayType `json:"gatewayType,omitempty"` + IPConfigurations *[]VirtualNetworkGatewayIPConfiguration `json:"ipConfigurations,omitempty"` + InboundDnsForwardingEndpoint *string `json:"inboundDnsForwardingEndpoint,omitempty"` + NatRules *[]VirtualNetworkGatewayNatRule `json:"natRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Sku *VirtualNetworkGatewaySku `json:"sku,omitempty"` + VNetExtendedLocationResourceId *string `json:"vNetExtendedLocationResourceId,omitempty"` + VirtualNetworkGatewayPolicyGroups *[]VirtualNetworkGatewayPolicyGroup `json:"virtualNetworkGatewayPolicyGroups,omitempty"` + VpnClientConfiguration *VpnClientConfiguration `json:"vpnClientConfiguration,omitempty"` + VpnGatewayGeneration *VpnGatewayGeneration `json:"vpnGatewayGeneration,omitempty"` + VpnType *VpnType `json:"vpnType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewaysku.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewaysku.go new file mode 100644 index 00000000000..301f66896ac --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_virtualnetworkgatewaysku.go @@ -0,0 +1,10 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewaySku struct { + Capacity *int64 `json:"capacity,omitempty"` + Name *VirtualNetworkGatewaySkuName `json:"name,omitempty"` + Tier *VirtualNetworkGatewaySkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vngclientconnectionconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vngclientconnectionconfiguration.go new file mode 100644 index 00000000000..744d5505a17 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vngclientconnectionconfiguration.go @@ -0,0 +1,11 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VngClientConnectionConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VngClientConnectionConfigurationProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vngclientconnectionconfigurationproperties.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vngclientconnectionconfigurationproperties.go new file mode 100644 index 00000000000..531c18a0419 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vngclientconnectionconfigurationproperties.go @@ -0,0 +1,10 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VngClientConnectionConfigurationProperties struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualNetworkGatewayPolicyGroups []SubResource `json:"virtualNetworkGatewayPolicyGroups"` + VpnClientAddressPool AddressSpace `json:"vpnClientAddressPool"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnclientconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnclientconfiguration.go new file mode 100644 index 00000000000..f7da3943c5a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnclientconfiguration.go @@ -0,0 +1,20 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnClientConfiguration struct { + AadAudience *string `json:"aadAudience,omitempty"` + AadIssuer *string `json:"aadIssuer,omitempty"` + AadTenant *string `json:"aadTenant,omitempty"` + RadiusServerAddress *string `json:"radiusServerAddress,omitempty"` + RadiusServerSecret *string `json:"radiusServerSecret,omitempty"` + RadiusServers *[]RadiusServer `json:"radiusServers,omitempty"` + VngClientConnectionConfigurations *[]VngClientConnectionConfiguration `json:"vngClientConnectionConfigurations,omitempty"` + VpnAuthenticationTypes *[]VpnAuthenticationType `json:"vpnAuthenticationTypes,omitempty"` + VpnClientAddressPool *AddressSpace `json:"vpnClientAddressPool,omitempty"` + VpnClientIPsecPolicies *[]IPsecPolicy `json:"vpnClientIpsecPolicies,omitempty"` + VpnClientProtocols *[]VpnClientProtocol `json:"vpnClientProtocols,omitempty"` + VpnClientRevokedCertificates *[]VpnClientRevokedCertificate `json:"vpnClientRevokedCertificates,omitempty"` + VpnClientRootCertificates *[]VpnClientRootCertificate `json:"vpnClientRootCertificates,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnclientrevokedcertificate.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnclientrevokedcertificate.go new file mode 100644 index 00000000000..7f83a9053a4 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnclientrevokedcertificate.go @@ -0,0 +1,11 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnClientRevokedCertificate struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VpnClientRevokedCertificatePropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnclientrevokedcertificatepropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnclientrevokedcertificatepropertiesformat.go new file mode 100644 index 00000000000..0155228d4d1 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnclientrevokedcertificatepropertiesformat.go @@ -0,0 +1,9 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnClientRevokedCertificatePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Thumbprint *string `json:"thumbprint,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnclientrootcertificate.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnclientrootcertificate.go new file mode 100644 index 00000000000..6eb8d073f4f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnclientrootcertificate.go @@ -0,0 +1,11 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnClientRootCertificate struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties VpnClientRootCertificatePropertiesFormat `json:"properties"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnclientrootcertificatepropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnclientrootcertificatepropertiesformat.go new file mode 100644 index 00000000000..f5048e1ed78 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnclientrootcertificatepropertiesformat.go @@ -0,0 +1,9 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnClientRootCertificatePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicCertData string `json:"publicCertData"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnnatrulemapping.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnnatrulemapping.go new file mode 100644 index 00000000000..394cabc619d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnnatrulemapping.go @@ -0,0 +1,9 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnNatRuleMapping struct { + AddressSpace *string `json:"addressSpace,omitempty"` + PortRange *string `json:"portRange,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnpacketcapturestartparameters.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnpacketcapturestartparameters.go new file mode 100644 index 00000000000..52273329f1d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnpacketcapturestartparameters.go @@ -0,0 +1,8 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnPacketCaptureStartParameters struct { + FilterData *string `json:"filterData,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnpacketcapturestopparameters.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnpacketcapturestopparameters.go new file mode 100644 index 00000000000..e7481a70176 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/model_vpnpacketcapturestopparameters.go @@ -0,0 +1,8 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnPacketCaptureStopParameters struct { + SasUrl *string `json:"sasUrl,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/predicates.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/predicates.go new file mode 100644 index 00000000000..c1fe558dd66 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/predicates.go @@ -0,0 +1,37 @@ +package virtualnetworkgatewayconnections + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayConnectionOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p VirtualNetworkGatewayConnectionOperationPredicate) Matches(input VirtualNetworkGatewayConnection) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/version.go b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/version.go new file mode 100644 index 00000000000..784a23c94ef --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgatewayconnections/version.go @@ -0,0 +1,12 @@ +package virtualnetworkgatewayconnections + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/virtualnetworkgatewayconnections/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/README.md b/resource-manager/network/2024-01-01/virtualnetworkgateways/README.md new file mode 100644 index 00000000000..713d088b0fa --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/README.md @@ -0,0 +1,414 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualnetworkgateways` Documentation + +The `virtualnetworkgateways` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualnetworkgateways" +``` + + +### Client Initialization + +```go +client := virtualnetworkgateways.NewVirtualNetworkGatewaysClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue") + +payload := virtualnetworkgateways.VirtualNetworkGateway{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.Delete` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.DisconnectVirtualNetworkGatewayVpnConnections` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue") + +payload := virtualnetworkgateways.P2SVpnConnectionRequest{ + // ... +} + + +if err := client.DisconnectVirtualNetworkGatewayVpnConnectionsThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.GenerateVpnProfile` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue") + +payload := virtualnetworkgateways.VpnClientParameters{ + // ... +} + + +if err := client.GenerateVpnProfileThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.Generatevpnclientpackage` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue") + +payload := virtualnetworkgateways.VpnClientParameters{ + // ... +} + + +if err := client.GeneratevpnclientpackageThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.Get` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.GetAdvertisedRoutes` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue") + +if err := client.GetAdvertisedRoutesThenPoll(ctx, id, virtualnetworkgateways.DefaultGetAdvertisedRoutesOperationOptions()); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.GetBgpPeerStatus` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue") + +if err := client.GetBgpPeerStatusThenPoll(ctx, id, virtualnetworkgateways.DefaultGetBgpPeerStatusOperationOptions()); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.GetLearnedRoutes` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue") + +if err := client.GetLearnedRoutesThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.GetVpnProfilePackageUrl` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue") + +if err := client.GetVpnProfilePackageUrlThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.GetVpnclientConnectionHealth` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue") + +if err := client.GetVpnclientConnectionHealthThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.GetVpnclientIPsecParameters` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue") + +if err := client.GetVpnclientIPsecParametersThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.List` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.ListConnections` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue") + +// alternatively `client.ListConnections(ctx, id)` can be used to do batched pagination +items, err := client.ListConnectionsComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.Reset` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue") + +if err := client.ResetThenPoll(ctx, id, virtualnetworkgateways.DefaultResetOperationOptions()); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.ResetVpnClientSharedKey` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue") + +if err := client.ResetVpnClientSharedKeyThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.SetVpnclientIPsecParameters` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue") + +payload := virtualnetworkgateways.VpnClientIPsecParameters{ + // ... +} + + +if err := client.SetVpnclientIPsecParametersThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.StartPacketCapture` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue") + +payload := virtualnetworkgateways.VpnPacketCaptureStartParameters{ + // ... +} + + +if err := client.StartPacketCaptureThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.StopPacketCapture` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue") + +payload := virtualnetworkgateways.VpnPacketCaptureStopParameters{ + // ... +} + + +if err := client.StopPacketCaptureThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.SupportedVpnDevices` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue") + +read, err := client.SupportedVpnDevices(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.UpdateTags` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue") + +payload := virtualnetworkgateways.TagsObject{ + // ... +} + + +if err := client.UpdateTagsThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.VirtualNetworkGatewayNatRulesCreateOrUpdate` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayNatRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue", "natRuleValue") + +payload := virtualnetworkgateways.VirtualNetworkGatewayNatRule{ + // ... +} + + +if err := client.VirtualNetworkGatewayNatRulesCreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.VirtualNetworkGatewayNatRulesDelete` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayNatRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue", "natRuleValue") + +if err := client.VirtualNetworkGatewayNatRulesDeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.VirtualNetworkGatewayNatRulesGet` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayNatRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue", "natRuleValue") + +read, err := client.VirtualNetworkGatewayNatRulesGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.VirtualNetworkGatewayNatRulesListByVirtualNetworkGateway` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewVirtualNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue") + +// alternatively `client.VirtualNetworkGatewayNatRulesListByVirtualNetworkGateway(ctx, id)` can be used to do batched pagination +items, err := client.VirtualNetworkGatewayNatRulesListByVirtualNetworkGatewayComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualNetworkGatewaysClient.VpnDeviceConfigurationScript` + +```go +ctx := context.TODO() +id := virtualnetworkgateways.NewConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "connectionValue") + +payload := virtualnetworkgateways.VpnDeviceScriptParameters{ + // ... +} + + +read, err := client.VpnDeviceConfigurationScript(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/client.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/client.go new file mode 100644 index 00000000000..32ede23bc60 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/client.go @@ -0,0 +1,26 @@ +package virtualnetworkgateways + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewaysClient struct { + Client *resourcemanager.Client +} + +func NewVirtualNetworkGatewaysClientWithBaseURI(sdkApi sdkEnv.Api) (*VirtualNetworkGatewaysClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "virtualnetworkgateways", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating VirtualNetworkGatewaysClient: %+v", err) + } + + return &VirtualNetworkGatewaysClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/constants.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/constants.go new file mode 100644 index 00000000000..16875bf9048 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/constants.go @@ -0,0 +1,1316 @@ +package virtualnetworkgateways + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AdminState string + +const ( + AdminStateDisabled AdminState = "Disabled" + AdminStateEnabled AdminState = "Enabled" +) + +func PossibleValuesForAdminState() []string { + return []string{ + string(AdminStateDisabled), + string(AdminStateEnabled), + } +} + +func (s *AdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAdminState(input string) (*AdminState, error) { + vals := map[string]AdminState{ + "disabled": AdminStateDisabled, + "enabled": AdminStateEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := AdminState(input) + return &out, nil +} + +type AuthenticationMethod string + +const ( + AuthenticationMethodEAPMSCHAPvTwo AuthenticationMethod = "EAPMSCHAPv2" + AuthenticationMethodEAPTLS AuthenticationMethod = "EAPTLS" +) + +func PossibleValuesForAuthenticationMethod() []string { + return []string{ + string(AuthenticationMethodEAPMSCHAPvTwo), + string(AuthenticationMethodEAPTLS), + } +} + +func (s *AuthenticationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAuthenticationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAuthenticationMethod(input string) (*AuthenticationMethod, error) { + vals := map[string]AuthenticationMethod{ + "eapmschapv2": AuthenticationMethodEAPMSCHAPvTwo, + "eaptls": AuthenticationMethodEAPTLS, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := AuthenticationMethod(input) + return &out, nil +} + +type BgpPeerState string + +const ( + BgpPeerStateConnected BgpPeerState = "Connected" + BgpPeerStateConnecting BgpPeerState = "Connecting" + BgpPeerStateIdle BgpPeerState = "Idle" + BgpPeerStateStopped BgpPeerState = "Stopped" + BgpPeerStateUnknown BgpPeerState = "Unknown" +) + +func PossibleValuesForBgpPeerState() []string { + return []string{ + string(BgpPeerStateConnected), + string(BgpPeerStateConnecting), + string(BgpPeerStateIdle), + string(BgpPeerStateStopped), + string(BgpPeerStateUnknown), + } +} + +func (s *BgpPeerState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseBgpPeerState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseBgpPeerState(input string) (*BgpPeerState, error) { + vals := map[string]BgpPeerState{ + "connected": BgpPeerStateConnected, + "connecting": BgpPeerStateConnecting, + "idle": BgpPeerStateIdle, + "stopped": BgpPeerStateStopped, + "unknown": BgpPeerStateUnknown, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := BgpPeerState(input) + return &out, nil +} + +type DhGroup string + +const ( + DhGroupDHGroupOne DhGroup = "DHGroup1" + DhGroupDHGroupOneFour DhGroup = "DHGroup14" + DhGroupDHGroupTwo DhGroup = "DHGroup2" + DhGroupDHGroupTwoFour DhGroup = "DHGroup24" + DhGroupDHGroupTwoZeroFourEight DhGroup = "DHGroup2048" + DhGroupECPThreeEightFour DhGroup = "ECP384" + DhGroupECPTwoFiveSix DhGroup = "ECP256" + DhGroupNone DhGroup = "None" +) + +func PossibleValuesForDhGroup() []string { + return []string{ + string(DhGroupDHGroupOne), + string(DhGroupDHGroupOneFour), + string(DhGroupDHGroupTwo), + string(DhGroupDHGroupTwoFour), + string(DhGroupDHGroupTwoZeroFourEight), + string(DhGroupECPThreeEightFour), + string(DhGroupECPTwoFiveSix), + string(DhGroupNone), + } +} + +func (s *DhGroup) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDhGroup(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDhGroup(input string) (*DhGroup, error) { + vals := map[string]DhGroup{ + "dhgroup1": DhGroupDHGroupOne, + "dhgroup14": DhGroupDHGroupOneFour, + "dhgroup2": DhGroupDHGroupTwo, + "dhgroup24": DhGroupDHGroupTwoFour, + "dhgroup2048": DhGroupDHGroupTwoZeroFourEight, + "ecp384": DhGroupECPThreeEightFour, + "ecp256": DhGroupECPTwoFiveSix, + "none": DhGroupNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DhGroup(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type IPsecEncryption string + +const ( + IPsecEncryptionAESOneNineTwo IPsecEncryption = "AES192" + IPsecEncryptionAESOneTwoEight IPsecEncryption = "AES128" + IPsecEncryptionAESTwoFiveSix IPsecEncryption = "AES256" + IPsecEncryptionDES IPsecEncryption = "DES" + IPsecEncryptionDESThree IPsecEncryption = "DES3" + IPsecEncryptionGCMAESOneNineTwo IPsecEncryption = "GCMAES192" + IPsecEncryptionGCMAESOneTwoEight IPsecEncryption = "GCMAES128" + IPsecEncryptionGCMAESTwoFiveSix IPsecEncryption = "GCMAES256" + IPsecEncryptionNone IPsecEncryption = "None" +) + +func PossibleValuesForIPsecEncryption() []string { + return []string{ + string(IPsecEncryptionAESOneNineTwo), + string(IPsecEncryptionAESOneTwoEight), + string(IPsecEncryptionAESTwoFiveSix), + string(IPsecEncryptionDES), + string(IPsecEncryptionDESThree), + string(IPsecEncryptionGCMAESOneNineTwo), + string(IPsecEncryptionGCMAESOneTwoEight), + string(IPsecEncryptionGCMAESTwoFiveSix), + string(IPsecEncryptionNone), + } +} + +func (s *IPsecEncryption) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPsecEncryption(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPsecEncryption(input string) (*IPsecEncryption, error) { + vals := map[string]IPsecEncryption{ + "aes192": IPsecEncryptionAESOneNineTwo, + "aes128": IPsecEncryptionAESOneTwoEight, + "aes256": IPsecEncryptionAESTwoFiveSix, + "des": IPsecEncryptionDES, + "des3": IPsecEncryptionDESThree, + "gcmaes192": IPsecEncryptionGCMAESOneNineTwo, + "gcmaes128": IPsecEncryptionGCMAESOneTwoEight, + "gcmaes256": IPsecEncryptionGCMAESTwoFiveSix, + "none": IPsecEncryptionNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPsecEncryption(input) + return &out, nil +} + +type IPsecIntegrity string + +const ( + IPsecIntegrityGCMAESOneNineTwo IPsecIntegrity = "GCMAES192" + IPsecIntegrityGCMAESOneTwoEight IPsecIntegrity = "GCMAES128" + IPsecIntegrityGCMAESTwoFiveSix IPsecIntegrity = "GCMAES256" + IPsecIntegrityMDFive IPsecIntegrity = "MD5" + IPsecIntegritySHAOne IPsecIntegrity = "SHA1" + IPsecIntegritySHATwoFiveSix IPsecIntegrity = "SHA256" +) + +func PossibleValuesForIPsecIntegrity() []string { + return []string{ + string(IPsecIntegrityGCMAESOneNineTwo), + string(IPsecIntegrityGCMAESOneTwoEight), + string(IPsecIntegrityGCMAESTwoFiveSix), + string(IPsecIntegrityMDFive), + string(IPsecIntegritySHAOne), + string(IPsecIntegritySHATwoFiveSix), + } +} + +func (s *IPsecIntegrity) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPsecIntegrity(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPsecIntegrity(input string) (*IPsecIntegrity, error) { + vals := map[string]IPsecIntegrity{ + "gcmaes192": IPsecIntegrityGCMAESOneNineTwo, + "gcmaes128": IPsecIntegrityGCMAESOneTwoEight, + "gcmaes256": IPsecIntegrityGCMAESTwoFiveSix, + "md5": IPsecIntegrityMDFive, + "sha1": IPsecIntegritySHAOne, + "sha256": IPsecIntegritySHATwoFiveSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPsecIntegrity(input) + return &out, nil +} + +type IkeEncryption string + +const ( + IkeEncryptionAESOneNineTwo IkeEncryption = "AES192" + IkeEncryptionAESOneTwoEight IkeEncryption = "AES128" + IkeEncryptionAESTwoFiveSix IkeEncryption = "AES256" + IkeEncryptionDES IkeEncryption = "DES" + IkeEncryptionDESThree IkeEncryption = "DES3" + IkeEncryptionGCMAESOneTwoEight IkeEncryption = "GCMAES128" + IkeEncryptionGCMAESTwoFiveSix IkeEncryption = "GCMAES256" +) + +func PossibleValuesForIkeEncryption() []string { + return []string{ + string(IkeEncryptionAESOneNineTwo), + string(IkeEncryptionAESOneTwoEight), + string(IkeEncryptionAESTwoFiveSix), + string(IkeEncryptionDES), + string(IkeEncryptionDESThree), + string(IkeEncryptionGCMAESOneTwoEight), + string(IkeEncryptionGCMAESTwoFiveSix), + } +} + +func (s *IkeEncryption) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIkeEncryption(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIkeEncryption(input string) (*IkeEncryption, error) { + vals := map[string]IkeEncryption{ + "aes192": IkeEncryptionAESOneNineTwo, + "aes128": IkeEncryptionAESOneTwoEight, + "aes256": IkeEncryptionAESTwoFiveSix, + "des": IkeEncryptionDES, + "des3": IkeEncryptionDESThree, + "gcmaes128": IkeEncryptionGCMAESOneTwoEight, + "gcmaes256": IkeEncryptionGCMAESTwoFiveSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IkeEncryption(input) + return &out, nil +} + +type IkeIntegrity string + +const ( + IkeIntegrityGCMAESOneTwoEight IkeIntegrity = "GCMAES128" + IkeIntegrityGCMAESTwoFiveSix IkeIntegrity = "GCMAES256" + IkeIntegrityMDFive IkeIntegrity = "MD5" + IkeIntegritySHAOne IkeIntegrity = "SHA1" + IkeIntegritySHAThreeEightFour IkeIntegrity = "SHA384" + IkeIntegritySHATwoFiveSix IkeIntegrity = "SHA256" +) + +func PossibleValuesForIkeIntegrity() []string { + return []string{ + string(IkeIntegrityGCMAESOneTwoEight), + string(IkeIntegrityGCMAESTwoFiveSix), + string(IkeIntegrityMDFive), + string(IkeIntegritySHAOne), + string(IkeIntegritySHAThreeEightFour), + string(IkeIntegritySHATwoFiveSix), + } +} + +func (s *IkeIntegrity) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIkeIntegrity(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIkeIntegrity(input string) (*IkeIntegrity, error) { + vals := map[string]IkeIntegrity{ + "gcmaes128": IkeIntegrityGCMAESOneTwoEight, + "gcmaes256": IkeIntegrityGCMAESTwoFiveSix, + "md5": IkeIntegrityMDFive, + "sha1": IkeIntegritySHAOne, + "sha384": IkeIntegritySHAThreeEightFour, + "sha256": IkeIntegritySHATwoFiveSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IkeIntegrity(input) + return &out, nil +} + +type PfsGroup string + +const ( + PfsGroupECPThreeEightFour PfsGroup = "ECP384" + PfsGroupECPTwoFiveSix PfsGroup = "ECP256" + PfsGroupNone PfsGroup = "None" + PfsGroupPFSMM PfsGroup = "PFSMM" + PfsGroupPFSOne PfsGroup = "PFS1" + PfsGroupPFSOneFour PfsGroup = "PFS14" + PfsGroupPFSTwo PfsGroup = "PFS2" + PfsGroupPFSTwoFour PfsGroup = "PFS24" + PfsGroupPFSTwoZeroFourEight PfsGroup = "PFS2048" +) + +func PossibleValuesForPfsGroup() []string { + return []string{ + string(PfsGroupECPThreeEightFour), + string(PfsGroupECPTwoFiveSix), + string(PfsGroupNone), + string(PfsGroupPFSMM), + string(PfsGroupPFSOne), + string(PfsGroupPFSOneFour), + string(PfsGroupPFSTwo), + string(PfsGroupPFSTwoFour), + string(PfsGroupPFSTwoZeroFourEight), + } +} + +func (s *PfsGroup) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePfsGroup(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePfsGroup(input string) (*PfsGroup, error) { + vals := map[string]PfsGroup{ + "ecp384": PfsGroupECPThreeEightFour, + "ecp256": PfsGroupECPTwoFiveSix, + "none": PfsGroupNone, + "pfsmm": PfsGroupPFSMM, + "pfs1": PfsGroupPFSOne, + "pfs14": PfsGroupPFSOneFour, + "pfs2": PfsGroupPFSTwo, + "pfs24": PfsGroupPFSTwoFour, + "pfs2048": PfsGroupPFSTwoZeroFourEight, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PfsGroup(input) + return &out, nil +} + +type ProcessorArchitecture string + +const ( + ProcessorArchitectureAmdSixFour ProcessorArchitecture = "Amd64" + ProcessorArchitectureXEightSix ProcessorArchitecture = "X86" +) + +func PossibleValuesForProcessorArchitecture() []string { + return []string{ + string(ProcessorArchitectureAmdSixFour), + string(ProcessorArchitectureXEightSix), + } +} + +func (s *ProcessorArchitecture) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProcessorArchitecture(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProcessorArchitecture(input string) (*ProcessorArchitecture, error) { + vals := map[string]ProcessorArchitecture{ + "amd64": ProcessorArchitectureAmdSixFour, + "x86": ProcessorArchitectureXEightSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProcessorArchitecture(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type VirtualNetworkGatewayConnectionMode string + +const ( + VirtualNetworkGatewayConnectionModeDefault VirtualNetworkGatewayConnectionMode = "Default" + VirtualNetworkGatewayConnectionModeInitiatorOnly VirtualNetworkGatewayConnectionMode = "InitiatorOnly" + VirtualNetworkGatewayConnectionModeResponderOnly VirtualNetworkGatewayConnectionMode = "ResponderOnly" +) + +func PossibleValuesForVirtualNetworkGatewayConnectionMode() []string { + return []string{ + string(VirtualNetworkGatewayConnectionModeDefault), + string(VirtualNetworkGatewayConnectionModeInitiatorOnly), + string(VirtualNetworkGatewayConnectionModeResponderOnly), + } +} + +func (s *VirtualNetworkGatewayConnectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkGatewayConnectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkGatewayConnectionMode(input string) (*VirtualNetworkGatewayConnectionMode, error) { + vals := map[string]VirtualNetworkGatewayConnectionMode{ + "default": VirtualNetworkGatewayConnectionModeDefault, + "initiatoronly": VirtualNetworkGatewayConnectionModeInitiatorOnly, + "responderonly": VirtualNetworkGatewayConnectionModeResponderOnly, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkGatewayConnectionMode(input) + return &out, nil +} + +type VirtualNetworkGatewayConnectionProtocol string + +const ( + VirtualNetworkGatewayConnectionProtocolIKEvOne VirtualNetworkGatewayConnectionProtocol = "IKEv1" + VirtualNetworkGatewayConnectionProtocolIKEvTwo VirtualNetworkGatewayConnectionProtocol = "IKEv2" +) + +func PossibleValuesForVirtualNetworkGatewayConnectionProtocol() []string { + return []string{ + string(VirtualNetworkGatewayConnectionProtocolIKEvOne), + string(VirtualNetworkGatewayConnectionProtocolIKEvTwo), + } +} + +func (s *VirtualNetworkGatewayConnectionProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkGatewayConnectionProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkGatewayConnectionProtocol(input string) (*VirtualNetworkGatewayConnectionProtocol, error) { + vals := map[string]VirtualNetworkGatewayConnectionProtocol{ + "ikev1": VirtualNetworkGatewayConnectionProtocolIKEvOne, + "ikev2": VirtualNetworkGatewayConnectionProtocolIKEvTwo, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkGatewayConnectionProtocol(input) + return &out, nil +} + +type VirtualNetworkGatewayConnectionStatus string + +const ( + VirtualNetworkGatewayConnectionStatusConnected VirtualNetworkGatewayConnectionStatus = "Connected" + VirtualNetworkGatewayConnectionStatusConnecting VirtualNetworkGatewayConnectionStatus = "Connecting" + VirtualNetworkGatewayConnectionStatusNotConnected VirtualNetworkGatewayConnectionStatus = "NotConnected" + VirtualNetworkGatewayConnectionStatusUnknown VirtualNetworkGatewayConnectionStatus = "Unknown" +) + +func PossibleValuesForVirtualNetworkGatewayConnectionStatus() []string { + return []string{ + string(VirtualNetworkGatewayConnectionStatusConnected), + string(VirtualNetworkGatewayConnectionStatusConnecting), + string(VirtualNetworkGatewayConnectionStatusNotConnected), + string(VirtualNetworkGatewayConnectionStatusUnknown), + } +} + +func (s *VirtualNetworkGatewayConnectionStatus) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkGatewayConnectionStatus(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkGatewayConnectionStatus(input string) (*VirtualNetworkGatewayConnectionStatus, error) { + vals := map[string]VirtualNetworkGatewayConnectionStatus{ + "connected": VirtualNetworkGatewayConnectionStatusConnected, + "connecting": VirtualNetworkGatewayConnectionStatusConnecting, + "notconnected": VirtualNetworkGatewayConnectionStatusNotConnected, + "unknown": VirtualNetworkGatewayConnectionStatusUnknown, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkGatewayConnectionStatus(input) + return &out, nil +} + +type VirtualNetworkGatewayConnectionType string + +const ( + VirtualNetworkGatewayConnectionTypeExpressRoute VirtualNetworkGatewayConnectionType = "ExpressRoute" + VirtualNetworkGatewayConnectionTypeIPsec VirtualNetworkGatewayConnectionType = "IPsec" + VirtualNetworkGatewayConnectionTypeVPNClient VirtualNetworkGatewayConnectionType = "VPNClient" + VirtualNetworkGatewayConnectionTypeVnetTwoVnet VirtualNetworkGatewayConnectionType = "Vnet2Vnet" +) + +func PossibleValuesForVirtualNetworkGatewayConnectionType() []string { + return []string{ + string(VirtualNetworkGatewayConnectionTypeExpressRoute), + string(VirtualNetworkGatewayConnectionTypeIPsec), + string(VirtualNetworkGatewayConnectionTypeVPNClient), + string(VirtualNetworkGatewayConnectionTypeVnetTwoVnet), + } +} + +func (s *VirtualNetworkGatewayConnectionType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkGatewayConnectionType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkGatewayConnectionType(input string) (*VirtualNetworkGatewayConnectionType, error) { + vals := map[string]VirtualNetworkGatewayConnectionType{ + "expressroute": VirtualNetworkGatewayConnectionTypeExpressRoute, + "ipsec": VirtualNetworkGatewayConnectionTypeIPsec, + "vpnclient": VirtualNetworkGatewayConnectionTypeVPNClient, + "vnet2vnet": VirtualNetworkGatewayConnectionTypeVnetTwoVnet, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkGatewayConnectionType(input) + return &out, nil +} + +type VirtualNetworkGatewaySkuName string + +const ( + VirtualNetworkGatewaySkuNameBasic VirtualNetworkGatewaySkuName = "Basic" + VirtualNetworkGatewaySkuNameErGwOneAZ VirtualNetworkGatewaySkuName = "ErGw1AZ" + VirtualNetworkGatewaySkuNameErGwScale VirtualNetworkGatewaySkuName = "ErGwScale" + VirtualNetworkGatewaySkuNameErGwThreeAZ VirtualNetworkGatewaySkuName = "ErGw3AZ" + VirtualNetworkGatewaySkuNameErGwTwoAZ VirtualNetworkGatewaySkuName = "ErGw2AZ" + VirtualNetworkGatewaySkuNameHighPerformance VirtualNetworkGatewaySkuName = "HighPerformance" + VirtualNetworkGatewaySkuNameStandard VirtualNetworkGatewaySkuName = "Standard" + VirtualNetworkGatewaySkuNameUltraPerformance VirtualNetworkGatewaySkuName = "UltraPerformance" + VirtualNetworkGatewaySkuNameVpnGwFive VirtualNetworkGatewaySkuName = "VpnGw5" + VirtualNetworkGatewaySkuNameVpnGwFiveAZ VirtualNetworkGatewaySkuName = "VpnGw5AZ" + VirtualNetworkGatewaySkuNameVpnGwFour VirtualNetworkGatewaySkuName = "VpnGw4" + VirtualNetworkGatewaySkuNameVpnGwFourAZ VirtualNetworkGatewaySkuName = "VpnGw4AZ" + VirtualNetworkGatewaySkuNameVpnGwOne VirtualNetworkGatewaySkuName = "VpnGw1" + VirtualNetworkGatewaySkuNameVpnGwOneAZ VirtualNetworkGatewaySkuName = "VpnGw1AZ" + VirtualNetworkGatewaySkuNameVpnGwThree VirtualNetworkGatewaySkuName = "VpnGw3" + VirtualNetworkGatewaySkuNameVpnGwThreeAZ VirtualNetworkGatewaySkuName = "VpnGw3AZ" + VirtualNetworkGatewaySkuNameVpnGwTwo VirtualNetworkGatewaySkuName = "VpnGw2" + VirtualNetworkGatewaySkuNameVpnGwTwoAZ VirtualNetworkGatewaySkuName = "VpnGw2AZ" +) + +func PossibleValuesForVirtualNetworkGatewaySkuName() []string { + return []string{ + string(VirtualNetworkGatewaySkuNameBasic), + string(VirtualNetworkGatewaySkuNameErGwOneAZ), + string(VirtualNetworkGatewaySkuNameErGwScale), + string(VirtualNetworkGatewaySkuNameErGwThreeAZ), + string(VirtualNetworkGatewaySkuNameErGwTwoAZ), + string(VirtualNetworkGatewaySkuNameHighPerformance), + string(VirtualNetworkGatewaySkuNameStandard), + string(VirtualNetworkGatewaySkuNameUltraPerformance), + string(VirtualNetworkGatewaySkuNameVpnGwFive), + string(VirtualNetworkGatewaySkuNameVpnGwFiveAZ), + string(VirtualNetworkGatewaySkuNameVpnGwFour), + string(VirtualNetworkGatewaySkuNameVpnGwFourAZ), + string(VirtualNetworkGatewaySkuNameVpnGwOne), + string(VirtualNetworkGatewaySkuNameVpnGwOneAZ), + string(VirtualNetworkGatewaySkuNameVpnGwThree), + string(VirtualNetworkGatewaySkuNameVpnGwThreeAZ), + string(VirtualNetworkGatewaySkuNameVpnGwTwo), + string(VirtualNetworkGatewaySkuNameVpnGwTwoAZ), + } +} + +func (s *VirtualNetworkGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkGatewaySkuName(input string) (*VirtualNetworkGatewaySkuName, error) { + vals := map[string]VirtualNetworkGatewaySkuName{ + "basic": VirtualNetworkGatewaySkuNameBasic, + "ergw1az": VirtualNetworkGatewaySkuNameErGwOneAZ, + "ergwscale": VirtualNetworkGatewaySkuNameErGwScale, + "ergw3az": VirtualNetworkGatewaySkuNameErGwThreeAZ, + "ergw2az": VirtualNetworkGatewaySkuNameErGwTwoAZ, + "highperformance": VirtualNetworkGatewaySkuNameHighPerformance, + "standard": VirtualNetworkGatewaySkuNameStandard, + "ultraperformance": VirtualNetworkGatewaySkuNameUltraPerformance, + "vpngw5": VirtualNetworkGatewaySkuNameVpnGwFive, + "vpngw5az": VirtualNetworkGatewaySkuNameVpnGwFiveAZ, + "vpngw4": VirtualNetworkGatewaySkuNameVpnGwFour, + "vpngw4az": VirtualNetworkGatewaySkuNameVpnGwFourAZ, + "vpngw1": VirtualNetworkGatewaySkuNameVpnGwOne, + "vpngw1az": VirtualNetworkGatewaySkuNameVpnGwOneAZ, + "vpngw3": VirtualNetworkGatewaySkuNameVpnGwThree, + "vpngw3az": VirtualNetworkGatewaySkuNameVpnGwThreeAZ, + "vpngw2": VirtualNetworkGatewaySkuNameVpnGwTwo, + "vpngw2az": VirtualNetworkGatewaySkuNameVpnGwTwoAZ, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkGatewaySkuName(input) + return &out, nil +} + +type VirtualNetworkGatewaySkuTier string + +const ( + VirtualNetworkGatewaySkuTierBasic VirtualNetworkGatewaySkuTier = "Basic" + VirtualNetworkGatewaySkuTierErGwOneAZ VirtualNetworkGatewaySkuTier = "ErGw1AZ" + VirtualNetworkGatewaySkuTierErGwScale VirtualNetworkGatewaySkuTier = "ErGwScale" + VirtualNetworkGatewaySkuTierErGwThreeAZ VirtualNetworkGatewaySkuTier = "ErGw3AZ" + VirtualNetworkGatewaySkuTierErGwTwoAZ VirtualNetworkGatewaySkuTier = "ErGw2AZ" + VirtualNetworkGatewaySkuTierHighPerformance VirtualNetworkGatewaySkuTier = "HighPerformance" + VirtualNetworkGatewaySkuTierStandard VirtualNetworkGatewaySkuTier = "Standard" + VirtualNetworkGatewaySkuTierUltraPerformance VirtualNetworkGatewaySkuTier = "UltraPerformance" + VirtualNetworkGatewaySkuTierVpnGwFive VirtualNetworkGatewaySkuTier = "VpnGw5" + VirtualNetworkGatewaySkuTierVpnGwFiveAZ VirtualNetworkGatewaySkuTier = "VpnGw5AZ" + VirtualNetworkGatewaySkuTierVpnGwFour VirtualNetworkGatewaySkuTier = "VpnGw4" + VirtualNetworkGatewaySkuTierVpnGwFourAZ VirtualNetworkGatewaySkuTier = "VpnGw4AZ" + VirtualNetworkGatewaySkuTierVpnGwOne VirtualNetworkGatewaySkuTier = "VpnGw1" + VirtualNetworkGatewaySkuTierVpnGwOneAZ VirtualNetworkGatewaySkuTier = "VpnGw1AZ" + VirtualNetworkGatewaySkuTierVpnGwThree VirtualNetworkGatewaySkuTier = "VpnGw3" + VirtualNetworkGatewaySkuTierVpnGwThreeAZ VirtualNetworkGatewaySkuTier = "VpnGw3AZ" + VirtualNetworkGatewaySkuTierVpnGwTwo VirtualNetworkGatewaySkuTier = "VpnGw2" + VirtualNetworkGatewaySkuTierVpnGwTwoAZ VirtualNetworkGatewaySkuTier = "VpnGw2AZ" +) + +func PossibleValuesForVirtualNetworkGatewaySkuTier() []string { + return []string{ + string(VirtualNetworkGatewaySkuTierBasic), + string(VirtualNetworkGatewaySkuTierErGwOneAZ), + string(VirtualNetworkGatewaySkuTierErGwScale), + string(VirtualNetworkGatewaySkuTierErGwThreeAZ), + string(VirtualNetworkGatewaySkuTierErGwTwoAZ), + string(VirtualNetworkGatewaySkuTierHighPerformance), + string(VirtualNetworkGatewaySkuTierStandard), + string(VirtualNetworkGatewaySkuTierUltraPerformance), + string(VirtualNetworkGatewaySkuTierVpnGwFive), + string(VirtualNetworkGatewaySkuTierVpnGwFiveAZ), + string(VirtualNetworkGatewaySkuTierVpnGwFour), + string(VirtualNetworkGatewaySkuTierVpnGwFourAZ), + string(VirtualNetworkGatewaySkuTierVpnGwOne), + string(VirtualNetworkGatewaySkuTierVpnGwOneAZ), + string(VirtualNetworkGatewaySkuTierVpnGwThree), + string(VirtualNetworkGatewaySkuTierVpnGwThreeAZ), + string(VirtualNetworkGatewaySkuTierVpnGwTwo), + string(VirtualNetworkGatewaySkuTierVpnGwTwoAZ), + } +} + +func (s *VirtualNetworkGatewaySkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkGatewaySkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkGatewaySkuTier(input string) (*VirtualNetworkGatewaySkuTier, error) { + vals := map[string]VirtualNetworkGatewaySkuTier{ + "basic": VirtualNetworkGatewaySkuTierBasic, + "ergw1az": VirtualNetworkGatewaySkuTierErGwOneAZ, + "ergwscale": VirtualNetworkGatewaySkuTierErGwScale, + "ergw3az": VirtualNetworkGatewaySkuTierErGwThreeAZ, + "ergw2az": VirtualNetworkGatewaySkuTierErGwTwoAZ, + "highperformance": VirtualNetworkGatewaySkuTierHighPerformance, + "standard": VirtualNetworkGatewaySkuTierStandard, + "ultraperformance": VirtualNetworkGatewaySkuTierUltraPerformance, + "vpngw5": VirtualNetworkGatewaySkuTierVpnGwFive, + "vpngw5az": VirtualNetworkGatewaySkuTierVpnGwFiveAZ, + "vpngw4": VirtualNetworkGatewaySkuTierVpnGwFour, + "vpngw4az": VirtualNetworkGatewaySkuTierVpnGwFourAZ, + "vpngw1": VirtualNetworkGatewaySkuTierVpnGwOne, + "vpngw1az": VirtualNetworkGatewaySkuTierVpnGwOneAZ, + "vpngw3": VirtualNetworkGatewaySkuTierVpnGwThree, + "vpngw3az": VirtualNetworkGatewaySkuTierVpnGwThreeAZ, + "vpngw2": VirtualNetworkGatewaySkuTierVpnGwTwo, + "vpngw2az": VirtualNetworkGatewaySkuTierVpnGwTwoAZ, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkGatewaySkuTier(input) + return &out, nil +} + +type VirtualNetworkGatewayType string + +const ( + VirtualNetworkGatewayTypeExpressRoute VirtualNetworkGatewayType = "ExpressRoute" + VirtualNetworkGatewayTypeLocalGateway VirtualNetworkGatewayType = "LocalGateway" + VirtualNetworkGatewayTypeVpn VirtualNetworkGatewayType = "Vpn" +) + +func PossibleValuesForVirtualNetworkGatewayType() []string { + return []string{ + string(VirtualNetworkGatewayTypeExpressRoute), + string(VirtualNetworkGatewayTypeLocalGateway), + string(VirtualNetworkGatewayTypeVpn), + } +} + +func (s *VirtualNetworkGatewayType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkGatewayType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkGatewayType(input string) (*VirtualNetworkGatewayType, error) { + vals := map[string]VirtualNetworkGatewayType{ + "expressroute": VirtualNetworkGatewayTypeExpressRoute, + "localgateway": VirtualNetworkGatewayTypeLocalGateway, + "vpn": VirtualNetworkGatewayTypeVpn, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkGatewayType(input) + return &out, nil +} + +type VpnAuthenticationType string + +const ( + VpnAuthenticationTypeAAD VpnAuthenticationType = "AAD" + VpnAuthenticationTypeCertificate VpnAuthenticationType = "Certificate" + VpnAuthenticationTypeRadius VpnAuthenticationType = "Radius" +) + +func PossibleValuesForVpnAuthenticationType() []string { + return []string{ + string(VpnAuthenticationTypeAAD), + string(VpnAuthenticationTypeCertificate), + string(VpnAuthenticationTypeRadius), + } +} + +func (s *VpnAuthenticationType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnAuthenticationType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnAuthenticationType(input string) (*VpnAuthenticationType, error) { + vals := map[string]VpnAuthenticationType{ + "aad": VpnAuthenticationTypeAAD, + "certificate": VpnAuthenticationTypeCertificate, + "radius": VpnAuthenticationTypeRadius, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnAuthenticationType(input) + return &out, nil +} + +type VpnClientProtocol string + +const ( + VpnClientProtocolIkeVTwo VpnClientProtocol = "IkeV2" + VpnClientProtocolOpenVPN VpnClientProtocol = "OpenVPN" + VpnClientProtocolSSTP VpnClientProtocol = "SSTP" +) + +func PossibleValuesForVpnClientProtocol() []string { + return []string{ + string(VpnClientProtocolIkeVTwo), + string(VpnClientProtocolOpenVPN), + string(VpnClientProtocolSSTP), + } +} + +func (s *VpnClientProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnClientProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnClientProtocol(input string) (*VpnClientProtocol, error) { + vals := map[string]VpnClientProtocol{ + "ikev2": VpnClientProtocolIkeVTwo, + "openvpn": VpnClientProtocolOpenVPN, + "sstp": VpnClientProtocolSSTP, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnClientProtocol(input) + return &out, nil +} + +type VpnGatewayGeneration string + +const ( + VpnGatewayGenerationGenerationOne VpnGatewayGeneration = "Generation1" + VpnGatewayGenerationGenerationTwo VpnGatewayGeneration = "Generation2" + VpnGatewayGenerationNone VpnGatewayGeneration = "None" +) + +func PossibleValuesForVpnGatewayGeneration() []string { + return []string{ + string(VpnGatewayGenerationGenerationOne), + string(VpnGatewayGenerationGenerationTwo), + string(VpnGatewayGenerationNone), + } +} + +func (s *VpnGatewayGeneration) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnGatewayGeneration(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnGatewayGeneration(input string) (*VpnGatewayGeneration, error) { + vals := map[string]VpnGatewayGeneration{ + "generation1": VpnGatewayGenerationGenerationOne, + "generation2": VpnGatewayGenerationGenerationTwo, + "none": VpnGatewayGenerationNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnGatewayGeneration(input) + return &out, nil +} + +type VpnNatRuleMode string + +const ( + VpnNatRuleModeEgressSnat VpnNatRuleMode = "EgressSnat" + VpnNatRuleModeIngressSnat VpnNatRuleMode = "IngressSnat" +) + +func PossibleValuesForVpnNatRuleMode() []string { + return []string{ + string(VpnNatRuleModeEgressSnat), + string(VpnNatRuleModeIngressSnat), + } +} + +func (s *VpnNatRuleMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnNatRuleMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnNatRuleMode(input string) (*VpnNatRuleMode, error) { + vals := map[string]VpnNatRuleMode{ + "egresssnat": VpnNatRuleModeEgressSnat, + "ingresssnat": VpnNatRuleModeIngressSnat, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnNatRuleMode(input) + return &out, nil +} + +type VpnNatRuleType string + +const ( + VpnNatRuleTypeDynamic VpnNatRuleType = "Dynamic" + VpnNatRuleTypeStatic VpnNatRuleType = "Static" +) + +func PossibleValuesForVpnNatRuleType() []string { + return []string{ + string(VpnNatRuleTypeDynamic), + string(VpnNatRuleTypeStatic), + } +} + +func (s *VpnNatRuleType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnNatRuleType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnNatRuleType(input string) (*VpnNatRuleType, error) { + vals := map[string]VpnNatRuleType{ + "dynamic": VpnNatRuleTypeDynamic, + "static": VpnNatRuleTypeStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnNatRuleType(input) + return &out, nil +} + +type VpnPolicyMemberAttributeType string + +const ( + VpnPolicyMemberAttributeTypeAADGroupId VpnPolicyMemberAttributeType = "AADGroupId" + VpnPolicyMemberAttributeTypeCertificateGroupId VpnPolicyMemberAttributeType = "CertificateGroupId" + VpnPolicyMemberAttributeTypeRadiusAzureGroupId VpnPolicyMemberAttributeType = "RadiusAzureGroupId" +) + +func PossibleValuesForVpnPolicyMemberAttributeType() []string { + return []string{ + string(VpnPolicyMemberAttributeTypeAADGroupId), + string(VpnPolicyMemberAttributeTypeCertificateGroupId), + string(VpnPolicyMemberAttributeTypeRadiusAzureGroupId), + } +} + +func (s *VpnPolicyMemberAttributeType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnPolicyMemberAttributeType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnPolicyMemberAttributeType(input string) (*VpnPolicyMemberAttributeType, error) { + vals := map[string]VpnPolicyMemberAttributeType{ + "aadgroupid": VpnPolicyMemberAttributeTypeAADGroupId, + "certificategroupid": VpnPolicyMemberAttributeTypeCertificateGroupId, + "radiusazuregroupid": VpnPolicyMemberAttributeTypeRadiusAzureGroupId, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnPolicyMemberAttributeType(input) + return &out, nil +} + +type VpnType string + +const ( + VpnTypePolicyBased VpnType = "PolicyBased" + VpnTypeRouteBased VpnType = "RouteBased" +) + +func PossibleValuesForVpnType() []string { + return []string{ + string(VpnTypePolicyBased), + string(VpnTypeRouteBased), + } +} + +func (s *VpnType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnType(input string) (*VpnType, error) { + vals := map[string]VpnType{ + "policybased": VpnTypePolicyBased, + "routebased": VpnTypeRouteBased, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnType(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/id_connection.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/id_connection.go new file mode 100644 index 00000000000..fb9191036b5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/id_connection.go @@ -0,0 +1,130 @@ +package virtualnetworkgateways + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ConnectionId{}) +} + +var _ resourceids.ResourceId = &ConnectionId{} + +// ConnectionId is a struct representing the Resource ID for a Connection +type ConnectionId struct { + SubscriptionId string + ResourceGroupName string + ConnectionName string +} + +// NewConnectionID returns a new ConnectionId struct +func NewConnectionID(subscriptionId string, resourceGroupName string, connectionName string) ConnectionId { + return ConnectionId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ConnectionName: connectionName, + } +} + +// ParseConnectionID parses 'input' into a ConnectionId +func ParseConnectionID(input string) (*ConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&ConnectionId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseConnectionIDInsensitively parses 'input' case-insensitively into a ConnectionId +// note: this method should only be used for API response data and not user input +func ParseConnectionIDInsensitively(input string) (*ConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&ConnectionId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ConnectionId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ConnectionName, ok = input.Parsed["connectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "connectionName", input) + } + + return nil +} + +// ValidateConnectionID checks that 'input' can be parsed as a Connection ID +func ValidateConnectionID(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 := ParseConnectionID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Connection ID +func (id ConnectionId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/connections/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ConnectionName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Connection ID +func (id ConnectionId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticConnections", "connections", "connections"), + resourceids.UserSpecifiedSegment("connectionName", "connectionValue"), + } +} + +// String returns a human-readable description of this Connection ID +func (id ConnectionId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Connection Name: %q", id.ConnectionName), + } + return fmt.Sprintf("Connection (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/id_connection_test.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/id_connection_test.go new file mode 100644 index 00000000000..c9138f5b971 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/id_connection_test.go @@ -0,0 +1,282 @@ +package virtualnetworkgateways + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ConnectionId{} + +func TestNewConnectionID(t *testing.T) { + id := NewConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "connectionValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ConnectionName != "connectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'ConnectionName'", id.ConnectionName, "connectionValue") + } +} + +func TestFormatConnectionID(t *testing.T) { + actual := NewConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "connectionValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/connections/connectionValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseConnectionID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/connections", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/connections/connectionValue", + Expected: &ConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ConnectionName: "connectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/connections/connectionValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseConnectionID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ConnectionName != v.Expected.ConnectionName { + t.Fatalf("Expected %q but got %q for ConnectionName", v.Expected.ConnectionName, actual.ConnectionName) + } + + } +} + +func TestParseConnectionIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/connections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/cOnNeCtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/connections/connectionValue", + Expected: &ConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ConnectionName: "connectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/connections/connectionValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/cOnNeCtIoNs/cOnNeCtIoNvAlUe", + Expected: &ConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ConnectionName: "cOnNeCtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/cOnNeCtIoNs/cOnNeCtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseConnectionIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ConnectionName != v.Expected.ConnectionName { + t.Fatalf("Expected %q but got %q for ConnectionName", v.Expected.ConnectionName, actual.ConnectionName) + } + + } +} + +func TestSegmentsForConnectionId(t *testing.T) { + segments := ConnectionId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ConnectionId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/id_virtualnetworkgateway.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/id_virtualnetworkgateway.go new file mode 100644 index 00000000000..4763c88cab1 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/id_virtualnetworkgateway.go @@ -0,0 +1,130 @@ +package virtualnetworkgateways + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&VirtualNetworkGatewayId{}) +} + +var _ resourceids.ResourceId = &VirtualNetworkGatewayId{} + +// VirtualNetworkGatewayId is a struct representing the Resource ID for a Virtual Network Gateway +type VirtualNetworkGatewayId struct { + SubscriptionId string + ResourceGroupName string + VirtualNetworkGatewayName string +} + +// NewVirtualNetworkGatewayID returns a new VirtualNetworkGatewayId struct +func NewVirtualNetworkGatewayID(subscriptionId string, resourceGroupName string, virtualNetworkGatewayName string) VirtualNetworkGatewayId { + return VirtualNetworkGatewayId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VirtualNetworkGatewayName: virtualNetworkGatewayName, + } +} + +// ParseVirtualNetworkGatewayID parses 'input' into a VirtualNetworkGatewayId +func ParseVirtualNetworkGatewayID(input string) (*VirtualNetworkGatewayId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualNetworkGatewayId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualNetworkGatewayId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseVirtualNetworkGatewayIDInsensitively parses 'input' case-insensitively into a VirtualNetworkGatewayId +// note: this method should only be used for API response data and not user input +func ParseVirtualNetworkGatewayIDInsensitively(input string) (*VirtualNetworkGatewayId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualNetworkGatewayId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualNetworkGatewayId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *VirtualNetworkGatewayId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VirtualNetworkGatewayName, ok = input.Parsed["virtualNetworkGatewayName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "virtualNetworkGatewayName", input) + } + + return nil +} + +// ValidateVirtualNetworkGatewayID checks that 'input' can be parsed as a Virtual Network Gateway ID +func ValidateVirtualNetworkGatewayID(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 := ParseVirtualNetworkGatewayID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Virtual Network Gateway ID +func (id VirtualNetworkGatewayId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/virtualNetworkGateways/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VirtualNetworkGatewayName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Virtual Network Gateway ID +func (id VirtualNetworkGatewayId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVirtualNetworkGateways", "virtualNetworkGateways", "virtualNetworkGateways"), + resourceids.UserSpecifiedSegment("virtualNetworkGatewayName", "virtualNetworkGatewayValue"), + } +} + +// String returns a human-readable description of this Virtual Network Gateway ID +func (id VirtualNetworkGatewayId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Virtual Network Gateway Name: %q", id.VirtualNetworkGatewayName), + } + return fmt.Sprintf("Virtual Network Gateway (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/id_virtualnetworkgateway_test.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/id_virtualnetworkgateway_test.go new file mode 100644 index 00000000000..1c9b9be16ca --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/id_virtualnetworkgateway_test.go @@ -0,0 +1,282 @@ +package virtualnetworkgateways + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &VirtualNetworkGatewayId{} + +func TestNewVirtualNetworkGatewayID(t *testing.T) { + id := NewVirtualNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VirtualNetworkGatewayName != "virtualNetworkGatewayValue" { + t.Fatalf("Expected %q but got %q for Segment 'VirtualNetworkGatewayName'", id.VirtualNetworkGatewayName, "virtualNetworkGatewayValue") + } +} + +func TestFormatVirtualNetworkGatewayID(t *testing.T) { + actual := NewVirtualNetworkGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkGateways/virtualNetworkGatewayValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseVirtualNetworkGatewayID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualNetworkGatewayId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkGateways", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkGateways/virtualNetworkGatewayValue", + Expected: &VirtualNetworkGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualNetworkGatewayName: "virtualNetworkGatewayValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkGateways/virtualNetworkGatewayValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualNetworkGatewayID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualNetworkGatewayName != v.Expected.VirtualNetworkGatewayName { + t.Fatalf("Expected %q but got %q for VirtualNetworkGatewayName", v.Expected.VirtualNetworkGatewayName, actual.VirtualNetworkGatewayName) + } + + } +} + +func TestParseVirtualNetworkGatewayIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualNetworkGatewayId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkGateways", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlNeTwOrKgAtEwAyS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkGateways/virtualNetworkGatewayValue", + Expected: &VirtualNetworkGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualNetworkGatewayName: "virtualNetworkGatewayValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkGateways/virtualNetworkGatewayValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlNeTwOrKgAtEwAyS/vIrTuAlNeTwOrKgAtEwAyVaLuE", + Expected: &VirtualNetworkGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VirtualNetworkGatewayName: "vIrTuAlNeTwOrKgAtEwAyVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlNeTwOrKgAtEwAyS/vIrTuAlNeTwOrKgAtEwAyVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualNetworkGatewayIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualNetworkGatewayName != v.Expected.VirtualNetworkGatewayName { + t.Fatalf("Expected %q but got %q for VirtualNetworkGatewayName", v.Expected.VirtualNetworkGatewayName, actual.VirtualNetworkGatewayName) + } + + } +} + +func TestSegmentsForVirtualNetworkGatewayId(t *testing.T) { + segments := VirtualNetworkGatewayId{}.Segments() + if len(segments) == 0 { + t.Fatalf("VirtualNetworkGatewayId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/id_virtualnetworkgatewaynatrule.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/id_virtualnetworkgatewaynatrule.go new file mode 100644 index 00000000000..41c5df8eedd --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/id_virtualnetworkgatewaynatrule.go @@ -0,0 +1,139 @@ +package virtualnetworkgateways + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&VirtualNetworkGatewayNatRuleId{}) +} + +var _ resourceids.ResourceId = &VirtualNetworkGatewayNatRuleId{} + +// VirtualNetworkGatewayNatRuleId is a struct representing the Resource ID for a Virtual Network Gateway Nat Rule +type VirtualNetworkGatewayNatRuleId struct { + SubscriptionId string + ResourceGroupName string + VirtualNetworkGatewayName string + NatRuleName string +} + +// NewVirtualNetworkGatewayNatRuleID returns a new VirtualNetworkGatewayNatRuleId struct +func NewVirtualNetworkGatewayNatRuleID(subscriptionId string, resourceGroupName string, virtualNetworkGatewayName string, natRuleName string) VirtualNetworkGatewayNatRuleId { + return VirtualNetworkGatewayNatRuleId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VirtualNetworkGatewayName: virtualNetworkGatewayName, + NatRuleName: natRuleName, + } +} + +// ParseVirtualNetworkGatewayNatRuleID parses 'input' into a VirtualNetworkGatewayNatRuleId +func ParseVirtualNetworkGatewayNatRuleID(input string) (*VirtualNetworkGatewayNatRuleId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualNetworkGatewayNatRuleId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualNetworkGatewayNatRuleId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseVirtualNetworkGatewayNatRuleIDInsensitively parses 'input' case-insensitively into a VirtualNetworkGatewayNatRuleId +// note: this method should only be used for API response data and not user input +func ParseVirtualNetworkGatewayNatRuleIDInsensitively(input string) (*VirtualNetworkGatewayNatRuleId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualNetworkGatewayNatRuleId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualNetworkGatewayNatRuleId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *VirtualNetworkGatewayNatRuleId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VirtualNetworkGatewayName, ok = input.Parsed["virtualNetworkGatewayName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "virtualNetworkGatewayName", input) + } + + if id.NatRuleName, ok = input.Parsed["natRuleName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "natRuleName", input) + } + + return nil +} + +// ValidateVirtualNetworkGatewayNatRuleID checks that 'input' can be parsed as a Virtual Network Gateway Nat Rule ID +func ValidateVirtualNetworkGatewayNatRuleID(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 := ParseVirtualNetworkGatewayNatRuleID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Virtual Network Gateway Nat Rule ID +func (id VirtualNetworkGatewayNatRuleId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/virtualNetworkGateways/%s/natRules/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VirtualNetworkGatewayName, id.NatRuleName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Virtual Network Gateway Nat Rule ID +func (id VirtualNetworkGatewayNatRuleId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVirtualNetworkGateways", "virtualNetworkGateways", "virtualNetworkGateways"), + resourceids.UserSpecifiedSegment("virtualNetworkGatewayName", "virtualNetworkGatewayValue"), + resourceids.StaticSegment("staticNatRules", "natRules", "natRules"), + resourceids.UserSpecifiedSegment("natRuleName", "natRuleValue"), + } +} + +// String returns a human-readable description of this Virtual Network Gateway Nat Rule ID +func (id VirtualNetworkGatewayNatRuleId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Virtual Network Gateway Name: %q", id.VirtualNetworkGatewayName), + fmt.Sprintf("Nat Rule Name: %q", id.NatRuleName), + } + return fmt.Sprintf("Virtual Network Gateway Nat Rule (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/id_virtualnetworkgatewaynatrule_test.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/id_virtualnetworkgatewaynatrule_test.go new file mode 100644 index 00000000000..ae1f73b2a85 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/id_virtualnetworkgatewaynatrule_test.go @@ -0,0 +1,327 @@ +package virtualnetworkgateways + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &VirtualNetworkGatewayNatRuleId{} + +func TestNewVirtualNetworkGatewayNatRuleID(t *testing.T) { + id := NewVirtualNetworkGatewayNatRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue", "natRuleValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VirtualNetworkGatewayName != "virtualNetworkGatewayValue" { + t.Fatalf("Expected %q but got %q for Segment 'VirtualNetworkGatewayName'", id.VirtualNetworkGatewayName, "virtualNetworkGatewayValue") + } + + if id.NatRuleName != "natRuleValue" { + t.Fatalf("Expected %q but got %q for Segment 'NatRuleName'", id.NatRuleName, "natRuleValue") + } +} + +func TestFormatVirtualNetworkGatewayNatRuleID(t *testing.T) { + actual := NewVirtualNetworkGatewayNatRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkGatewayValue", "natRuleValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkGateways/virtualNetworkGatewayValue/natRules/natRuleValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseVirtualNetworkGatewayNatRuleID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualNetworkGatewayNatRuleId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkGateways", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkGateways/virtualNetworkGatewayValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkGateways/virtualNetworkGatewayValue/natRules", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkGateways/virtualNetworkGatewayValue/natRules/natRuleValue", + Expected: &VirtualNetworkGatewayNatRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualNetworkGatewayName: "virtualNetworkGatewayValue", + NatRuleName: "natRuleValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkGateways/virtualNetworkGatewayValue/natRules/natRuleValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualNetworkGatewayNatRuleID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualNetworkGatewayName != v.Expected.VirtualNetworkGatewayName { + t.Fatalf("Expected %q but got %q for VirtualNetworkGatewayName", v.Expected.VirtualNetworkGatewayName, actual.VirtualNetworkGatewayName) + } + + if actual.NatRuleName != v.Expected.NatRuleName { + t.Fatalf("Expected %q but got %q for NatRuleName", v.Expected.NatRuleName, actual.NatRuleName) + } + + } +} + +func TestParseVirtualNetworkGatewayNatRuleIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualNetworkGatewayNatRuleId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkGateways", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlNeTwOrKgAtEwAyS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkGateways/virtualNetworkGatewayValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlNeTwOrKgAtEwAyS/vIrTuAlNeTwOrKgAtEwAyVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkGateways/virtualNetworkGatewayValue/natRules", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlNeTwOrKgAtEwAyS/vIrTuAlNeTwOrKgAtEwAyVaLuE/nAtRuLeS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkGateways/virtualNetworkGatewayValue/natRules/natRuleValue", + Expected: &VirtualNetworkGatewayNatRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualNetworkGatewayName: "virtualNetworkGatewayValue", + NatRuleName: "natRuleValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkGateways/virtualNetworkGatewayValue/natRules/natRuleValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlNeTwOrKgAtEwAyS/vIrTuAlNeTwOrKgAtEwAyVaLuE/nAtRuLeS/nAtRuLeVaLuE", + Expected: &VirtualNetworkGatewayNatRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VirtualNetworkGatewayName: "vIrTuAlNeTwOrKgAtEwAyVaLuE", + NatRuleName: "nAtRuLeVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlNeTwOrKgAtEwAyS/vIrTuAlNeTwOrKgAtEwAyVaLuE/nAtRuLeS/nAtRuLeVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualNetworkGatewayNatRuleIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualNetworkGatewayName != v.Expected.VirtualNetworkGatewayName { + t.Fatalf("Expected %q but got %q for VirtualNetworkGatewayName", v.Expected.VirtualNetworkGatewayName, actual.VirtualNetworkGatewayName) + } + + if actual.NatRuleName != v.Expected.NatRuleName { + t.Fatalf("Expected %q but got %q for NatRuleName", v.Expected.NatRuleName, actual.NatRuleName) + } + + } +} + +func TestSegmentsForVirtualNetworkGatewayNatRuleId(t *testing.T) { + segments := VirtualNetworkGatewayNatRuleId{}.Segments() + if len(segments) == 0 { + t.Fatalf("VirtualNetworkGatewayNatRuleId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_createorupdate.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_createorupdate.go new file mode 100644 index 00000000000..1f22024e4a6 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_createorupdate.go @@ -0,0 +1,75 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VirtualNetworkGateway +} + +// CreateOrUpdate ... +func (c VirtualNetworkGatewaysClient) CreateOrUpdate(ctx context.Context, id VirtualNetworkGatewayId, input VirtualNetworkGateway) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c VirtualNetworkGatewaysClient) CreateOrUpdateThenPoll(ctx context.Context, id VirtualNetworkGatewayId, input VirtualNetworkGateway) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_delete.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_delete.go new file mode 100644 index 00000000000..06878f245a4 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_delete.go @@ -0,0 +1,71 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c VirtualNetworkGatewaysClient) Delete(ctx context.Context, id VirtualNetworkGatewayId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c VirtualNetworkGatewaysClient) DeleteThenPoll(ctx context.Context, id VirtualNetworkGatewayId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_disconnectvirtualnetworkgatewayvpnconnections.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_disconnectvirtualnetworkgatewayvpnconnections.go new file mode 100644 index 00000000000..6a0589d67d6 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_disconnectvirtualnetworkgatewayvpnconnections.go @@ -0,0 +1,74 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DisconnectVirtualNetworkGatewayVpnConnectionsOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// DisconnectVirtualNetworkGatewayVpnConnections ... +func (c VirtualNetworkGatewaysClient) DisconnectVirtualNetworkGatewayVpnConnections(ctx context.Context, id VirtualNetworkGatewayId, input P2SVpnConnectionRequest) (result DisconnectVirtualNetworkGatewayVpnConnectionsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/disconnectVirtualNetworkGatewayVpnConnections", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DisconnectVirtualNetworkGatewayVpnConnectionsThenPoll performs DisconnectVirtualNetworkGatewayVpnConnections then polls until it's completed +func (c VirtualNetworkGatewaysClient) DisconnectVirtualNetworkGatewayVpnConnectionsThenPoll(ctx context.Context, id VirtualNetworkGatewayId, input P2SVpnConnectionRequest) error { + result, err := c.DisconnectVirtualNetworkGatewayVpnConnections(ctx, id, input) + if err != nil { + return fmt.Errorf("performing DisconnectVirtualNetworkGatewayVpnConnections: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after DisconnectVirtualNetworkGatewayVpnConnections: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_generatevpnclientpackage.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_generatevpnclientpackage.go new file mode 100644 index 00000000000..a08869751a8 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_generatevpnclientpackage.go @@ -0,0 +1,75 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GeneratevpnclientpackageOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *string +} + +// Generatevpnclientpackage ... +func (c VirtualNetworkGatewaysClient) Generatevpnclientpackage(ctx context.Context, id VirtualNetworkGatewayId, input VpnClientParameters) (result GeneratevpnclientpackageOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/generatevpnclientpackage", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// GeneratevpnclientpackageThenPoll performs Generatevpnclientpackage then polls until it's completed +func (c VirtualNetworkGatewaysClient) GeneratevpnclientpackageThenPoll(ctx context.Context, id VirtualNetworkGatewayId, input VpnClientParameters) error { + result, err := c.Generatevpnclientpackage(ctx, id, input) + if err != nil { + return fmt.Errorf("performing Generatevpnclientpackage: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Generatevpnclientpackage: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_generatevpnprofile.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_generatevpnprofile.go new file mode 100644 index 00000000000..3b9f9f9815e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_generatevpnprofile.go @@ -0,0 +1,75 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GenerateVpnProfileOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *string +} + +// GenerateVpnProfile ... +func (c VirtualNetworkGatewaysClient) GenerateVpnProfile(ctx context.Context, id VirtualNetworkGatewayId, input VpnClientParameters) (result GenerateVpnProfileOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/generatevpnprofile", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// GenerateVpnProfileThenPoll performs GenerateVpnProfile then polls until it's completed +func (c VirtualNetworkGatewaysClient) GenerateVpnProfileThenPoll(ctx context.Context, id VirtualNetworkGatewayId, input VpnClientParameters) error { + result, err := c.GenerateVpnProfile(ctx, id, input) + if err != nil { + return fmt.Errorf("performing GenerateVpnProfile: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after GenerateVpnProfile: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_get.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_get.go new file mode 100644 index 00000000000..0f42a04cd89 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_get.go @@ -0,0 +1,54 @@ +package virtualnetworkgateways + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VirtualNetworkGateway +} + +// Get ... +func (c VirtualNetworkGatewaysClient) Get(ctx context.Context, id VirtualNetworkGatewayId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VirtualNetworkGateway + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_getadvertisedroutes.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_getadvertisedroutes.go new file mode 100644 index 00000000000..81a82f3fee4 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_getadvertisedroutes.go @@ -0,0 +1,99 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetAdvertisedRoutesOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *GatewayRouteListResult +} + +type GetAdvertisedRoutesOperationOptions struct { + Peer *string +} + +func DefaultGetAdvertisedRoutesOperationOptions() GetAdvertisedRoutesOperationOptions { + return GetAdvertisedRoutesOperationOptions{} +} + +func (o GetAdvertisedRoutesOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetAdvertisedRoutesOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetAdvertisedRoutesOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Peer != nil { + out.Append("peer", fmt.Sprintf("%v", *o.Peer)) + } + return &out +} + +// GetAdvertisedRoutes ... +func (c VirtualNetworkGatewaysClient) GetAdvertisedRoutes(ctx context.Context, id VirtualNetworkGatewayId, options GetAdvertisedRoutesOperationOptions) (result GetAdvertisedRoutesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/getAdvertisedRoutes", id.ID()), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// GetAdvertisedRoutesThenPoll performs GetAdvertisedRoutes then polls until it's completed +func (c VirtualNetworkGatewaysClient) GetAdvertisedRoutesThenPoll(ctx context.Context, id VirtualNetworkGatewayId, options GetAdvertisedRoutesOperationOptions) error { + result, err := c.GetAdvertisedRoutes(ctx, id, options) + if err != nil { + return fmt.Errorf("performing GetAdvertisedRoutes: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after GetAdvertisedRoutes: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_getbgppeerstatus.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_getbgppeerstatus.go new file mode 100644 index 00000000000..f8e0d0d0aae --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_getbgppeerstatus.go @@ -0,0 +1,99 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetBgpPeerStatusOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *BgpPeerStatusListResult +} + +type GetBgpPeerStatusOperationOptions struct { + Peer *string +} + +func DefaultGetBgpPeerStatusOperationOptions() GetBgpPeerStatusOperationOptions { + return GetBgpPeerStatusOperationOptions{} +} + +func (o GetBgpPeerStatusOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetBgpPeerStatusOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetBgpPeerStatusOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Peer != nil { + out.Append("peer", fmt.Sprintf("%v", *o.Peer)) + } + return &out +} + +// GetBgpPeerStatus ... +func (c VirtualNetworkGatewaysClient) GetBgpPeerStatus(ctx context.Context, id VirtualNetworkGatewayId, options GetBgpPeerStatusOperationOptions) (result GetBgpPeerStatusOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/getBgpPeerStatus", id.ID()), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// GetBgpPeerStatusThenPoll performs GetBgpPeerStatus then polls until it's completed +func (c VirtualNetworkGatewaysClient) GetBgpPeerStatusThenPoll(ctx context.Context, id VirtualNetworkGatewayId, options GetBgpPeerStatusOperationOptions) error { + result, err := c.GetBgpPeerStatus(ctx, id, options) + if err != nil { + return fmt.Errorf("performing GetBgpPeerStatus: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after GetBgpPeerStatus: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_getlearnedroutes.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_getlearnedroutes.go new file mode 100644 index 00000000000..3cfd0aa16a8 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_getlearnedroutes.go @@ -0,0 +1,71 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetLearnedRoutesOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *GatewayRouteListResult +} + +// GetLearnedRoutes ... +func (c VirtualNetworkGatewaysClient) GetLearnedRoutes(ctx context.Context, id VirtualNetworkGatewayId) (result GetLearnedRoutesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/getLearnedRoutes", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// GetLearnedRoutesThenPoll performs GetLearnedRoutes then polls until it's completed +func (c VirtualNetworkGatewaysClient) GetLearnedRoutesThenPoll(ctx context.Context, id VirtualNetworkGatewayId) error { + result, err := c.GetLearnedRoutes(ctx, id) + if err != nil { + return fmt.Errorf("performing GetLearnedRoutes: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after GetLearnedRoutes: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_getvpnclientconnectionhealth.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_getvpnclientconnectionhealth.go new file mode 100644 index 00000000000..8b7f93d0b5c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_getvpnclientconnectionhealth.go @@ -0,0 +1,71 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetVpnclientConnectionHealthOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VpnClientConnectionHealthDetailListResult +} + +// GetVpnclientConnectionHealth ... +func (c VirtualNetworkGatewaysClient) GetVpnclientConnectionHealth(ctx context.Context, id VirtualNetworkGatewayId) (result GetVpnclientConnectionHealthOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/getVpnClientConnectionHealth", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// GetVpnclientConnectionHealthThenPoll performs GetVpnclientConnectionHealth then polls until it's completed +func (c VirtualNetworkGatewaysClient) GetVpnclientConnectionHealthThenPoll(ctx context.Context, id VirtualNetworkGatewayId) error { + result, err := c.GetVpnclientConnectionHealth(ctx, id) + if err != nil { + return fmt.Errorf("performing GetVpnclientConnectionHealth: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after GetVpnclientConnectionHealth: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_getvpnclientipsecparameters.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_getvpnclientipsecparameters.go new file mode 100644 index 00000000000..43dd02230df --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_getvpnclientipsecparameters.go @@ -0,0 +1,70 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetVpnclientIPsecParametersOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VpnClientIPsecParameters +} + +// GetVpnclientIPsecParameters ... +func (c VirtualNetworkGatewaysClient) GetVpnclientIPsecParameters(ctx context.Context, id VirtualNetworkGatewayId) (result GetVpnclientIPsecParametersOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/getvpnclientipsecparameters", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// GetVpnclientIPsecParametersThenPoll performs GetVpnclientIPsecParameters then polls until it's completed +func (c VirtualNetworkGatewaysClient) GetVpnclientIPsecParametersThenPoll(ctx context.Context, id VirtualNetworkGatewayId) error { + result, err := c.GetVpnclientIPsecParameters(ctx, id) + if err != nil { + return fmt.Errorf("performing GetVpnclientIPsecParameters: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after GetVpnclientIPsecParameters: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_getvpnprofilepackageurl.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_getvpnprofilepackageurl.go new file mode 100644 index 00000000000..c247730a0c5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_getvpnprofilepackageurl.go @@ -0,0 +1,71 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetVpnProfilePackageUrlOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *string +} + +// GetVpnProfilePackageUrl ... +func (c VirtualNetworkGatewaysClient) GetVpnProfilePackageUrl(ctx context.Context, id VirtualNetworkGatewayId) (result GetVpnProfilePackageUrlOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/getvpnprofilepackageurl", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// GetVpnProfilePackageUrlThenPoll performs GetVpnProfilePackageUrl then polls until it's completed +func (c VirtualNetworkGatewaysClient) GetVpnProfilePackageUrlThenPoll(ctx context.Context, id VirtualNetworkGatewayId) error { + result, err := c.GetVpnProfilePackageUrl(ctx, id) + if err != nil { + return fmt.Errorf("performing GetVpnProfilePackageUrl: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after GetVpnProfilePackageUrl: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_list.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_list.go new file mode 100644 index 00000000000..71bb6d6e8be --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_list.go @@ -0,0 +1,93 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VirtualNetworkGateway +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []VirtualNetworkGateway +} + +// List ... +func (c VirtualNetworkGatewaysClient) List(ctx context.Context, id commonids.ResourceGroupId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/virtualNetworkGateways", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VirtualNetworkGateway `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c VirtualNetworkGatewaysClient) ListComplete(ctx context.Context, id commonids.ResourceGroupId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, VirtualNetworkGatewayOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualNetworkGatewaysClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate VirtualNetworkGatewayOperationPredicate) (result ListCompleteResult, err error) { + items := make([]VirtualNetworkGateway, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_listconnections.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_listconnections.go new file mode 100644 index 00000000000..11416dae415 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_listconnections.go @@ -0,0 +1,92 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListConnectionsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VirtualNetworkGatewayConnectionListEntity +} + +type ListConnectionsCompleteResult struct { + LatestHttpResponse *http.Response + Items []VirtualNetworkGatewayConnectionListEntity +} + +// ListConnections ... +func (c VirtualNetworkGatewaysClient) ListConnections(ctx context.Context, id VirtualNetworkGatewayId) (result ListConnectionsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/connections", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VirtualNetworkGatewayConnectionListEntity `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListConnectionsComplete retrieves all the results into a single object +func (c VirtualNetworkGatewaysClient) ListConnectionsComplete(ctx context.Context, id VirtualNetworkGatewayId) (ListConnectionsCompleteResult, error) { + return c.ListConnectionsCompleteMatchingPredicate(ctx, id, VirtualNetworkGatewayConnectionListEntityOperationPredicate{}) +} + +// ListConnectionsCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualNetworkGatewaysClient) ListConnectionsCompleteMatchingPredicate(ctx context.Context, id VirtualNetworkGatewayId, predicate VirtualNetworkGatewayConnectionListEntityOperationPredicate) (result ListConnectionsCompleteResult, err error) { + items := make([]VirtualNetworkGatewayConnectionListEntity, 0) + + resp, err := c.ListConnections(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListConnectionsCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_reset.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_reset.go new file mode 100644 index 00000000000..d766e3f0c62 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_reset.go @@ -0,0 +1,99 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResetOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VirtualNetworkGateway +} + +type ResetOperationOptions struct { + GatewayVip *string +} + +func DefaultResetOperationOptions() ResetOperationOptions { + return ResetOperationOptions{} +} + +func (o ResetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o ResetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o ResetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.GatewayVip != nil { + out.Append("gatewayVip", fmt.Sprintf("%v", *o.GatewayVip)) + } + return &out +} + +// Reset ... +func (c VirtualNetworkGatewaysClient) Reset(ctx context.Context, id VirtualNetworkGatewayId, options ResetOperationOptions) (result ResetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/reset", id.ID()), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// ResetThenPoll performs Reset then polls until it's completed +func (c VirtualNetworkGatewaysClient) ResetThenPoll(ctx context.Context, id VirtualNetworkGatewayId, options ResetOperationOptions) error { + result, err := c.Reset(ctx, id, options) + if err != nil { + return fmt.Errorf("performing Reset: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Reset: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_resetvpnclientsharedkey.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_resetvpnclientsharedkey.go new file mode 100644 index 00000000000..3e10b92aa05 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_resetvpnclientsharedkey.go @@ -0,0 +1,70 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResetVpnClientSharedKeyOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// ResetVpnClientSharedKey ... +func (c VirtualNetworkGatewaysClient) ResetVpnClientSharedKey(ctx context.Context, id VirtualNetworkGatewayId) (result ResetVpnClientSharedKeyOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/resetvpnclientsharedkey", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// ResetVpnClientSharedKeyThenPoll performs ResetVpnClientSharedKey then polls until it's completed +func (c VirtualNetworkGatewaysClient) ResetVpnClientSharedKeyThenPoll(ctx context.Context, id VirtualNetworkGatewayId) error { + result, err := c.ResetVpnClientSharedKey(ctx, id) + if err != nil { + return fmt.Errorf("performing ResetVpnClientSharedKey: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after ResetVpnClientSharedKey: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_setvpnclientipsecparameters.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_setvpnclientipsecparameters.go new file mode 100644 index 00000000000..c6ce6809b83 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_setvpnclientipsecparameters.go @@ -0,0 +1,75 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SetVpnclientIPsecParametersOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VpnClientIPsecParameters +} + +// SetVpnclientIPsecParameters ... +func (c VirtualNetworkGatewaysClient) SetVpnclientIPsecParameters(ctx context.Context, id VirtualNetworkGatewayId, input VpnClientIPsecParameters) (result SetVpnclientIPsecParametersOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/setvpnclientipsecparameters", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// SetVpnclientIPsecParametersThenPoll performs SetVpnclientIPsecParameters then polls until it's completed +func (c VirtualNetworkGatewaysClient) SetVpnclientIPsecParametersThenPoll(ctx context.Context, id VirtualNetworkGatewayId, input VpnClientIPsecParameters) error { + result, err := c.SetVpnclientIPsecParameters(ctx, id, input) + if err != nil { + return fmt.Errorf("performing SetVpnclientIPsecParameters: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after SetVpnclientIPsecParameters: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_startpacketcapture.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_startpacketcapture.go new file mode 100644 index 00000000000..6aae280247b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_startpacketcapture.go @@ -0,0 +1,75 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StartPacketCaptureOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *string +} + +// StartPacketCapture ... +func (c VirtualNetworkGatewaysClient) StartPacketCapture(ctx context.Context, id VirtualNetworkGatewayId, input VpnPacketCaptureStartParameters) (result StartPacketCaptureOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/startPacketCapture", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// StartPacketCaptureThenPoll performs StartPacketCapture then polls until it's completed +func (c VirtualNetworkGatewaysClient) StartPacketCaptureThenPoll(ctx context.Context, id VirtualNetworkGatewayId, input VpnPacketCaptureStartParameters) error { + result, err := c.StartPacketCapture(ctx, id, input) + if err != nil { + return fmt.Errorf("performing StartPacketCapture: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after StartPacketCapture: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_stoppacketcapture.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_stoppacketcapture.go new file mode 100644 index 00000000000..b193430e431 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_stoppacketcapture.go @@ -0,0 +1,75 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StopPacketCaptureOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *string +} + +// StopPacketCapture ... +func (c VirtualNetworkGatewaysClient) StopPacketCapture(ctx context.Context, id VirtualNetworkGatewayId, input VpnPacketCaptureStopParameters) (result StopPacketCaptureOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/stopPacketCapture", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// StopPacketCaptureThenPoll performs StopPacketCapture then polls until it's completed +func (c VirtualNetworkGatewaysClient) StopPacketCaptureThenPoll(ctx context.Context, id VirtualNetworkGatewayId, input VpnPacketCaptureStopParameters) error { + result, err := c.StopPacketCapture(ctx, id, input) + if err != nil { + return fmt.Errorf("performing StopPacketCapture: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after StopPacketCapture: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_supportedvpndevices.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_supportedvpndevices.go new file mode 100644 index 00000000000..c7d78912ab2 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_supportedvpndevices.go @@ -0,0 +1,55 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SupportedVpnDevicesOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *string +} + +// SupportedVpnDevices ... +func (c VirtualNetworkGatewaysClient) SupportedVpnDevices(ctx context.Context, id VirtualNetworkGatewayId) (result SupportedVpnDevicesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/supportedvpndevices", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model string + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_updatetags.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_updatetags.go new file mode 100644 index 00000000000..a374667f9a3 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_updatetags.go @@ -0,0 +1,75 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VirtualNetworkGateway +} + +// UpdateTags ... +func (c VirtualNetworkGatewaysClient) UpdateTags(ctx context.Context, id VirtualNetworkGatewayId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// UpdateTagsThenPoll performs UpdateTags then polls until it's completed +func (c VirtualNetworkGatewaysClient) UpdateTagsThenPoll(ctx context.Context, id VirtualNetworkGatewayId, input TagsObject) error { + result, err := c.UpdateTags(ctx, id, input) + if err != nil { + return fmt.Errorf("performing UpdateTags: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after UpdateTags: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_virtualnetworkgatewaynatrulescreateorupdate.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_virtualnetworkgatewaynatrulescreateorupdate.go new file mode 100644 index 00000000000..b68cd3bf17c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_virtualnetworkgatewaynatrulescreateorupdate.go @@ -0,0 +1,75 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayNatRulesCreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VirtualNetworkGatewayNatRule +} + +// VirtualNetworkGatewayNatRulesCreateOrUpdate ... +func (c VirtualNetworkGatewaysClient) VirtualNetworkGatewayNatRulesCreateOrUpdate(ctx context.Context, id VirtualNetworkGatewayNatRuleId, input VirtualNetworkGatewayNatRule) (result VirtualNetworkGatewayNatRulesCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VirtualNetworkGatewayNatRulesCreateOrUpdateThenPoll performs VirtualNetworkGatewayNatRulesCreateOrUpdate then polls until it's completed +func (c VirtualNetworkGatewaysClient) VirtualNetworkGatewayNatRulesCreateOrUpdateThenPoll(ctx context.Context, id VirtualNetworkGatewayNatRuleId, input VirtualNetworkGatewayNatRule) error { + result, err := c.VirtualNetworkGatewayNatRulesCreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing VirtualNetworkGatewayNatRulesCreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VirtualNetworkGatewayNatRulesCreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_virtualnetworkgatewaynatrulesdelete.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_virtualnetworkgatewaynatrulesdelete.go new file mode 100644 index 00000000000..4d041050bd2 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_virtualnetworkgatewaynatrulesdelete.go @@ -0,0 +1,71 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayNatRulesDeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// VirtualNetworkGatewayNatRulesDelete ... +func (c VirtualNetworkGatewaysClient) VirtualNetworkGatewayNatRulesDelete(ctx context.Context, id VirtualNetworkGatewayNatRuleId) (result VirtualNetworkGatewayNatRulesDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VirtualNetworkGatewayNatRulesDeleteThenPoll performs VirtualNetworkGatewayNatRulesDelete then polls until it's completed +func (c VirtualNetworkGatewaysClient) VirtualNetworkGatewayNatRulesDeleteThenPoll(ctx context.Context, id VirtualNetworkGatewayNatRuleId) error { + result, err := c.VirtualNetworkGatewayNatRulesDelete(ctx, id) + if err != nil { + return fmt.Errorf("performing VirtualNetworkGatewayNatRulesDelete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VirtualNetworkGatewayNatRulesDelete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_virtualnetworkgatewaynatrulesget.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_virtualnetworkgatewaynatrulesget.go new file mode 100644 index 00000000000..8347acb37cd --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_virtualnetworkgatewaynatrulesget.go @@ -0,0 +1,54 @@ +package virtualnetworkgateways + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayNatRulesGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VirtualNetworkGatewayNatRule +} + +// VirtualNetworkGatewayNatRulesGet ... +func (c VirtualNetworkGatewaysClient) VirtualNetworkGatewayNatRulesGet(ctx context.Context, id VirtualNetworkGatewayNatRuleId) (result VirtualNetworkGatewayNatRulesGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VirtualNetworkGatewayNatRule + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_virtualnetworkgatewaynatruleslistbyvirtualnetworkgateway.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_virtualnetworkgatewaynatruleslistbyvirtualnetworkgateway.go new file mode 100644 index 00000000000..9fc49217e2c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_virtualnetworkgatewaynatruleslistbyvirtualnetworkgateway.go @@ -0,0 +1,92 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayNatRulesListByVirtualNetworkGatewayOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VirtualNetworkGatewayNatRule +} + +type VirtualNetworkGatewayNatRulesListByVirtualNetworkGatewayCompleteResult struct { + LatestHttpResponse *http.Response + Items []VirtualNetworkGatewayNatRule +} + +// VirtualNetworkGatewayNatRulesListByVirtualNetworkGateway ... +func (c VirtualNetworkGatewaysClient) VirtualNetworkGatewayNatRulesListByVirtualNetworkGateway(ctx context.Context, id VirtualNetworkGatewayId) (result VirtualNetworkGatewayNatRulesListByVirtualNetworkGatewayOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/natRules", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VirtualNetworkGatewayNatRule `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// VirtualNetworkGatewayNatRulesListByVirtualNetworkGatewayComplete retrieves all the results into a single object +func (c VirtualNetworkGatewaysClient) VirtualNetworkGatewayNatRulesListByVirtualNetworkGatewayComplete(ctx context.Context, id VirtualNetworkGatewayId) (VirtualNetworkGatewayNatRulesListByVirtualNetworkGatewayCompleteResult, error) { + return c.VirtualNetworkGatewayNatRulesListByVirtualNetworkGatewayCompleteMatchingPredicate(ctx, id, VirtualNetworkGatewayNatRuleOperationPredicate{}) +} + +// VirtualNetworkGatewayNatRulesListByVirtualNetworkGatewayCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualNetworkGatewaysClient) VirtualNetworkGatewayNatRulesListByVirtualNetworkGatewayCompleteMatchingPredicate(ctx context.Context, id VirtualNetworkGatewayId, predicate VirtualNetworkGatewayNatRuleOperationPredicate) (result VirtualNetworkGatewayNatRulesListByVirtualNetworkGatewayCompleteResult, err error) { + items := make([]VirtualNetworkGatewayNatRule, 0) + + resp, err := c.VirtualNetworkGatewayNatRulesListByVirtualNetworkGateway(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = VirtualNetworkGatewayNatRulesListByVirtualNetworkGatewayCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/method_vpndeviceconfigurationscript.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_vpndeviceconfigurationscript.go new file mode 100644 index 00000000000..b2673932149 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/method_vpndeviceconfigurationscript.go @@ -0,0 +1,59 @@ +package virtualnetworkgateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnDeviceConfigurationScriptOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *string +} + +// VpnDeviceConfigurationScript ... +func (c VirtualNetworkGatewaysClient) VpnDeviceConfigurationScript(ctx context.Context, id ConnectionId, input VpnDeviceScriptParameters) (result VpnDeviceConfigurationScriptOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/vpndeviceconfigurationscript", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model string + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_addressspace.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_addressspace.go new file mode 100644 index 00000000000..8ec4b3f0b7d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_addressspace.go @@ -0,0 +1,8 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AddressSpace struct { + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_bgppeerstatus.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_bgppeerstatus.go new file mode 100644 index 00000000000..8b54be7d7ae --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_bgppeerstatus.go @@ -0,0 +1,15 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BgpPeerStatus struct { + Asn *int64 `json:"asn,omitempty"` + ConnectedDuration *string `json:"connectedDuration,omitempty"` + LocalAddress *string `json:"localAddress,omitempty"` + MessagesReceived *int64 `json:"messagesReceived,omitempty"` + MessagesSent *int64 `json:"messagesSent,omitempty"` + Neighbor *string `json:"neighbor,omitempty"` + RoutesReceived *int64 `json:"routesReceived,omitempty"` + State *BgpPeerState `json:"state,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_bgppeerstatuslistresult.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_bgppeerstatuslistresult.go new file mode 100644 index 00000000000..4affff1a309 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_bgppeerstatuslistresult.go @@ -0,0 +1,8 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BgpPeerStatusListResult struct { + Value *[]BgpPeerStatus `json:"value,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_bgpsettings.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_bgpsettings.go new file mode 100644 index 00000000000..38b1165bfa1 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_bgpsettings.go @@ -0,0 +1,11 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BgpSettings struct { + Asn *int64 `json:"asn,omitempty"` + BgpPeeringAddress *string `json:"bgpPeeringAddress,omitempty"` + BgpPeeringAddresses *[]IPConfigurationBgpPeeringAddress `json:"bgpPeeringAddresses,omitempty"` + PeerWeight *int64 `json:"peerWeight,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_gatewaycustombgpipaddressipconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_gatewaycustombgpipaddressipconfiguration.go new file mode 100644 index 00000000000..6bb7f5aa055 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_gatewaycustombgpipaddressipconfiguration.go @@ -0,0 +1,9 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayCustomBgpIPAddressIPConfiguration struct { + CustomBgpIPAddress string `json:"customBgpIpAddress"` + IPConfigurationId string `json:"ipConfigurationId"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_gatewayroute.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_gatewayroute.go new file mode 100644 index 00000000000..038e61f22d3 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_gatewayroute.go @@ -0,0 +1,14 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayRoute struct { + AsPath *string `json:"asPath,omitempty"` + LocalAddress *string `json:"localAddress,omitempty"` + Network *string `json:"network,omitempty"` + NextHop *string `json:"nextHop,omitempty"` + Origin *string `json:"origin,omitempty"` + SourcePeer *string `json:"sourcePeer,omitempty"` + Weight *int64 `json:"weight,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_gatewayroutelistresult.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_gatewayroutelistresult.go new file mode 100644 index 00000000000..d0ab95ca8fb --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_gatewayroutelistresult.go @@ -0,0 +1,8 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayRouteListResult struct { + Value *[]GatewayRoute `json:"value,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_ipconfigurationbgppeeringaddress.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_ipconfigurationbgppeeringaddress.go new file mode 100644 index 00000000000..bfda111f40f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_ipconfigurationbgppeeringaddress.go @@ -0,0 +1,11 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationBgpPeeringAddress struct { + CustomBgpIPAddresses *[]string `json:"customBgpIpAddresses,omitempty"` + DefaultBgpIPAddresses *[]string `json:"defaultBgpIpAddresses,omitempty"` + IPconfigurationId *string `json:"ipconfigurationId,omitempty"` + TunnelIPAddresses *[]string `json:"tunnelIpAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_ipsecpolicy.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_ipsecpolicy.go new file mode 100644 index 00000000000..6db4ac44425 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_ipsecpolicy.go @@ -0,0 +1,15 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPsecPolicy struct { + DhGroup DhGroup `json:"dhGroup"` + IPsecEncryption IPsecEncryption `json:"ipsecEncryption"` + IPsecIntegrity IPsecIntegrity `json:"ipsecIntegrity"` + IkeEncryption IkeEncryption `json:"ikeEncryption"` + IkeIntegrity IkeIntegrity `json:"ikeIntegrity"` + PfsGroup PfsGroup `json:"pfsGroup"` + SaDataSizeKilobytes int64 `json:"saDataSizeKilobytes"` + SaLifeTimeSeconds int64 `json:"saLifeTimeSeconds"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_p2svpnconnectionrequest.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_p2svpnconnectionrequest.go new file mode 100644 index 00000000000..dafc643bcef --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_p2svpnconnectionrequest.go @@ -0,0 +1,8 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type P2SVpnConnectionRequest struct { + VpnConnectionIds *[]string `json:"vpnConnectionIds,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_radiusserver.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_radiusserver.go new file mode 100644 index 00000000000..eb891246991 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_radiusserver.go @@ -0,0 +1,10 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RadiusServer struct { + RadiusServerAddress string `json:"radiusServerAddress"` + RadiusServerScore *int64 `json:"radiusServerScore,omitempty"` + RadiusServerSecret *string `json:"radiusServerSecret,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_subresource.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_subresource.go new file mode 100644 index 00000000000..5e20a09efb4 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_subresource.go @@ -0,0 +1,8 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_tagsobject.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_tagsobject.go new file mode 100644 index 00000000000..1208ffee7eb --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_tagsobject.go @@ -0,0 +1,8 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_trafficselectorpolicy.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_trafficselectorpolicy.go new file mode 100644 index 00000000000..6dbeefcf439 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_trafficselectorpolicy.go @@ -0,0 +1,9 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficSelectorPolicy struct { + LocalAddressRanges []string `json:"localAddressRanges"` + RemoteAddressRanges []string `json:"remoteAddressRanges"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_tunnelconnectionhealth.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_tunnelconnectionhealth.go new file mode 100644 index 00000000000..786b8730363 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_tunnelconnectionhealth.go @@ -0,0 +1,12 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TunnelConnectionHealth struct { + ConnectionStatus *VirtualNetworkGatewayConnectionStatus `json:"connectionStatus,omitempty"` + EgressBytesTransferred *int64 `json:"egressBytesTransferred,omitempty"` + IngressBytesTransferred *int64 `json:"ingressBytesTransferred,omitempty"` + LastConnectionEstablishedUtcTime *string `json:"lastConnectionEstablishedUtcTime,omitempty"` + Tunnel *string `json:"tunnel,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkconnectiongatewayreference.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkconnectiongatewayreference.go new file mode 100644 index 00000000000..f9ddd43a0b5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkconnectiongatewayreference.go @@ -0,0 +1,8 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkConnectionGatewayReference struct { + Id string `json:"id"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgateway.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgateway.go new file mode 100644 index 00000000000..09ed1954ed6 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgateway.go @@ -0,0 +1,21 @@ +package virtualnetworkgateways + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGateway struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties VirtualNetworkGatewayPropertiesFormat `json:"properties"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewayautoscalebounds.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewayautoscalebounds.go new file mode 100644 index 00000000000..ba8082fea07 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewayautoscalebounds.go @@ -0,0 +1,9 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayAutoScaleBounds struct { + Max *int64 `json:"max,omitempty"` + Min *int64 `json:"min,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewayautoscaleconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewayautoscaleconfiguration.go new file mode 100644 index 00000000000..c2bf005d067 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewayautoscaleconfiguration.go @@ -0,0 +1,8 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayAutoScaleConfiguration struct { + Bounds *VirtualNetworkGatewayAutoScaleBounds `json:"bounds,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewayconnectionlistentity.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewayconnectionlistentity.go new file mode 100644 index 00000000000..fc88052ded9 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewayconnectionlistentity.go @@ -0,0 +1,14 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayConnectionListEntity struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties VirtualNetworkGatewayConnectionListEntityPropertiesFormat `json:"properties"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewayconnectionlistentitypropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewayconnectionlistentitypropertiesformat.go new file mode 100644 index 00000000000..ad063d3db47 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewayconnectionlistentitypropertiesformat.go @@ -0,0 +1,30 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayConnectionListEntityPropertiesFormat struct { + AuthorizationKey *string `json:"authorizationKey,omitempty"` + ConnectionMode *VirtualNetworkGatewayConnectionMode `json:"connectionMode,omitempty"` + ConnectionProtocol *VirtualNetworkGatewayConnectionProtocol `json:"connectionProtocol,omitempty"` + ConnectionStatus *VirtualNetworkGatewayConnectionStatus `json:"connectionStatus,omitempty"` + ConnectionType VirtualNetworkGatewayConnectionType `json:"connectionType"` + EgressBytesTransferred *int64 `json:"egressBytesTransferred,omitempty"` + EnableBgp *bool `json:"enableBgp,omitempty"` + EnablePrivateLinkFastPath *bool `json:"enablePrivateLinkFastPath,omitempty"` + ExpressRouteGatewayBypass *bool `json:"expressRouteGatewayBypass,omitempty"` + GatewayCustomBgpIPAddresses *[]GatewayCustomBgpIPAddressIPConfiguration `json:"gatewayCustomBgpIpAddresses,omitempty"` + IPsecPolicies *[]IPsecPolicy `json:"ipsecPolicies,omitempty"` + IngressBytesTransferred *int64 `json:"ingressBytesTransferred,omitempty"` + LocalNetworkGateway2 *VirtualNetworkConnectionGatewayReference `json:"localNetworkGateway2,omitempty"` + Peer *SubResource `json:"peer,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + RoutingWeight *int64 `json:"routingWeight,omitempty"` + SharedKey *string `json:"sharedKey,omitempty"` + TrafficSelectorPolicies *[]TrafficSelectorPolicy `json:"trafficSelectorPolicies,omitempty"` + TunnelConnectionStatus *[]TunnelConnectionHealth `json:"tunnelConnectionStatus,omitempty"` + UsePolicyBasedTrafficSelectors *bool `json:"usePolicyBasedTrafficSelectors,omitempty"` + VirtualNetworkGateway1 VirtualNetworkConnectionGatewayReference `json:"virtualNetworkGateway1"` + VirtualNetworkGateway2 *VirtualNetworkConnectionGatewayReference `json:"virtualNetworkGateway2,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewayipconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewayipconfiguration.go new file mode 100644 index 00000000000..b0f988e9a2c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewayipconfiguration.go @@ -0,0 +1,11 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewayipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewayipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..f4396964e0a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewayipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayIPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *SubResource `json:"publicIPAddress,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewaynatrule.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewaynatrule.go new file mode 100644 index 00000000000..f8d6791d170 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewaynatrule.go @@ -0,0 +1,12 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkGatewayNatRuleProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewaynatruleproperties.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewaynatruleproperties.go new file mode 100644 index 00000000000..6227a89e253 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewaynatruleproperties.go @@ -0,0 +1,13 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayNatRuleProperties struct { + ExternalMappings *[]VpnNatRuleMapping `json:"externalMappings,omitempty"` + IPConfigurationId *string `json:"ipConfigurationId,omitempty"` + InternalMappings *[]VpnNatRuleMapping `json:"internalMappings,omitempty"` + Mode *VpnNatRuleMode `json:"mode,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Type *VpnNatRuleType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewaypolicygroup.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewaypolicygroup.go new file mode 100644 index 00000000000..ebd198d261e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewaypolicygroup.go @@ -0,0 +1,11 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayPolicyGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkGatewayPolicyGroupProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewaypolicygroupmember.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewaypolicygroupmember.go new file mode 100644 index 00000000000..466e643ddd8 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewaypolicygroupmember.go @@ -0,0 +1,10 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayPolicyGroupMember struct { + AttributeType *VpnPolicyMemberAttributeType `json:"attributeType,omitempty"` + AttributeValue *string `json:"attributeValue,omitempty"` + Name *string `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewaypolicygroupproperties.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewaypolicygroupproperties.go new file mode 100644 index 00000000000..ab108714ff3 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewaypolicygroupproperties.go @@ -0,0 +1,12 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayPolicyGroupProperties struct { + IsDefault bool `json:"isDefault"` + PolicyMembers []VirtualNetworkGatewayPolicyGroupMember `json:"policyMembers"` + Priority int64 `json:"priority"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VngClientConnectionConfigurations *[]SubResource `json:"vngClientConnectionConfigurations,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewaypropertiesformat.go new file mode 100644 index 00000000000..3f13bf8bcf6 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewaypropertiesformat.go @@ -0,0 +1,32 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayPropertiesFormat struct { + ActiveActive *bool `json:"activeActive,omitempty"` + AdminState *AdminState `json:"adminState,omitempty"` + AllowRemoteVnetTraffic *bool `json:"allowRemoteVnetTraffic,omitempty"` + AllowVirtualWanTraffic *bool `json:"allowVirtualWanTraffic,omitempty"` + AutoScaleConfiguration *VirtualNetworkGatewayAutoScaleConfiguration `json:"autoScaleConfiguration,omitempty"` + BgpSettings *BgpSettings `json:"bgpSettings,omitempty"` + CustomRoutes *AddressSpace `json:"customRoutes,omitempty"` + DisableIPSecReplayProtection *bool `json:"disableIPSecReplayProtection,omitempty"` + EnableBgp *bool `json:"enableBgp,omitempty"` + EnableBgpRouteTranslationForNat *bool `json:"enableBgpRouteTranslationForNat,omitempty"` + EnableDnsForwarding *bool `json:"enableDnsForwarding,omitempty"` + EnablePrivateIPAddress *bool `json:"enablePrivateIpAddress,omitempty"` + GatewayDefaultSite *SubResource `json:"gatewayDefaultSite,omitempty"` + GatewayType *VirtualNetworkGatewayType `json:"gatewayType,omitempty"` + IPConfigurations *[]VirtualNetworkGatewayIPConfiguration `json:"ipConfigurations,omitempty"` + InboundDnsForwardingEndpoint *string `json:"inboundDnsForwardingEndpoint,omitempty"` + NatRules *[]VirtualNetworkGatewayNatRule `json:"natRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Sku *VirtualNetworkGatewaySku `json:"sku,omitempty"` + VNetExtendedLocationResourceId *string `json:"vNetExtendedLocationResourceId,omitempty"` + VirtualNetworkGatewayPolicyGroups *[]VirtualNetworkGatewayPolicyGroup `json:"virtualNetworkGatewayPolicyGroups,omitempty"` + VpnClientConfiguration *VpnClientConfiguration `json:"vpnClientConfiguration,omitempty"` + VpnGatewayGeneration *VpnGatewayGeneration `json:"vpnGatewayGeneration,omitempty"` + VpnType *VpnType `json:"vpnType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewaysku.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewaysku.go new file mode 100644 index 00000000000..b96386d7651 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_virtualnetworkgatewaysku.go @@ -0,0 +1,10 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewaySku struct { + Capacity *int64 `json:"capacity,omitempty"` + Name *VirtualNetworkGatewaySkuName `json:"name,omitempty"` + Tier *VirtualNetworkGatewaySkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vngclientconnectionconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vngclientconnectionconfiguration.go new file mode 100644 index 00000000000..44c61c02167 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vngclientconnectionconfiguration.go @@ -0,0 +1,11 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VngClientConnectionConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VngClientConnectionConfigurationProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vngclientconnectionconfigurationproperties.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vngclientconnectionconfigurationproperties.go new file mode 100644 index 00000000000..8bf37c29734 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vngclientconnectionconfigurationproperties.go @@ -0,0 +1,10 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VngClientConnectionConfigurationProperties struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualNetworkGatewayPolicyGroups []SubResource `json:"virtualNetworkGatewayPolicyGroups"` + VpnClientAddressPool AddressSpace `json:"vpnClientAddressPool"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientconfiguration.go new file mode 100644 index 00000000000..947582e3da9 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientconfiguration.go @@ -0,0 +1,20 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnClientConfiguration struct { + AadAudience *string `json:"aadAudience,omitempty"` + AadIssuer *string `json:"aadIssuer,omitempty"` + AadTenant *string `json:"aadTenant,omitempty"` + RadiusServerAddress *string `json:"radiusServerAddress,omitempty"` + RadiusServerSecret *string `json:"radiusServerSecret,omitempty"` + RadiusServers *[]RadiusServer `json:"radiusServers,omitempty"` + VngClientConnectionConfigurations *[]VngClientConnectionConfiguration `json:"vngClientConnectionConfigurations,omitempty"` + VpnAuthenticationTypes *[]VpnAuthenticationType `json:"vpnAuthenticationTypes,omitempty"` + VpnClientAddressPool *AddressSpace `json:"vpnClientAddressPool,omitempty"` + VpnClientIPsecPolicies *[]IPsecPolicy `json:"vpnClientIpsecPolicies,omitempty"` + VpnClientProtocols *[]VpnClientProtocol `json:"vpnClientProtocols,omitempty"` + VpnClientRevokedCertificates *[]VpnClientRevokedCertificate `json:"vpnClientRevokedCertificates,omitempty"` + VpnClientRootCertificates *[]VpnClientRootCertificate `json:"vpnClientRootCertificates,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientconnectionhealthdetail.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientconnectionhealthdetail.go new file mode 100644 index 00000000000..c1bd5bd01b8 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientconnectionhealthdetail.go @@ -0,0 +1,19 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnClientConnectionHealthDetail struct { + EgressBytesTransferred *int64 `json:"egressBytesTransferred,omitempty"` + EgressPacketsTransferred *int64 `json:"egressPacketsTransferred,omitempty"` + IngressBytesTransferred *int64 `json:"ingressBytesTransferred,omitempty"` + IngressPacketsTransferred *int64 `json:"ingressPacketsTransferred,omitempty"` + MaxBandwidth *int64 `json:"maxBandwidth,omitempty"` + MaxPacketsPerSecond *int64 `json:"maxPacketsPerSecond,omitempty"` + PrivateIPAddress *string `json:"privateIpAddress,omitempty"` + PublicIPAddress *string `json:"publicIpAddress,omitempty"` + VpnConnectionDuration *int64 `json:"vpnConnectionDuration,omitempty"` + VpnConnectionId *string `json:"vpnConnectionId,omitempty"` + VpnConnectionTime *string `json:"vpnConnectionTime,omitempty"` + VpnUserName *string `json:"vpnUserName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientconnectionhealthdetaillistresult.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientconnectionhealthdetaillistresult.go new file mode 100644 index 00000000000..d0c7c1a3f22 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientconnectionhealthdetaillistresult.go @@ -0,0 +1,8 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnClientConnectionHealthDetailListResult struct { + Value *[]VpnClientConnectionHealthDetail `json:"value,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientipsecparameters.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientipsecparameters.go new file mode 100644 index 00000000000..d972e45d72e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientipsecparameters.go @@ -0,0 +1,15 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnClientIPsecParameters struct { + DhGroup DhGroup `json:"dhGroup"` + IPsecEncryption IPsecEncryption `json:"ipsecEncryption"` + IPsecIntegrity IPsecIntegrity `json:"ipsecIntegrity"` + IkeEncryption IkeEncryption `json:"ikeEncryption"` + IkeIntegrity IkeIntegrity `json:"ikeIntegrity"` + PfsGroup PfsGroup `json:"pfsGroup"` + SaDataSizeKilobytes int64 `json:"saDataSizeKilobytes"` + SaLifeTimeSeconds int64 `json:"saLifeTimeSeconds"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientparameters.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientparameters.go new file mode 100644 index 00000000000..dbfa84e1c67 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientparameters.go @@ -0,0 +1,11 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnClientParameters struct { + AuthenticationMethod *AuthenticationMethod `json:"authenticationMethod,omitempty"` + ClientRootCertificates *[]string `json:"clientRootCertificates,omitempty"` + ProcessorArchitecture *ProcessorArchitecture `json:"processorArchitecture,omitempty"` + RadiusServerAuthCertificate *string `json:"radiusServerAuthCertificate,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientrevokedcertificate.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientrevokedcertificate.go new file mode 100644 index 00000000000..2151e3bf02b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientrevokedcertificate.go @@ -0,0 +1,11 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnClientRevokedCertificate struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VpnClientRevokedCertificatePropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientrevokedcertificatepropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientrevokedcertificatepropertiesformat.go new file mode 100644 index 00000000000..9a5fb25ca9b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientrevokedcertificatepropertiesformat.go @@ -0,0 +1,9 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnClientRevokedCertificatePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Thumbprint *string `json:"thumbprint,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientrootcertificate.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientrootcertificate.go new file mode 100644 index 00000000000..db4850a95ff --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientrootcertificate.go @@ -0,0 +1,11 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnClientRootCertificate struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties VpnClientRootCertificatePropertiesFormat `json:"properties"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientrootcertificatepropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientrootcertificatepropertiesformat.go new file mode 100644 index 00000000000..4a44a811b2a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnclientrootcertificatepropertiesformat.go @@ -0,0 +1,9 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnClientRootCertificatePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicCertData string `json:"publicCertData"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpndevicescriptparameters.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpndevicescriptparameters.go new file mode 100644 index 00000000000..61ec4f46b54 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpndevicescriptparameters.go @@ -0,0 +1,10 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnDeviceScriptParameters struct { + DeviceFamily *string `json:"deviceFamily,omitempty"` + FirmwareVersion *string `json:"firmwareVersion,omitempty"` + Vendor *string `json:"vendor,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnnatrulemapping.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnnatrulemapping.go new file mode 100644 index 00000000000..d903f625a58 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnnatrulemapping.go @@ -0,0 +1,9 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnNatRuleMapping struct { + AddressSpace *string `json:"addressSpace,omitempty"` + PortRange *string `json:"portRange,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnpacketcapturestartparameters.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnpacketcapturestartparameters.go new file mode 100644 index 00000000000..014f699e436 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnpacketcapturestartparameters.go @@ -0,0 +1,8 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnPacketCaptureStartParameters struct { + FilterData *string `json:"filterData,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnpacketcapturestopparameters.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnpacketcapturestopparameters.go new file mode 100644 index 00000000000..091426a3451 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/model_vpnpacketcapturestopparameters.go @@ -0,0 +1,8 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnPacketCaptureStopParameters struct { + SasUrl *string `json:"sasUrl,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/predicates.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/predicates.go new file mode 100644 index 00000000000..e03cad8f7b6 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/predicates.go @@ -0,0 +1,98 @@ +package virtualnetworkgateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkGatewayOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p VirtualNetworkGatewayOperationPredicate) Matches(input VirtualNetworkGateway) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type VirtualNetworkGatewayConnectionListEntityOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p VirtualNetworkGatewayConnectionListEntityOperationPredicate) Matches(input VirtualNetworkGatewayConnectionListEntity) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type VirtualNetworkGatewayNatRuleOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p VirtualNetworkGatewayNatRuleOperationPredicate) Matches(input VirtualNetworkGatewayNatRule) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkgateways/version.go b/resource-manager/network/2024-01-01/virtualnetworkgateways/version.go new file mode 100644 index 00000000000..4d95b26b82e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkgateways/version.go @@ -0,0 +1,12 @@ +package virtualnetworkgateways + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/virtualnetworkgateways/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkpeerings/README.md b/resource-manager/network/2024-01-01/virtualnetworkpeerings/README.md new file mode 100644 index 00000000000..9427eaa4b7e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkpeerings/README.md @@ -0,0 +1,83 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualnetworkpeerings` Documentation + +The `virtualnetworkpeerings` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualnetworkpeerings" +``` + + +### Client Initialization + +```go +client := virtualnetworkpeerings.NewVirtualNetworkPeeringsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `VirtualNetworkPeeringsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := virtualnetworkpeerings.NewVirtualNetworkPeeringID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkValue", "virtualNetworkPeeringValue") + +payload := virtualnetworkpeerings.VirtualNetworkPeering{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload, virtualnetworkpeerings.DefaultCreateOrUpdateOperationOptions()); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkPeeringsClient.Delete` + +```go +ctx := context.TODO() +id := virtualnetworkpeerings.NewVirtualNetworkPeeringID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkValue", "virtualNetworkPeeringValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkPeeringsClient.Get` + +```go +ctx := context.TODO() +id := virtualnetworkpeerings.NewVirtualNetworkPeeringID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkValue", "virtualNetworkPeeringValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualNetworkPeeringsClient.List` + +```go +ctx := context.TODO() +id := commonids.NewVirtualNetworkID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkValue") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/virtualnetworkpeerings/client.go b/resource-manager/network/2024-01-01/virtualnetworkpeerings/client.go new file mode 100644 index 00000000000..8eb7455514c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkpeerings/client.go @@ -0,0 +1,26 @@ +package virtualnetworkpeerings + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkPeeringsClient struct { + Client *resourcemanager.Client +} + +func NewVirtualNetworkPeeringsClientWithBaseURI(sdkApi sdkEnv.Api) (*VirtualNetworkPeeringsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "virtualnetworkpeerings", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating VirtualNetworkPeeringsClient: %+v", err) + } + + return &VirtualNetworkPeeringsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkpeerings/constants.go b/resource-manager/network/2024-01-01/virtualnetworkpeerings/constants.go new file mode 100644 index 00000000000..0cb41da70fc --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkpeerings/constants.go @@ -0,0 +1,227 @@ +package virtualnetworkpeerings + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type SyncRemoteAddressSpace string + +const ( + SyncRemoteAddressSpaceTrue SyncRemoteAddressSpace = "true" +) + +func PossibleValuesForSyncRemoteAddressSpace() []string { + return []string{ + string(SyncRemoteAddressSpaceTrue), + } +} + +func (s *SyncRemoteAddressSpace) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSyncRemoteAddressSpace(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSyncRemoteAddressSpace(input string) (*SyncRemoteAddressSpace, error) { + vals := map[string]SyncRemoteAddressSpace{ + "true": SyncRemoteAddressSpaceTrue, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SyncRemoteAddressSpace(input) + return &out, nil +} + +type VirtualNetworkEncryptionEnforcement string + +const ( + VirtualNetworkEncryptionEnforcementAllowUnencrypted VirtualNetworkEncryptionEnforcement = "AllowUnencrypted" + VirtualNetworkEncryptionEnforcementDropUnencrypted VirtualNetworkEncryptionEnforcement = "DropUnencrypted" +) + +func PossibleValuesForVirtualNetworkEncryptionEnforcement() []string { + return []string{ + string(VirtualNetworkEncryptionEnforcementAllowUnencrypted), + string(VirtualNetworkEncryptionEnforcementDropUnencrypted), + } +} + +func (s *VirtualNetworkEncryptionEnforcement) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkEncryptionEnforcement(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkEncryptionEnforcement(input string) (*VirtualNetworkEncryptionEnforcement, error) { + vals := map[string]VirtualNetworkEncryptionEnforcement{ + "allowunencrypted": VirtualNetworkEncryptionEnforcementAllowUnencrypted, + "dropunencrypted": VirtualNetworkEncryptionEnforcementDropUnencrypted, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkEncryptionEnforcement(input) + return &out, nil +} + +type VirtualNetworkPeeringLevel string + +const ( + VirtualNetworkPeeringLevelFullyInSync VirtualNetworkPeeringLevel = "FullyInSync" + VirtualNetworkPeeringLevelLocalAndRemoteNotInSync VirtualNetworkPeeringLevel = "LocalAndRemoteNotInSync" + VirtualNetworkPeeringLevelLocalNotInSync VirtualNetworkPeeringLevel = "LocalNotInSync" + VirtualNetworkPeeringLevelRemoteNotInSync VirtualNetworkPeeringLevel = "RemoteNotInSync" +) + +func PossibleValuesForVirtualNetworkPeeringLevel() []string { + return []string{ + string(VirtualNetworkPeeringLevelFullyInSync), + string(VirtualNetworkPeeringLevelLocalAndRemoteNotInSync), + string(VirtualNetworkPeeringLevelLocalNotInSync), + string(VirtualNetworkPeeringLevelRemoteNotInSync), + } +} + +func (s *VirtualNetworkPeeringLevel) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPeeringLevel(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPeeringLevel(input string) (*VirtualNetworkPeeringLevel, error) { + vals := map[string]VirtualNetworkPeeringLevel{ + "fullyinsync": VirtualNetworkPeeringLevelFullyInSync, + "localandremotenotinsync": VirtualNetworkPeeringLevelLocalAndRemoteNotInSync, + "localnotinsync": VirtualNetworkPeeringLevelLocalNotInSync, + "remotenotinsync": VirtualNetworkPeeringLevelRemoteNotInSync, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPeeringLevel(input) + return &out, nil +} + +type VirtualNetworkPeeringState string + +const ( + VirtualNetworkPeeringStateConnected VirtualNetworkPeeringState = "Connected" + VirtualNetworkPeeringStateDisconnected VirtualNetworkPeeringState = "Disconnected" + VirtualNetworkPeeringStateInitiated VirtualNetworkPeeringState = "Initiated" +) + +func PossibleValuesForVirtualNetworkPeeringState() []string { + return []string{ + string(VirtualNetworkPeeringStateConnected), + string(VirtualNetworkPeeringStateDisconnected), + string(VirtualNetworkPeeringStateInitiated), + } +} + +func (s *VirtualNetworkPeeringState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPeeringState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPeeringState(input string) (*VirtualNetworkPeeringState, error) { + vals := map[string]VirtualNetworkPeeringState{ + "connected": VirtualNetworkPeeringStateConnected, + "disconnected": VirtualNetworkPeeringStateDisconnected, + "initiated": VirtualNetworkPeeringStateInitiated, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPeeringState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkpeerings/id_virtualnetworkpeering.go b/resource-manager/network/2024-01-01/virtualnetworkpeerings/id_virtualnetworkpeering.go new file mode 100644 index 00000000000..a72d63bb3a5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkpeerings/id_virtualnetworkpeering.go @@ -0,0 +1,139 @@ +package virtualnetworkpeerings + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&VirtualNetworkPeeringId{}) +} + +var _ resourceids.ResourceId = &VirtualNetworkPeeringId{} + +// VirtualNetworkPeeringId is a struct representing the Resource ID for a Virtual Network Peering +type VirtualNetworkPeeringId struct { + SubscriptionId string + ResourceGroupName string + VirtualNetworkName string + VirtualNetworkPeeringName string +} + +// NewVirtualNetworkPeeringID returns a new VirtualNetworkPeeringId struct +func NewVirtualNetworkPeeringID(subscriptionId string, resourceGroupName string, virtualNetworkName string, virtualNetworkPeeringName string) VirtualNetworkPeeringId { + return VirtualNetworkPeeringId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VirtualNetworkName: virtualNetworkName, + VirtualNetworkPeeringName: virtualNetworkPeeringName, + } +} + +// ParseVirtualNetworkPeeringID parses 'input' into a VirtualNetworkPeeringId +func ParseVirtualNetworkPeeringID(input string) (*VirtualNetworkPeeringId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualNetworkPeeringId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualNetworkPeeringId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseVirtualNetworkPeeringIDInsensitively parses 'input' case-insensitively into a VirtualNetworkPeeringId +// note: this method should only be used for API response data and not user input +func ParseVirtualNetworkPeeringIDInsensitively(input string) (*VirtualNetworkPeeringId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualNetworkPeeringId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualNetworkPeeringId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *VirtualNetworkPeeringId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VirtualNetworkName, ok = input.Parsed["virtualNetworkName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "virtualNetworkName", input) + } + + if id.VirtualNetworkPeeringName, ok = input.Parsed["virtualNetworkPeeringName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "virtualNetworkPeeringName", input) + } + + return nil +} + +// ValidateVirtualNetworkPeeringID checks that 'input' can be parsed as a Virtual Network Peering ID +func ValidateVirtualNetworkPeeringID(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 := ParseVirtualNetworkPeeringID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Virtual Network Peering ID +func (id VirtualNetworkPeeringId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/virtualNetworks/%s/virtualNetworkPeerings/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VirtualNetworkName, id.VirtualNetworkPeeringName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Virtual Network Peering ID +func (id VirtualNetworkPeeringId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVirtualNetworks", "virtualNetworks", "virtualNetworks"), + resourceids.UserSpecifiedSegment("virtualNetworkName", "virtualNetworkValue"), + resourceids.StaticSegment("staticVirtualNetworkPeerings", "virtualNetworkPeerings", "virtualNetworkPeerings"), + resourceids.UserSpecifiedSegment("virtualNetworkPeeringName", "virtualNetworkPeeringValue"), + } +} + +// String returns a human-readable description of this Virtual Network Peering ID +func (id VirtualNetworkPeeringId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Virtual Network Name: %q", id.VirtualNetworkName), + fmt.Sprintf("Virtual Network Peering Name: %q", id.VirtualNetworkPeeringName), + } + return fmt.Sprintf("Virtual Network Peering (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkpeerings/id_virtualnetworkpeering_test.go b/resource-manager/network/2024-01-01/virtualnetworkpeerings/id_virtualnetworkpeering_test.go new file mode 100644 index 00000000000..9580241575f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkpeerings/id_virtualnetworkpeering_test.go @@ -0,0 +1,327 @@ +package virtualnetworkpeerings + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &VirtualNetworkPeeringId{} + +func TestNewVirtualNetworkPeeringID(t *testing.T) { + id := NewVirtualNetworkPeeringID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkValue", "virtualNetworkPeeringValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VirtualNetworkName != "virtualNetworkValue" { + t.Fatalf("Expected %q but got %q for Segment 'VirtualNetworkName'", id.VirtualNetworkName, "virtualNetworkValue") + } + + if id.VirtualNetworkPeeringName != "virtualNetworkPeeringValue" { + t.Fatalf("Expected %q but got %q for Segment 'VirtualNetworkPeeringName'", id.VirtualNetworkPeeringName, "virtualNetworkPeeringValue") + } +} + +func TestFormatVirtualNetworkPeeringID(t *testing.T) { + actual := NewVirtualNetworkPeeringID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkValue", "virtualNetworkPeeringValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworks/virtualNetworkValue/virtualNetworkPeerings/virtualNetworkPeeringValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseVirtualNetworkPeeringID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualNetworkPeeringId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworks", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworks/virtualNetworkValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworks/virtualNetworkValue/virtualNetworkPeerings", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworks/virtualNetworkValue/virtualNetworkPeerings/virtualNetworkPeeringValue", + Expected: &VirtualNetworkPeeringId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualNetworkName: "virtualNetworkValue", + VirtualNetworkPeeringName: "virtualNetworkPeeringValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworks/virtualNetworkValue/virtualNetworkPeerings/virtualNetworkPeeringValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualNetworkPeeringID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualNetworkName != v.Expected.VirtualNetworkName { + t.Fatalf("Expected %q but got %q for VirtualNetworkName", v.Expected.VirtualNetworkName, actual.VirtualNetworkName) + } + + if actual.VirtualNetworkPeeringName != v.Expected.VirtualNetworkPeeringName { + t.Fatalf("Expected %q but got %q for VirtualNetworkPeeringName", v.Expected.VirtualNetworkPeeringName, actual.VirtualNetworkPeeringName) + } + + } +} + +func TestParseVirtualNetworkPeeringIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualNetworkPeeringId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworks", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlNeTwOrKs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworks/virtualNetworkValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlNeTwOrKs/vIrTuAlNeTwOrKvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworks/virtualNetworkValue/virtualNetworkPeerings", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlNeTwOrKs/vIrTuAlNeTwOrKvAlUe/vIrTuAlNeTwOrKpEeRiNgS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworks/virtualNetworkValue/virtualNetworkPeerings/virtualNetworkPeeringValue", + Expected: &VirtualNetworkPeeringId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualNetworkName: "virtualNetworkValue", + VirtualNetworkPeeringName: "virtualNetworkPeeringValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworks/virtualNetworkValue/virtualNetworkPeerings/virtualNetworkPeeringValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlNeTwOrKs/vIrTuAlNeTwOrKvAlUe/vIrTuAlNeTwOrKpEeRiNgS/vIrTuAlNeTwOrKpEeRiNgVaLuE", + Expected: &VirtualNetworkPeeringId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VirtualNetworkName: "vIrTuAlNeTwOrKvAlUe", + VirtualNetworkPeeringName: "vIrTuAlNeTwOrKpEeRiNgVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlNeTwOrKs/vIrTuAlNeTwOrKvAlUe/vIrTuAlNeTwOrKpEeRiNgS/vIrTuAlNeTwOrKpEeRiNgVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualNetworkPeeringIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualNetworkName != v.Expected.VirtualNetworkName { + t.Fatalf("Expected %q but got %q for VirtualNetworkName", v.Expected.VirtualNetworkName, actual.VirtualNetworkName) + } + + if actual.VirtualNetworkPeeringName != v.Expected.VirtualNetworkPeeringName { + t.Fatalf("Expected %q but got %q for VirtualNetworkPeeringName", v.Expected.VirtualNetworkPeeringName, actual.VirtualNetworkPeeringName) + } + + } +} + +func TestSegmentsForVirtualNetworkPeeringId(t *testing.T) { + segments := VirtualNetworkPeeringId{}.Segments() + if len(segments) == 0 { + t.Fatalf("VirtualNetworkPeeringId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkpeerings/method_createorupdate.go b/resource-manager/network/2024-01-01/virtualnetworkpeerings/method_createorupdate.go new file mode 100644 index 00000000000..e7fcc91436e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkpeerings/method_createorupdate.go @@ -0,0 +1,103 @@ +package virtualnetworkpeerings + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VirtualNetworkPeering +} + +type CreateOrUpdateOperationOptions struct { + SyncRemoteAddressSpace *SyncRemoteAddressSpace +} + +func DefaultCreateOrUpdateOperationOptions() CreateOrUpdateOperationOptions { + return CreateOrUpdateOperationOptions{} +} + +func (o CreateOrUpdateOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o CreateOrUpdateOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o CreateOrUpdateOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.SyncRemoteAddressSpace != nil { + out.Append("syncRemoteAddressSpace", fmt.Sprintf("%v", *o.SyncRemoteAddressSpace)) + } + return &out +} + +// CreateOrUpdate ... +func (c VirtualNetworkPeeringsClient) CreateOrUpdate(ctx context.Context, id VirtualNetworkPeeringId, input VirtualNetworkPeering, options CreateOrUpdateOperationOptions) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c VirtualNetworkPeeringsClient) CreateOrUpdateThenPoll(ctx context.Context, id VirtualNetworkPeeringId, input VirtualNetworkPeering, options CreateOrUpdateOperationOptions) error { + result, err := c.CreateOrUpdate(ctx, id, input, options) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkpeerings/method_delete.go b/resource-manager/network/2024-01-01/virtualnetworkpeerings/method_delete.go new file mode 100644 index 00000000000..0d0ded252a4 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkpeerings/method_delete.go @@ -0,0 +1,71 @@ +package virtualnetworkpeerings + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c VirtualNetworkPeeringsClient) Delete(ctx context.Context, id VirtualNetworkPeeringId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c VirtualNetworkPeeringsClient) DeleteThenPoll(ctx context.Context, id VirtualNetworkPeeringId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkpeerings/method_get.go b/resource-manager/network/2024-01-01/virtualnetworkpeerings/method_get.go new file mode 100644 index 00000000000..81671aa625e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkpeerings/method_get.go @@ -0,0 +1,54 @@ +package virtualnetworkpeerings + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VirtualNetworkPeering +} + +// Get ... +func (c VirtualNetworkPeeringsClient) Get(ctx context.Context, id VirtualNetworkPeeringId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VirtualNetworkPeering + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkpeerings/method_list.go b/resource-manager/network/2024-01-01/virtualnetworkpeerings/method_list.go new file mode 100644 index 00000000000..614ef8d907f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkpeerings/method_list.go @@ -0,0 +1,93 @@ +package virtualnetworkpeerings + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VirtualNetworkPeering +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []VirtualNetworkPeering +} + +// List ... +func (c VirtualNetworkPeeringsClient) List(ctx context.Context, id commonids.VirtualNetworkId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/virtualNetworkPeerings", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VirtualNetworkPeering `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c VirtualNetworkPeeringsClient) ListComplete(ctx context.Context, id commonids.VirtualNetworkId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, VirtualNetworkPeeringOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualNetworkPeeringsClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.VirtualNetworkId, predicate VirtualNetworkPeeringOperationPredicate) (result ListCompleteResult, err error) { + items := make([]VirtualNetworkPeering, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkpeerings/model_addressspace.go b/resource-manager/network/2024-01-01/virtualnetworkpeerings/model_addressspace.go new file mode 100644 index 00000000000..dadfe5be0b5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkpeerings/model_addressspace.go @@ -0,0 +1,8 @@ +package virtualnetworkpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AddressSpace struct { + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkpeerings/model_subresource.go b/resource-manager/network/2024-01-01/virtualnetworkpeerings/model_subresource.go new file mode 100644 index 00000000000..07cc63aadbb --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkpeerings/model_subresource.go @@ -0,0 +1,8 @@ +package virtualnetworkpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkpeerings/model_virtualnetworkbgpcommunities.go b/resource-manager/network/2024-01-01/virtualnetworkpeerings/model_virtualnetworkbgpcommunities.go new file mode 100644 index 00000000000..a1302f81779 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkpeerings/model_virtualnetworkbgpcommunities.go @@ -0,0 +1,9 @@ +package virtualnetworkpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkBgpCommunities struct { + RegionalCommunity *string `json:"regionalCommunity,omitempty"` + VirtualNetworkCommunity string `json:"virtualNetworkCommunity"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkpeerings/model_virtualnetworkencryption.go b/resource-manager/network/2024-01-01/virtualnetworkpeerings/model_virtualnetworkencryption.go new file mode 100644 index 00000000000..82989ac5992 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkpeerings/model_virtualnetworkencryption.go @@ -0,0 +1,9 @@ +package virtualnetworkpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkEncryption struct { + Enabled bool `json:"enabled"` + Enforcement *VirtualNetworkEncryptionEnforcement `json:"enforcement,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkpeerings/model_virtualnetworkpeering.go b/resource-manager/network/2024-01-01/virtualnetworkpeerings/model_virtualnetworkpeering.go new file mode 100644 index 00000000000..4b0c5a50abf --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkpeerings/model_virtualnetworkpeering.go @@ -0,0 +1,12 @@ +package virtualnetworkpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkPeering struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkPeeringPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkpeerings/model_virtualnetworkpeeringpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworkpeerings/model_virtualnetworkpeeringpropertiesformat.go new file mode 100644 index 00000000000..4081538e08f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkpeerings/model_virtualnetworkpeeringpropertiesformat.go @@ -0,0 +1,27 @@ +package virtualnetworkpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkPeeringPropertiesFormat struct { + AllowForwardedTraffic *bool `json:"allowForwardedTraffic,omitempty"` + AllowGatewayTransit *bool `json:"allowGatewayTransit,omitempty"` + AllowVirtualNetworkAccess *bool `json:"allowVirtualNetworkAccess,omitempty"` + DoNotVerifyRemoteGateways *bool `json:"doNotVerifyRemoteGateways,omitempty"` + EnableOnlyIPv6Peering *bool `json:"enableOnlyIPv6Peering,omitempty"` + LocalAddressSpace *AddressSpace `json:"localAddressSpace,omitempty"` + LocalSubnetNames *[]string `json:"localSubnetNames,omitempty"` + LocalVirtualNetworkAddressSpace *AddressSpace `json:"localVirtualNetworkAddressSpace,omitempty"` + PeerCompleteVnets *bool `json:"peerCompleteVnets,omitempty"` + PeeringState *VirtualNetworkPeeringState `json:"peeringState,omitempty"` + PeeringSyncLevel *VirtualNetworkPeeringLevel `json:"peeringSyncLevel,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RemoteAddressSpace *AddressSpace `json:"remoteAddressSpace,omitempty"` + RemoteBgpCommunities *VirtualNetworkBgpCommunities `json:"remoteBgpCommunities,omitempty"` + RemoteSubnetNames *[]string `json:"remoteSubnetNames,omitempty"` + RemoteVirtualNetwork *SubResource `json:"remoteVirtualNetwork,omitempty"` + RemoteVirtualNetworkAddressSpace *AddressSpace `json:"remoteVirtualNetworkAddressSpace,omitempty"` + RemoteVirtualNetworkEncryption *VirtualNetworkEncryption `json:"remoteVirtualNetworkEncryption,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + UseRemoteGateways *bool `json:"useRemoteGateways,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkpeerings/predicates.go b/resource-manager/network/2024-01-01/virtualnetworkpeerings/predicates.go new file mode 100644 index 00000000000..a945839e0b2 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkpeerings/predicates.go @@ -0,0 +1,32 @@ +package virtualnetworkpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkPeeringOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p VirtualNetworkPeeringOperationPredicate) Matches(input VirtualNetworkPeering) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/virtualnetworkpeerings/version.go b/resource-manager/network/2024-01-01/virtualnetworkpeerings/version.go new file mode 100644 index 00000000000..24dc1d501ad --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworkpeerings/version.go @@ -0,0 +1,12 @@ +package virtualnetworkpeerings + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/virtualnetworkpeerings/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/README.md b/resource-manager/network/2024-01-01/virtualnetworks/README.md new file mode 100644 index 00000000000..45c8c0a7c59 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/README.md @@ -0,0 +1,239 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualnetworks` Documentation + +The `virtualnetworks` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualnetworks" +``` + + +### Client Initialization + +```go +client := virtualnetworks.NewVirtualNetworksClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `VirtualNetworksClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := commonids.NewVirtualNetworkID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkValue") + +payload := virtualnetworks.VirtualNetwork{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworksClient.Delete` + +```go +ctx := context.TODO() +id := commonids.NewVirtualNetworkID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworksClient.Get` + +```go +ctx := context.TODO() +id := commonids.NewVirtualNetworkID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkValue") + +read, err := client.Get(ctx, id, virtualnetworks.DefaultGetOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualNetworksClient.List` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualNetworksClient.ListAll` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.ListAll(ctx, id)` can be used to do batched pagination +items, err := client.ListAllComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualNetworksClient.ResourceNavigationLinksList` + +```go +ctx := context.TODO() +id := commonids.NewSubnetID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkValue", "subnetValue") + +// alternatively `client.ResourceNavigationLinksList(ctx, id)` can be used to do batched pagination +items, err := client.ResourceNavigationLinksListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualNetworksClient.ServiceAssociationLinksList` + +```go +ctx := context.TODO() +id := commonids.NewSubnetID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkValue", "subnetValue") + +// alternatively `client.ServiceAssociationLinksList(ctx, id)` can be used to do batched pagination +items, err := client.ServiceAssociationLinksListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualNetworksClient.SubnetsPrepareNetworkPolicies` + +```go +ctx := context.TODO() +id := commonids.NewSubnetID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkValue", "subnetValue") + +payload := virtualnetworks.PrepareNetworkPoliciesRequest{ + // ... +} + + +if err := client.SubnetsPrepareNetworkPoliciesThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworksClient.SubnetsUnprepareNetworkPolicies` + +```go +ctx := context.TODO() +id := commonids.NewSubnetID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkValue", "subnetValue") + +payload := virtualnetworks.UnprepareNetworkPoliciesRequest{ + // ... +} + + +if err := client.SubnetsUnprepareNetworkPoliciesThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworksClient.UpdateTags` + +```go +ctx := context.TODO() +id := commonids.NewVirtualNetworkID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkValue") + +payload := virtualnetworks.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualNetworksClient.VirtualNetworksCheckIPAddressAvailability` + +```go +ctx := context.TODO() +id := commonids.NewVirtualNetworkID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkValue") + +read, err := client.VirtualNetworksCheckIPAddressAvailability(ctx, id, virtualnetworks.DefaultVirtualNetworksCheckIPAddressAvailabilityOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualNetworksClient.VirtualNetworksListDdosProtectionStatus` + +```go +ctx := context.TODO() +id := commonids.NewVirtualNetworkID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkValue") + +// alternatively `client.VirtualNetworksListDdosProtectionStatus(ctx, id, virtualnetworks.DefaultVirtualNetworksListDdosProtectionStatusOperationOptions())` can be used to do batched pagination +items, err := client.VirtualNetworksListDdosProtectionStatusComplete(ctx, id, virtualnetworks.DefaultVirtualNetworksListDdosProtectionStatusOperationOptions()) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualNetworksClient.VirtualNetworksListUsage` + +```go +ctx := context.TODO() +id := commonids.NewVirtualNetworkID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkValue") + +// alternatively `client.VirtualNetworksListUsage(ctx, id)` can be used to do batched pagination +items, err := client.VirtualNetworksListUsageComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/virtualnetworks/client.go b/resource-manager/network/2024-01-01/virtualnetworks/client.go new file mode 100644 index 00000000000..15c346279f6 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/client.go @@ -0,0 +1,26 @@ +package virtualnetworks + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworksClient struct { + Client *resourcemanager.Client +} + +func NewVirtualNetworksClientWithBaseURI(sdkApi sdkEnv.Api) (*VirtualNetworksClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "virtualnetworks", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating VirtualNetworksClient: %+v", err) + } + + return &VirtualNetworksClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/constants.go b/resource-manager/network/2024-01-01/virtualnetworks/constants.go new file mode 100644 index 00000000000..1cb41676c8b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/constants.go @@ -0,0 +1,1371 @@ +package virtualnetworks + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettingsProtectionMode string + +const ( + DdosSettingsProtectionModeDisabled DdosSettingsProtectionMode = "Disabled" + DdosSettingsProtectionModeEnabled DdosSettingsProtectionMode = "Enabled" + DdosSettingsProtectionModeVirtualNetworkInherited DdosSettingsProtectionMode = "VirtualNetworkInherited" +) + +func PossibleValuesForDdosSettingsProtectionMode() []string { + return []string{ + string(DdosSettingsProtectionModeDisabled), + string(DdosSettingsProtectionModeEnabled), + string(DdosSettingsProtectionModeVirtualNetworkInherited), + } +} + +func (s *DdosSettingsProtectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDdosSettingsProtectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDdosSettingsProtectionMode(input string) (*DdosSettingsProtectionMode, error) { + vals := map[string]DdosSettingsProtectionMode{ + "disabled": DdosSettingsProtectionModeDisabled, + "enabled": DdosSettingsProtectionModeEnabled, + "virtualnetworkinherited": DdosSettingsProtectionModeVirtualNetworkInherited, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DdosSettingsProtectionMode(input) + return &out, nil +} + +type DeleteOptions string + +const ( + DeleteOptionsDelete DeleteOptions = "Delete" + DeleteOptionsDetach DeleteOptions = "Detach" +) + +func PossibleValuesForDeleteOptions() []string { + return []string{ + string(DeleteOptionsDelete), + string(DeleteOptionsDetach), + } +} + +func (s *DeleteOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteOptions(input string) (*DeleteOptions, error) { + vals := map[string]DeleteOptions{ + "delete": DeleteOptionsDelete, + "detach": DeleteOptionsDetach, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteOptions(input) + return &out, nil +} + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelInterfaceType string + +const ( + GatewayLoadBalancerTunnelInterfaceTypeExternal GatewayLoadBalancerTunnelInterfaceType = "External" + GatewayLoadBalancerTunnelInterfaceTypeInternal GatewayLoadBalancerTunnelInterfaceType = "Internal" + GatewayLoadBalancerTunnelInterfaceTypeNone GatewayLoadBalancerTunnelInterfaceType = "None" +) + +func PossibleValuesForGatewayLoadBalancerTunnelInterfaceType() []string { + return []string{ + string(GatewayLoadBalancerTunnelInterfaceTypeExternal), + string(GatewayLoadBalancerTunnelInterfaceTypeInternal), + string(GatewayLoadBalancerTunnelInterfaceTypeNone), + } +} + +func (s *GatewayLoadBalancerTunnelInterfaceType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelInterfaceType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelInterfaceType(input string) (*GatewayLoadBalancerTunnelInterfaceType, error) { + vals := map[string]GatewayLoadBalancerTunnelInterfaceType{ + "external": GatewayLoadBalancerTunnelInterfaceTypeExternal, + "internal": GatewayLoadBalancerTunnelInterfaceTypeInternal, + "none": GatewayLoadBalancerTunnelInterfaceTypeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelInterfaceType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelProtocol string + +const ( + GatewayLoadBalancerTunnelProtocolNative GatewayLoadBalancerTunnelProtocol = "Native" + GatewayLoadBalancerTunnelProtocolNone GatewayLoadBalancerTunnelProtocol = "None" + GatewayLoadBalancerTunnelProtocolVXLAN GatewayLoadBalancerTunnelProtocol = "VXLAN" +) + +func PossibleValuesForGatewayLoadBalancerTunnelProtocol() []string { + return []string{ + string(GatewayLoadBalancerTunnelProtocolNative), + string(GatewayLoadBalancerTunnelProtocolNone), + string(GatewayLoadBalancerTunnelProtocolVXLAN), + } +} + +func (s *GatewayLoadBalancerTunnelProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelProtocol(input string) (*GatewayLoadBalancerTunnelProtocol, error) { + vals := map[string]GatewayLoadBalancerTunnelProtocol{ + "native": GatewayLoadBalancerTunnelProtocolNative, + "none": GatewayLoadBalancerTunnelProtocolNone, + "vxlan": GatewayLoadBalancerTunnelProtocolVXLAN, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelProtocol(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} + +type IsWorkloadProtected string + +const ( + IsWorkloadProtectedFalse IsWorkloadProtected = "False" + IsWorkloadProtectedTrue IsWorkloadProtected = "True" +) + +func PossibleValuesForIsWorkloadProtected() []string { + return []string{ + string(IsWorkloadProtectedFalse), + string(IsWorkloadProtectedTrue), + } +} + +func (s *IsWorkloadProtected) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIsWorkloadProtected(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIsWorkloadProtected(input string) (*IsWorkloadProtected, error) { + vals := map[string]IsWorkloadProtected{ + "false": IsWorkloadProtectedFalse, + "true": IsWorkloadProtectedTrue, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IsWorkloadProtected(input) + return &out, nil +} + +type LoadBalancerBackendAddressAdminState string + +const ( + LoadBalancerBackendAddressAdminStateDown LoadBalancerBackendAddressAdminState = "Down" + LoadBalancerBackendAddressAdminStateNone LoadBalancerBackendAddressAdminState = "None" + LoadBalancerBackendAddressAdminStateUp LoadBalancerBackendAddressAdminState = "Up" +) + +func PossibleValuesForLoadBalancerBackendAddressAdminState() []string { + return []string{ + string(LoadBalancerBackendAddressAdminStateDown), + string(LoadBalancerBackendAddressAdminStateNone), + string(LoadBalancerBackendAddressAdminStateUp), + } +} + +func (s *LoadBalancerBackendAddressAdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerBackendAddressAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerBackendAddressAdminState(input string) (*LoadBalancerBackendAddressAdminState, error) { + vals := map[string]LoadBalancerBackendAddressAdminState{ + "down": LoadBalancerBackendAddressAdminStateDown, + "none": LoadBalancerBackendAddressAdminStateNone, + "up": LoadBalancerBackendAddressAdminStateUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerBackendAddressAdminState(input) + return &out, nil +} + +type NatGatewaySkuName string + +const ( + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +func PossibleValuesForNatGatewaySkuName() []string { + return []string{ + string(NatGatewaySkuNameStandard), + } +} + +func (s *NatGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNatGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNatGatewaySkuName(input string) (*NatGatewaySkuName, error) { + vals := map[string]NatGatewaySkuName{ + "standard": NatGatewaySkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NatGatewaySkuName(input) + return &out, nil +} + +type NetworkInterfaceAuxiliaryMode string + +const ( + NetworkInterfaceAuxiliaryModeAcceleratedConnections NetworkInterfaceAuxiliaryMode = "AcceleratedConnections" + NetworkInterfaceAuxiliaryModeFloating NetworkInterfaceAuxiliaryMode = "Floating" + NetworkInterfaceAuxiliaryModeMaxConnections NetworkInterfaceAuxiliaryMode = "MaxConnections" + NetworkInterfaceAuxiliaryModeNone NetworkInterfaceAuxiliaryMode = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliaryMode() []string { + return []string{ + string(NetworkInterfaceAuxiliaryModeAcceleratedConnections), + string(NetworkInterfaceAuxiliaryModeFloating), + string(NetworkInterfaceAuxiliaryModeMaxConnections), + string(NetworkInterfaceAuxiliaryModeNone), + } +} + +func (s *NetworkInterfaceAuxiliaryMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliaryMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliaryMode(input string) (*NetworkInterfaceAuxiliaryMode, error) { + vals := map[string]NetworkInterfaceAuxiliaryMode{ + "acceleratedconnections": NetworkInterfaceAuxiliaryModeAcceleratedConnections, + "floating": NetworkInterfaceAuxiliaryModeFloating, + "maxconnections": NetworkInterfaceAuxiliaryModeMaxConnections, + "none": NetworkInterfaceAuxiliaryModeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliaryMode(input) + return &out, nil +} + +type NetworkInterfaceAuxiliarySku string + +const ( + NetworkInterfaceAuxiliarySkuAEight NetworkInterfaceAuxiliarySku = "A8" + NetworkInterfaceAuxiliarySkuAFour NetworkInterfaceAuxiliarySku = "A4" + NetworkInterfaceAuxiliarySkuAOne NetworkInterfaceAuxiliarySku = "A1" + NetworkInterfaceAuxiliarySkuATwo NetworkInterfaceAuxiliarySku = "A2" + NetworkInterfaceAuxiliarySkuNone NetworkInterfaceAuxiliarySku = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliarySku() []string { + return []string{ + string(NetworkInterfaceAuxiliarySkuAEight), + string(NetworkInterfaceAuxiliarySkuAFour), + string(NetworkInterfaceAuxiliarySkuAOne), + string(NetworkInterfaceAuxiliarySkuATwo), + string(NetworkInterfaceAuxiliarySkuNone), + } +} + +func (s *NetworkInterfaceAuxiliarySku) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliarySku(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliarySku(input string) (*NetworkInterfaceAuxiliarySku, error) { + vals := map[string]NetworkInterfaceAuxiliarySku{ + "a8": NetworkInterfaceAuxiliarySkuAEight, + "a4": NetworkInterfaceAuxiliarySkuAFour, + "a1": NetworkInterfaceAuxiliarySkuAOne, + "a2": NetworkInterfaceAuxiliarySkuATwo, + "none": NetworkInterfaceAuxiliarySkuNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliarySku(input) + return &out, nil +} + +type NetworkInterfaceMigrationPhase string + +const ( + NetworkInterfaceMigrationPhaseAbort NetworkInterfaceMigrationPhase = "Abort" + NetworkInterfaceMigrationPhaseCommit NetworkInterfaceMigrationPhase = "Commit" + NetworkInterfaceMigrationPhaseCommitted NetworkInterfaceMigrationPhase = "Committed" + NetworkInterfaceMigrationPhaseNone NetworkInterfaceMigrationPhase = "None" + NetworkInterfaceMigrationPhasePrepare NetworkInterfaceMigrationPhase = "Prepare" +) + +func PossibleValuesForNetworkInterfaceMigrationPhase() []string { + return []string{ + string(NetworkInterfaceMigrationPhaseAbort), + string(NetworkInterfaceMigrationPhaseCommit), + string(NetworkInterfaceMigrationPhaseCommitted), + string(NetworkInterfaceMigrationPhaseNone), + string(NetworkInterfaceMigrationPhasePrepare), + } +} + +func (s *NetworkInterfaceMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceMigrationPhase(input string) (*NetworkInterfaceMigrationPhase, error) { + vals := map[string]NetworkInterfaceMigrationPhase{ + "abort": NetworkInterfaceMigrationPhaseAbort, + "commit": NetworkInterfaceMigrationPhaseCommit, + "committed": NetworkInterfaceMigrationPhaseCommitted, + "none": NetworkInterfaceMigrationPhaseNone, + "prepare": NetworkInterfaceMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceMigrationPhase(input) + return &out, nil +} + +type NetworkInterfaceNicType string + +const ( + NetworkInterfaceNicTypeElastic NetworkInterfaceNicType = "Elastic" + NetworkInterfaceNicTypeStandard NetworkInterfaceNicType = "Standard" +) + +func PossibleValuesForNetworkInterfaceNicType() []string { + return []string{ + string(NetworkInterfaceNicTypeElastic), + string(NetworkInterfaceNicTypeStandard), + } +} + +func (s *NetworkInterfaceNicType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceNicType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceNicType(input string) (*NetworkInterfaceNicType, error) { + vals := map[string]NetworkInterfaceNicType{ + "elastic": NetworkInterfaceNicTypeElastic, + "standard": NetworkInterfaceNicTypeStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceNicType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type PublicIPAddressDnsSettingsDomainNameLabelScope string + +const ( + PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "NoReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "ResourceGroupReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "SubscriptionReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "TenantReuse" +) + +func PossibleValuesForPublicIPAddressDnsSettingsDomainNameLabelScope() []string { + return []string{ + string(PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse), + } +} + +func (s *PublicIPAddressDnsSettingsDomainNameLabelScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressDnsSettingsDomainNameLabelScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressDnsSettingsDomainNameLabelScope(input string) (*PublicIPAddressDnsSettingsDomainNameLabelScope, error) { + vals := map[string]PublicIPAddressDnsSettingsDomainNameLabelScope{ + "noreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse, + "resourcegroupreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse, + "subscriptionreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse, + "tenantreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressDnsSettingsDomainNameLabelScope(input) + return &out, nil +} + +type PublicIPAddressMigrationPhase string + +const ( + PublicIPAddressMigrationPhaseAbort PublicIPAddressMigrationPhase = "Abort" + PublicIPAddressMigrationPhaseCommit PublicIPAddressMigrationPhase = "Commit" + PublicIPAddressMigrationPhaseCommitted PublicIPAddressMigrationPhase = "Committed" + PublicIPAddressMigrationPhaseNone PublicIPAddressMigrationPhase = "None" + PublicIPAddressMigrationPhasePrepare PublicIPAddressMigrationPhase = "Prepare" +) + +func PossibleValuesForPublicIPAddressMigrationPhase() []string { + return []string{ + string(PublicIPAddressMigrationPhaseAbort), + string(PublicIPAddressMigrationPhaseCommit), + string(PublicIPAddressMigrationPhaseCommitted), + string(PublicIPAddressMigrationPhaseNone), + string(PublicIPAddressMigrationPhasePrepare), + } +} + +func (s *PublicIPAddressMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressMigrationPhase(input string) (*PublicIPAddressMigrationPhase, error) { + vals := map[string]PublicIPAddressMigrationPhase{ + "abort": PublicIPAddressMigrationPhaseAbort, + "commit": PublicIPAddressMigrationPhaseCommit, + "committed": PublicIPAddressMigrationPhaseCommitted, + "none": PublicIPAddressMigrationPhaseNone, + "prepare": PublicIPAddressMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressMigrationPhase(input) + return &out, nil +} + +type PublicIPAddressSkuName string + +const ( + PublicIPAddressSkuNameBasic PublicIPAddressSkuName = "Basic" + PublicIPAddressSkuNameStandard PublicIPAddressSkuName = "Standard" +) + +func PossibleValuesForPublicIPAddressSkuName() []string { + return []string{ + string(PublicIPAddressSkuNameBasic), + string(PublicIPAddressSkuNameStandard), + } +} + +func (s *PublicIPAddressSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuName(input string) (*PublicIPAddressSkuName, error) { + vals := map[string]PublicIPAddressSkuName{ + "basic": PublicIPAddressSkuNameBasic, + "standard": PublicIPAddressSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuName(input) + return &out, nil +} + +type PublicIPAddressSkuTier string + +const ( + PublicIPAddressSkuTierGlobal PublicIPAddressSkuTier = "Global" + PublicIPAddressSkuTierRegional PublicIPAddressSkuTier = "Regional" +) + +func PossibleValuesForPublicIPAddressSkuTier() []string { + return []string{ + string(PublicIPAddressSkuTierGlobal), + string(PublicIPAddressSkuTierRegional), + } +} + +func (s *PublicIPAddressSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuTier(input string) (*PublicIPAddressSkuTier, error) { + vals := map[string]PublicIPAddressSkuTier{ + "global": PublicIPAddressSkuTierGlobal, + "regional": PublicIPAddressSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuTier(input) + return &out, nil +} + +type RouteNextHopType string + +const ( + RouteNextHopTypeInternet RouteNextHopType = "Internet" + RouteNextHopTypeNone RouteNextHopType = "None" + RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" + RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" + RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" +) + +func PossibleValuesForRouteNextHopType() []string { + return []string{ + string(RouteNextHopTypeInternet), + string(RouteNextHopTypeNone), + string(RouteNextHopTypeVirtualAppliance), + string(RouteNextHopTypeVirtualNetworkGateway), + string(RouteNextHopTypeVnetLocal), + } +} + +func (s *RouteNextHopType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteNextHopType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteNextHopType(input string) (*RouteNextHopType, error) { + vals := map[string]RouteNextHopType{ + "internet": RouteNextHopTypeInternet, + "none": RouteNextHopTypeNone, + "virtualappliance": RouteNextHopTypeVirtualAppliance, + "virtualnetworkgateway": RouteNextHopTypeVirtualNetworkGateway, + "vnetlocal": RouteNextHopTypeVnetLocal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteNextHopType(input) + return &out, nil +} + +type SecurityRuleAccess string + +const ( + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +func PossibleValuesForSecurityRuleAccess() []string { + return []string{ + string(SecurityRuleAccessAllow), + string(SecurityRuleAccessDeny), + } +} + +func (s *SecurityRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleAccess(input string) (*SecurityRuleAccess, error) { + vals := map[string]SecurityRuleAccess{ + "allow": SecurityRuleAccessAllow, + "deny": SecurityRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleAccess(input) + return &out, nil +} + +type SecurityRuleDirection string + +const ( + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityRuleDirection() []string { + return []string{ + string(SecurityRuleDirectionInbound), + string(SecurityRuleDirectionOutbound), + } +} + +func (s *SecurityRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleDirection(input string) (*SecurityRuleDirection, error) { + vals := map[string]SecurityRuleDirection{ + "inbound": SecurityRuleDirectionInbound, + "outbound": SecurityRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleDirection(input) + return &out, nil +} + +type SecurityRuleProtocol string + +const ( + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + SecurityRuleProtocolAny SecurityRuleProtocol = "*" + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + SecurityRuleProtocolTcp SecurityRuleProtocol = "Tcp" + SecurityRuleProtocolUdp SecurityRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityRuleProtocol() []string { + return []string{ + string(SecurityRuleProtocolAh), + string(SecurityRuleProtocolAny), + string(SecurityRuleProtocolEsp), + string(SecurityRuleProtocolIcmp), + string(SecurityRuleProtocolTcp), + string(SecurityRuleProtocolUdp), + } +} + +func (s *SecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleProtocol(input string) (*SecurityRuleProtocol, error) { + vals := map[string]SecurityRuleProtocol{ + "ah": SecurityRuleProtocolAh, + "*": SecurityRuleProtocolAny, + "esp": SecurityRuleProtocolEsp, + "icmp": SecurityRuleProtocolIcmp, + "tcp": SecurityRuleProtocolTcp, + "udp": SecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleProtocol(input) + return &out, nil +} + +type SharingScope string + +const ( + SharingScopeDelegatedServices SharingScope = "DelegatedServices" + SharingScopeTenant SharingScope = "Tenant" +) + +func PossibleValuesForSharingScope() []string { + return []string{ + string(SharingScopeDelegatedServices), + string(SharingScopeTenant), + } +} + +func (s *SharingScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSharingScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSharingScope(input string) (*SharingScope, error) { + vals := map[string]SharingScope{ + "delegatedservices": SharingScopeDelegatedServices, + "tenant": SharingScopeTenant, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SharingScope(input) + return &out, nil +} + +type SyncMode string + +const ( + SyncModeAutomatic SyncMode = "Automatic" + SyncModeManual SyncMode = "Manual" +) + +func PossibleValuesForSyncMode() []string { + return []string{ + string(SyncModeAutomatic), + string(SyncModeManual), + } +} + +func (s *SyncMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSyncMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSyncMode(input string) (*SyncMode, error) { + vals := map[string]SyncMode{ + "automatic": SyncModeAutomatic, + "manual": SyncModeManual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SyncMode(input) + return &out, nil +} + +type TransportProtocol string + +const ( + TransportProtocolAll TransportProtocol = "All" + TransportProtocolTcp TransportProtocol = "Tcp" + TransportProtocolUdp TransportProtocol = "Udp" +) + +func PossibleValuesForTransportProtocol() []string { + return []string{ + string(TransportProtocolAll), + string(TransportProtocolTcp), + string(TransportProtocolUdp), + } +} + +func (s *TransportProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseTransportProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseTransportProtocol(input string) (*TransportProtocol, error) { + vals := map[string]TransportProtocol{ + "all": TransportProtocolAll, + "tcp": TransportProtocolTcp, + "udp": TransportProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := TransportProtocol(input) + return &out, nil +} + +type VirtualNetworkEncryptionEnforcement string + +const ( + VirtualNetworkEncryptionEnforcementAllowUnencrypted VirtualNetworkEncryptionEnforcement = "AllowUnencrypted" + VirtualNetworkEncryptionEnforcementDropUnencrypted VirtualNetworkEncryptionEnforcement = "DropUnencrypted" +) + +func PossibleValuesForVirtualNetworkEncryptionEnforcement() []string { + return []string{ + string(VirtualNetworkEncryptionEnforcementAllowUnencrypted), + string(VirtualNetworkEncryptionEnforcementDropUnencrypted), + } +} + +func (s *VirtualNetworkEncryptionEnforcement) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkEncryptionEnforcement(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkEncryptionEnforcement(input string) (*VirtualNetworkEncryptionEnforcement, error) { + vals := map[string]VirtualNetworkEncryptionEnforcement{ + "allowunencrypted": VirtualNetworkEncryptionEnforcementAllowUnencrypted, + "dropunencrypted": VirtualNetworkEncryptionEnforcementDropUnencrypted, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkEncryptionEnforcement(input) + return &out, nil +} + +type VirtualNetworkPeeringLevel string + +const ( + VirtualNetworkPeeringLevelFullyInSync VirtualNetworkPeeringLevel = "FullyInSync" + VirtualNetworkPeeringLevelLocalAndRemoteNotInSync VirtualNetworkPeeringLevel = "LocalAndRemoteNotInSync" + VirtualNetworkPeeringLevelLocalNotInSync VirtualNetworkPeeringLevel = "LocalNotInSync" + VirtualNetworkPeeringLevelRemoteNotInSync VirtualNetworkPeeringLevel = "RemoteNotInSync" +) + +func PossibleValuesForVirtualNetworkPeeringLevel() []string { + return []string{ + string(VirtualNetworkPeeringLevelFullyInSync), + string(VirtualNetworkPeeringLevelLocalAndRemoteNotInSync), + string(VirtualNetworkPeeringLevelLocalNotInSync), + string(VirtualNetworkPeeringLevelRemoteNotInSync), + } +} + +func (s *VirtualNetworkPeeringLevel) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPeeringLevel(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPeeringLevel(input string) (*VirtualNetworkPeeringLevel, error) { + vals := map[string]VirtualNetworkPeeringLevel{ + "fullyinsync": VirtualNetworkPeeringLevelFullyInSync, + "localandremotenotinsync": VirtualNetworkPeeringLevelLocalAndRemoteNotInSync, + "localnotinsync": VirtualNetworkPeeringLevelLocalNotInSync, + "remotenotinsync": VirtualNetworkPeeringLevelRemoteNotInSync, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPeeringLevel(input) + return &out, nil +} + +type VirtualNetworkPeeringState string + +const ( + VirtualNetworkPeeringStateConnected VirtualNetworkPeeringState = "Connected" + VirtualNetworkPeeringStateDisconnected VirtualNetworkPeeringState = "Disconnected" + VirtualNetworkPeeringStateInitiated VirtualNetworkPeeringState = "Initiated" +) + +func PossibleValuesForVirtualNetworkPeeringState() []string { + return []string{ + string(VirtualNetworkPeeringStateConnected), + string(VirtualNetworkPeeringStateDisconnected), + string(VirtualNetworkPeeringStateInitiated), + } +} + +func (s *VirtualNetworkPeeringState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPeeringState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPeeringState(input string) (*VirtualNetworkPeeringState, error) { + vals := map[string]VirtualNetworkPeeringState{ + "connected": VirtualNetworkPeeringStateConnected, + "disconnected": VirtualNetworkPeeringStateDisconnected, + "initiated": VirtualNetworkPeeringStateInitiated, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPeeringState(input) + return &out, nil +} + +type VirtualNetworkPrivateEndpointNetworkPolicies string + +const ( + VirtualNetworkPrivateEndpointNetworkPoliciesDisabled VirtualNetworkPrivateEndpointNetworkPolicies = "Disabled" + VirtualNetworkPrivateEndpointNetworkPoliciesEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "Enabled" + VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "NetworkSecurityGroupEnabled" + VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "RouteTableEnabled" +) + +func PossibleValuesForVirtualNetworkPrivateEndpointNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateEndpointNetworkPoliciesDisabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled), + } +} + +func (s *VirtualNetworkPrivateEndpointNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateEndpointNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateEndpointNetworkPolicies(input string) (*VirtualNetworkPrivateEndpointNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateEndpointNetworkPolicies{ + "disabled": VirtualNetworkPrivateEndpointNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateEndpointNetworkPoliciesEnabled, + "networksecuritygroupenabled": VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled, + "routetableenabled": VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateEndpointNetworkPolicies(input) + return &out, nil +} + +type VirtualNetworkPrivateLinkServiceNetworkPolicies string + +const ( + VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Disabled" + VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Enabled" +) + +func PossibleValuesForVirtualNetworkPrivateLinkServiceNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled), + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled), + } +} + +func (s *VirtualNetworkPrivateLinkServiceNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateLinkServiceNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateLinkServiceNetworkPolicies(input string) (*VirtualNetworkPrivateLinkServiceNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateLinkServiceNetworkPolicies{ + "disabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateLinkServiceNetworkPolicies(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/method_createorupdate.go b/resource-manager/network/2024-01-01/virtualnetworks/method_createorupdate.go new file mode 100644 index 00000000000..fb27efb9d4b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/method_createorupdate.go @@ -0,0 +1,76 @@ +package virtualnetworks + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VirtualNetwork +} + +// CreateOrUpdate ... +func (c VirtualNetworksClient) CreateOrUpdate(ctx context.Context, id commonids.VirtualNetworkId, input VirtualNetwork) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c VirtualNetworksClient) CreateOrUpdateThenPoll(ctx context.Context, id commonids.VirtualNetworkId, input VirtualNetwork) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/method_delete.go b/resource-manager/network/2024-01-01/virtualnetworks/method_delete.go new file mode 100644 index 00000000000..53212cd5aba --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/method_delete.go @@ -0,0 +1,72 @@ +package virtualnetworks + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c VirtualNetworksClient) Delete(ctx context.Context, id commonids.VirtualNetworkId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c VirtualNetworksClient) DeleteThenPoll(ctx context.Context, id commonids.VirtualNetworkId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/method_get.go b/resource-manager/network/2024-01-01/virtualnetworks/method_get.go new file mode 100644 index 00000000000..e40ab49ec8e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/method_get.go @@ -0,0 +1,84 @@ +package virtualnetworks + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VirtualNetwork +} + +type GetOperationOptions struct { + Expand *string +} + +func DefaultGetOperationOptions() GetOperationOptions { + return GetOperationOptions{} +} + +func (o GetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// Get ... +func (c VirtualNetworksClient) Get(ctx context.Context, id commonids.VirtualNetworkId, options GetOperationOptions) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VirtualNetwork + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/method_list.go b/resource-manager/network/2024-01-01/virtualnetworks/method_list.go new file mode 100644 index 00000000000..9162506d2da --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/method_list.go @@ -0,0 +1,93 @@ +package virtualnetworks + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VirtualNetwork +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []VirtualNetwork +} + +// List ... +func (c VirtualNetworksClient) List(ctx context.Context, id commonids.ResourceGroupId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/virtualNetworks", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VirtualNetwork `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c VirtualNetworksClient) ListComplete(ctx context.Context, id commonids.ResourceGroupId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, VirtualNetworkOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualNetworksClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate VirtualNetworkOperationPredicate) (result ListCompleteResult, err error) { + items := make([]VirtualNetwork, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/method_listall.go b/resource-manager/network/2024-01-01/virtualnetworks/method_listall.go new file mode 100644 index 00000000000..06795ae6091 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/method_listall.go @@ -0,0 +1,93 @@ +package virtualnetworks + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAllOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VirtualNetwork +} + +type ListAllCompleteResult struct { + LatestHttpResponse *http.Response + Items []VirtualNetwork +} + +// ListAll ... +func (c VirtualNetworksClient) ListAll(ctx context.Context, id commonids.SubscriptionId) (result ListAllOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/virtualNetworks", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VirtualNetwork `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListAllComplete retrieves all the results into a single object +func (c VirtualNetworksClient) ListAllComplete(ctx context.Context, id commonids.SubscriptionId) (ListAllCompleteResult, error) { + return c.ListAllCompleteMatchingPredicate(ctx, id, VirtualNetworkOperationPredicate{}) +} + +// ListAllCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualNetworksClient) ListAllCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate VirtualNetworkOperationPredicate) (result ListAllCompleteResult, err error) { + items := make([]VirtualNetwork, 0) + + resp, err := c.ListAll(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListAllCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/method_resourcenavigationlinkslist.go b/resource-manager/network/2024-01-01/virtualnetworks/method_resourcenavigationlinkslist.go new file mode 100644 index 00000000000..9a0b9b15f44 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/method_resourcenavigationlinkslist.go @@ -0,0 +1,93 @@ +package virtualnetworks + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLinksListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ResourceNavigationLink +} + +type ResourceNavigationLinksListCompleteResult struct { + LatestHttpResponse *http.Response + Items []ResourceNavigationLink +} + +// ResourceNavigationLinksList ... +func (c VirtualNetworksClient) ResourceNavigationLinksList(ctx context.Context, id commonids.SubnetId) (result ResourceNavigationLinksListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/resourceNavigationLinks", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ResourceNavigationLink `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ResourceNavigationLinksListComplete retrieves all the results into a single object +func (c VirtualNetworksClient) ResourceNavigationLinksListComplete(ctx context.Context, id commonids.SubnetId) (ResourceNavigationLinksListCompleteResult, error) { + return c.ResourceNavigationLinksListCompleteMatchingPredicate(ctx, id, ResourceNavigationLinkOperationPredicate{}) +} + +// ResourceNavigationLinksListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualNetworksClient) ResourceNavigationLinksListCompleteMatchingPredicate(ctx context.Context, id commonids.SubnetId, predicate ResourceNavigationLinkOperationPredicate) (result ResourceNavigationLinksListCompleteResult, err error) { + items := make([]ResourceNavigationLink, 0) + + resp, err := c.ResourceNavigationLinksList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ResourceNavigationLinksListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/method_serviceassociationlinkslist.go b/resource-manager/network/2024-01-01/virtualnetworks/method_serviceassociationlinkslist.go new file mode 100644 index 00000000000..5d6fbf0b927 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/method_serviceassociationlinkslist.go @@ -0,0 +1,93 @@ +package virtualnetworks + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLinksListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]ServiceAssociationLink +} + +type ServiceAssociationLinksListCompleteResult struct { + LatestHttpResponse *http.Response + Items []ServiceAssociationLink +} + +// ServiceAssociationLinksList ... +func (c VirtualNetworksClient) ServiceAssociationLinksList(ctx context.Context, id commonids.SubnetId) (result ServiceAssociationLinksListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/serviceAssociationLinks", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]ServiceAssociationLink `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ServiceAssociationLinksListComplete retrieves all the results into a single object +func (c VirtualNetworksClient) ServiceAssociationLinksListComplete(ctx context.Context, id commonids.SubnetId) (ServiceAssociationLinksListCompleteResult, error) { + return c.ServiceAssociationLinksListCompleteMatchingPredicate(ctx, id, ServiceAssociationLinkOperationPredicate{}) +} + +// ServiceAssociationLinksListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualNetworksClient) ServiceAssociationLinksListCompleteMatchingPredicate(ctx context.Context, id commonids.SubnetId, predicate ServiceAssociationLinkOperationPredicate) (result ServiceAssociationLinksListCompleteResult, err error) { + items := make([]ServiceAssociationLink, 0) + + resp, err := c.ServiceAssociationLinksList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ServiceAssociationLinksListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/method_subnetspreparenetworkpolicies.go b/resource-manager/network/2024-01-01/virtualnetworks/method_subnetspreparenetworkpolicies.go new file mode 100644 index 00000000000..b42b121f904 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/method_subnetspreparenetworkpolicies.go @@ -0,0 +1,75 @@ +package virtualnetworks + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetsPrepareNetworkPoliciesOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// SubnetsPrepareNetworkPolicies ... +func (c VirtualNetworksClient) SubnetsPrepareNetworkPolicies(ctx context.Context, id commonids.SubnetId, input PrepareNetworkPoliciesRequest) (result SubnetsPrepareNetworkPoliciesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/prepareNetworkPolicies", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// SubnetsPrepareNetworkPoliciesThenPoll performs SubnetsPrepareNetworkPolicies then polls until it's completed +func (c VirtualNetworksClient) SubnetsPrepareNetworkPoliciesThenPoll(ctx context.Context, id commonids.SubnetId, input PrepareNetworkPoliciesRequest) error { + result, err := c.SubnetsPrepareNetworkPolicies(ctx, id, input) + if err != nil { + return fmt.Errorf("performing SubnetsPrepareNetworkPolicies: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after SubnetsPrepareNetworkPolicies: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/method_subnetsunpreparenetworkpolicies.go b/resource-manager/network/2024-01-01/virtualnetworks/method_subnetsunpreparenetworkpolicies.go new file mode 100644 index 00000000000..69a0e33a2c8 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/method_subnetsunpreparenetworkpolicies.go @@ -0,0 +1,75 @@ +package virtualnetworks + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetsUnprepareNetworkPoliciesOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// SubnetsUnprepareNetworkPolicies ... +func (c VirtualNetworksClient) SubnetsUnprepareNetworkPolicies(ctx context.Context, id commonids.SubnetId, input UnprepareNetworkPoliciesRequest) (result SubnetsUnprepareNetworkPoliciesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/unprepareNetworkPolicies", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// SubnetsUnprepareNetworkPoliciesThenPoll performs SubnetsUnprepareNetworkPolicies then polls until it's completed +func (c VirtualNetworksClient) SubnetsUnprepareNetworkPoliciesThenPoll(ctx context.Context, id commonids.SubnetId, input UnprepareNetworkPoliciesRequest) error { + result, err := c.SubnetsUnprepareNetworkPolicies(ctx, id, input) + if err != nil { + return fmt.Errorf("performing SubnetsUnprepareNetworkPolicies: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after SubnetsUnprepareNetworkPolicies: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/method_updatetags.go b/resource-manager/network/2024-01-01/virtualnetworks/method_updatetags.go new file mode 100644 index 00000000000..8e2d6ea92a2 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/method_updatetags.go @@ -0,0 +1,59 @@ +package virtualnetworks + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VirtualNetwork +} + +// UpdateTags ... +func (c VirtualNetworksClient) UpdateTags(ctx context.Context, id commonids.VirtualNetworkId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VirtualNetwork + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/method_virtualnetworkscheckipaddressavailability.go b/resource-manager/network/2024-01-01/virtualnetworks/method_virtualnetworkscheckipaddressavailability.go new file mode 100644 index 00000000000..85ba4d73ccd --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/method_virtualnetworkscheckipaddressavailability.go @@ -0,0 +1,84 @@ +package virtualnetworks + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworksCheckIPAddressAvailabilityOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *IPAddressAvailabilityResult +} + +type VirtualNetworksCheckIPAddressAvailabilityOperationOptions struct { + IPAddress *string +} + +func DefaultVirtualNetworksCheckIPAddressAvailabilityOperationOptions() VirtualNetworksCheckIPAddressAvailabilityOperationOptions { + return VirtualNetworksCheckIPAddressAvailabilityOperationOptions{} +} + +func (o VirtualNetworksCheckIPAddressAvailabilityOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o VirtualNetworksCheckIPAddressAvailabilityOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o VirtualNetworksCheckIPAddressAvailabilityOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.IPAddress != nil { + out.Append("ipAddress", fmt.Sprintf("%v", *o.IPAddress)) + } + return &out +} + +// VirtualNetworksCheckIPAddressAvailability ... +func (c VirtualNetworksClient) VirtualNetworksCheckIPAddressAvailability(ctx context.Context, id commonids.VirtualNetworkId, options VirtualNetworksCheckIPAddressAvailabilityOperationOptions) (result VirtualNetworksCheckIPAddressAvailabilityOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/checkIPAddressAvailability", id.ID()), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model IPAddressAvailabilityResult + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/method_virtualnetworkslistddosprotectionstatus.go b/resource-manager/network/2024-01-01/virtualnetworks/method_virtualnetworkslistddosprotectionstatus.go new file mode 100644 index 00000000000..c0872952086 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/method_virtualnetworkslistddosprotectionstatus.go @@ -0,0 +1,109 @@ +package virtualnetworks + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworksListDdosProtectionStatusOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *[]PublicIPDdosProtectionStatusResult +} + +type VirtualNetworksListDdosProtectionStatusCompleteResult struct { + LatestHttpResponse *http.Response + Items []PublicIPDdosProtectionStatusResult +} + +type VirtualNetworksListDdosProtectionStatusOperationOptions struct { + SkipToken *string + Top *int64 +} + +func DefaultVirtualNetworksListDdosProtectionStatusOperationOptions() VirtualNetworksListDdosProtectionStatusOperationOptions { + return VirtualNetworksListDdosProtectionStatusOperationOptions{} +} + +func (o VirtualNetworksListDdosProtectionStatusOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o VirtualNetworksListDdosProtectionStatusOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o VirtualNetworksListDdosProtectionStatusOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.SkipToken != nil { + out.Append("skipToken", fmt.Sprintf("%v", *o.SkipToken)) + } + if o.Top != nil { + out.Append("top", fmt.Sprintf("%v", *o.Top)) + } + return &out +} + +// VirtualNetworksListDdosProtectionStatus ... +func (c VirtualNetworksClient) VirtualNetworksListDdosProtectionStatus(ctx context.Context, id commonids.VirtualNetworkId, options VirtualNetworksListDdosProtectionStatusOperationOptions) (result VirtualNetworksListDdosProtectionStatusOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/ddosProtectionStatus", id.ID()), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VirtualNetworksListDdosProtectionStatusThenPoll performs VirtualNetworksListDdosProtectionStatus then polls until it's completed +func (c VirtualNetworksClient) VirtualNetworksListDdosProtectionStatusThenPoll(ctx context.Context, id commonids.VirtualNetworkId, options VirtualNetworksListDdosProtectionStatusOperationOptions) error { + result, err := c.VirtualNetworksListDdosProtectionStatus(ctx, id, options) + if err != nil { + return fmt.Errorf("performing VirtualNetworksListDdosProtectionStatus: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VirtualNetworksListDdosProtectionStatus: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/method_virtualnetworkslistusage.go b/resource-manager/network/2024-01-01/virtualnetworks/method_virtualnetworkslistusage.go new file mode 100644 index 00000000000..546a8bbc316 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/method_virtualnetworkslistusage.go @@ -0,0 +1,93 @@ +package virtualnetworks + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworksListUsageOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VirtualNetworkUsage +} + +type VirtualNetworksListUsageCompleteResult struct { + LatestHttpResponse *http.Response + Items []VirtualNetworkUsage +} + +// VirtualNetworksListUsage ... +func (c VirtualNetworksClient) VirtualNetworksListUsage(ctx context.Context, id commonids.VirtualNetworkId) (result VirtualNetworksListUsageOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/usages", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VirtualNetworkUsage `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// VirtualNetworksListUsageComplete retrieves all the results into a single object +func (c VirtualNetworksClient) VirtualNetworksListUsageComplete(ctx context.Context, id commonids.VirtualNetworkId) (VirtualNetworksListUsageCompleteResult, error) { + return c.VirtualNetworksListUsageCompleteMatchingPredicate(ctx, id, VirtualNetworkUsageOperationPredicate{}) +} + +// VirtualNetworksListUsageCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualNetworksClient) VirtualNetworksListUsageCompleteMatchingPredicate(ctx context.Context, id commonids.VirtualNetworkId, predicate VirtualNetworkUsageOperationPredicate) (result VirtualNetworksListUsageCompleteResult, err error) { + items := make([]VirtualNetworkUsage, 0) + + resp, err := c.VirtualNetworksListUsage(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = VirtualNetworksListUsageCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_addressspace.go b/resource-manager/network/2024-01-01/virtualnetworks/model_addressspace.go new file mode 100644 index 00000000000..9e0e23e9145 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_addressspace.go @@ -0,0 +1,8 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AddressSpace struct { + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_applicationgatewaybackendaddress.go b/resource-manager/network/2024-01-01/virtualnetworks/model_applicationgatewaybackendaddress.go new file mode 100644 index 00000000000..3f9607979a8 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_applicationgatewaybackendaddress.go @@ -0,0 +1,9 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddress struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_applicationgatewaybackendaddresspool.go b/resource-manager/network/2024-01-01/virtualnetworks/model_applicationgatewaybackendaddresspool.go new file mode 100644 index 00000000000..6f399a7bf5d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_applicationgatewaybackendaddresspool.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_applicationgatewaybackendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_applicationgatewaybackendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..953789d1f3e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_applicationgatewaybackendaddresspoolpropertiesformat.go @@ -0,0 +1,10 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPoolPropertiesFormat struct { + BackendAddresses *[]ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"` + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_applicationgatewayipconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworks/model_applicationgatewayipconfiguration.go new file mode 100644 index 00000000000..3da3cb7d9c8 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_applicationgatewayipconfiguration.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_applicationgatewayipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_applicationgatewayipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..d9d39242c2b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_applicationgatewayipconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/virtualnetworks/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..8069aeaaf35 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..29a50229369 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_backendaddresspool.go b/resource-manager/network/2024-01-01/virtualnetworks/model_backendaddresspool.go new file mode 100644 index 00000000000..dca54b5ff44 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_backendaddresspool.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_backendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_backendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..b5357aa1b58 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_backendaddresspoolpropertiesformat.go @@ -0,0 +1,19 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPoolPropertiesFormat struct { + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + DrainPeriodInSeconds *int64 `json:"drainPeriodInSeconds,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancerBackendAddresses *[]LoadBalancerBackendAddress `json:"loadBalancerBackendAddresses,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + Location *string `json:"location,omitempty"` + OutboundRule *SubResource `json:"outboundRule,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SyncMode *SyncMode `json:"syncMode,omitempty"` + TunnelInterfaces *[]GatewayLoadBalancerTunnelInterface `json:"tunnelInterfaces,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_customdnsconfigpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_customdnsconfigpropertiesformat.go new file mode 100644 index 00000000000..4608979dcd2 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_customdnsconfigpropertiesformat.go @@ -0,0 +1,9 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomDnsConfigPropertiesFormat struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_ddossettings.go b/resource-manager/network/2024-01-01/virtualnetworks/model_ddossettings.go new file mode 100644 index 00000000000..1a0ce5cf3aa --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_ddossettings.go @@ -0,0 +1,9 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettings struct { + DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"` + ProtectionMode *DdosSettingsProtectionMode `json:"protectionMode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_delegation.go b/resource-manager/network/2024-01-01/virtualnetworks/model_delegation.go new file mode 100644 index 00000000000..a8d0d243017 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_delegation.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Delegation struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceDelegationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_dhcpoptions.go b/resource-manager/network/2024-01-01/virtualnetworks/model_dhcpoptions.go new file mode 100644 index 00000000000..2e389bf9503 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_dhcpoptions.go @@ -0,0 +1,8 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DhcpOptions struct { + DnsServers *[]string `json:"dnsServers,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_flowlog.go b/resource-manager/network/2024-01-01/virtualnetworks/model_flowlog.go new file mode 100644 index 00000000000..99a08c9552f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_flowlog.go @@ -0,0 +1,19 @@ +package virtualnetworks + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLog struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FlowLogPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/virtualnetworks/model_flowlogformatparameters.go new file mode 100644 index 00000000000..62b8c967d59 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_flowlogpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_flowlogpropertiesformat.go new file mode 100644 index 00000000000..46ad7cc1502 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_flowlogpropertiesformat.go @@ -0,0 +1,15 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogPropertiesFormat struct { + Enabled *bool `json:"enabled,omitempty"` + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` + TargetResourceGuid *string `json:"targetResourceGuid,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_frontendipconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworks/model_frontendipconfiguration.go new file mode 100644 index 00000000000..4b7f7549a8a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_frontendipconfiguration.go @@ -0,0 +1,17 @@ +package virtualnetworks + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_frontendipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_frontendipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..7f51afc745f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_frontendipconfigurationpropertiesformat.go @@ -0,0 +1,19 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfigurationPropertiesFormat struct { + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + InboundNatPools *[]SubResource `json:"inboundNatPools,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_gatewayloadbalancertunnelinterface.go b/resource-manager/network/2024-01-01/virtualnetworks/model_gatewayloadbalancertunnelinterface.go new file mode 100644 index 00000000000..ef3318f49d4 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_gatewayloadbalancertunnelinterface.go @@ -0,0 +1,11 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayLoadBalancerTunnelInterface struct { + Identifier *int64 `json:"identifier,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *GatewayLoadBalancerTunnelProtocol `json:"protocol,omitempty"` + Type *GatewayLoadBalancerTunnelInterfaceType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_inboundnatrule.go b/resource-manager/network/2024-01-01/virtualnetworks/model_inboundnatrule.go new file mode 100644 index 00000000000..20f0e56c966 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_inboundnatrule.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundNatRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_inboundnatrulepropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_inboundnatrulepropertiesformat.go new file mode 100644 index 00000000000..8ca3d3cee59 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_inboundnatrulepropertiesformat.go @@ -0,0 +1,19 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendIPConfiguration *NetworkInterfaceIPConfiguration `json:"backendIPConfiguration,omitempty"` + BackendPort *int64 `json:"backendPort,omitempty"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + FrontendPortRangeEnd *int64 `json:"frontendPortRangeEnd,omitempty"` + FrontendPortRangeStart *int64 `json:"frontendPortRangeStart,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol *TransportProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_ipaddressavailabilityresult.go b/resource-manager/network/2024-01-01/virtualnetworks/model_ipaddressavailabilityresult.go new file mode 100644 index 00000000000..2db5fbd90fa --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_ipaddressavailabilityresult.go @@ -0,0 +1,10 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPAddressAvailabilityResult struct { + Available *bool `json:"available,omitempty"` + AvailableIPAddresses *[]string `json:"availableIPAddresses,omitempty"` + IsPlatformReserved *bool `json:"isPlatformReserved,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_ipconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworks/model_ipconfiguration.go new file mode 100644 index 00000000000..7fc81013c87 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_ipconfiguration.go @@ -0,0 +1,11 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_ipconfigurationprofile.go b/resource-manager/network/2024-01-01/virtualnetworks/model_ipconfigurationprofile.go new file mode 100644 index 00000000000..246a7d2784a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_ipconfigurationprofile.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationProfilePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_ipconfigurationprofilepropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_ipconfigurationprofilepropertiesformat.go new file mode 100644 index 00000000000..1c15860eaa4 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_ipconfigurationprofilepropertiesformat.go @@ -0,0 +1,9 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfilePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_ipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_ipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..5f7e978b372 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_ipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_iptag.go b/resource-manager/network/2024-01-01/virtualnetworks/model_iptag.go new file mode 100644 index 00000000000..5f312015c16 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_iptag.go @@ -0,0 +1,9 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPTag struct { + IPTagType *string `json:"ipTagType,omitempty"` + Tag *string `json:"tag,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_loadbalancerbackendaddress.go b/resource-manager/network/2024-01-01/virtualnetworks/model_loadbalancerbackendaddress.go new file mode 100644 index 00000000000..f84e6394098 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_loadbalancerbackendaddress.go @@ -0,0 +1,9 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddress struct { + Name *string `json:"name,omitempty"` + Properties *LoadBalancerBackendAddressPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_loadbalancerbackendaddresspropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_loadbalancerbackendaddresspropertiesformat.go new file mode 100644 index 00000000000..5b16669363a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_loadbalancerbackendaddresspropertiesformat.go @@ -0,0 +1,14 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPropertiesFormat struct { + AdminState *LoadBalancerBackendAddressAdminState `json:"adminState,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + InboundNatRulesPortMapping *[]NatRulePortMapping `json:"inboundNatRulesPortMapping,omitempty"` + LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIPConfiguration,omitempty"` + NetworkInterfaceIPConfiguration *SubResource `json:"networkInterfaceIPConfiguration,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_natgateway.go b/resource-manager/network/2024-01-01/virtualnetworks/model_natgateway.go new file mode 100644 index 00000000000..e2a2c9ea1aa --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_natgateway.go @@ -0,0 +1,20 @@ +package virtualnetworks + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"` + Sku *NatGatewaySku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_natgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_natgatewaypropertiesformat.go new file mode 100644 index 00000000000..11bdb034e9d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_natgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayPropertiesFormat struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]SubResource `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_natgatewaysku.go b/resource-manager/network/2024-01-01/virtualnetworks/model_natgatewaysku.go new file mode 100644 index 00000000000..3375ec20625 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_natgatewaysku.go @@ -0,0 +1,8 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySku struct { + Name *NatGatewaySkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_natruleportmapping.go b/resource-manager/network/2024-01-01/virtualnetworks/model_natruleportmapping.go new file mode 100644 index 00000000000..c1f6eb9d264 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_natruleportmapping.go @@ -0,0 +1,10 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulePortMapping struct { + BackendPort *int64 `json:"backendPort,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + InboundNatRuleName *string `json:"inboundNatRuleName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_networkintentpolicy.go b/resource-manager/network/2024-01-01/virtualnetworks/model_networkintentpolicy.go new file mode 100644 index 00000000000..565f4c702ee --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_networkintentpolicy.go @@ -0,0 +1,13 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkIntentPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_networkintentpolicyconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworks/model_networkintentpolicyconfiguration.go new file mode 100644 index 00000000000..3f3080bf421 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_networkintentpolicyconfiguration.go @@ -0,0 +1,9 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkIntentPolicyConfiguration struct { + NetworkIntentPolicyName *string `json:"networkIntentPolicyName,omitempty"` + SourceNetworkIntentPolicy *NetworkIntentPolicy `json:"sourceNetworkIntentPolicy,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterface.go b/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterface.go new file mode 100644 index 00000000000..51266c314db --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterface.go @@ -0,0 +1,19 @@ +package virtualnetworks + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterface struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfacePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterfacednssettings.go b/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterfacednssettings.go new file mode 100644 index 00000000000..35b796d58ea --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterfacednssettings.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceDnsSettings struct { + AppliedDnsServers *[]string `json:"appliedDnsServers,omitempty"` + DnsServers *[]string `json:"dnsServers,omitempty"` + InternalDnsNameLabel *string `json:"internalDnsNameLabel,omitempty"` + InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty"` + InternalFqdn *string `json:"internalFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterfaceipconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterfaceipconfiguration.go new file mode 100644 index 00000000000..e4fe127f68f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterfaceipconfiguration.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go b/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go new file mode 100644 index 00000000000..0cf1411b04e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go @@ -0,0 +1,10 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties struct { + Fqdns *[]string `json:"fqdns,omitempty"` + GroupId *string `json:"groupId,omitempty"` + RequiredMemberName *string `json:"requiredMemberName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterfaceipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterfaceipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..f8d38101396 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterfaceipconfigurationpropertiesformat.go @@ -0,0 +1,22 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPropertiesFormat struct { + ApplicationGatewayBackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"applicationGatewayBackendAddressPools,omitempty"` + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + LoadBalancerBackendAddressPools *[]BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"` + LoadBalancerInboundNatRules *[]InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressPrefixLength *int64 `json:"privateIPAddressPrefixLength,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + PrivateLinkConnectionProperties *NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties `json:"privateLinkConnectionProperties,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` + VirtualNetworkTaps *[]VirtualNetworkTap `json:"virtualNetworkTaps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterfacepropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterfacepropertiesformat.go new file mode 100644 index 00000000000..f38dee01e75 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterfacepropertiesformat.go @@ -0,0 +1,29 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfacePropertiesFormat struct { + AuxiliaryMode *NetworkInterfaceAuxiliaryMode `json:"auxiliaryMode,omitempty"` + AuxiliarySku *NetworkInterfaceAuxiliarySku `json:"auxiliarySku,omitempty"` + DisableTcpStateTracking *bool `json:"disableTcpStateTracking,omitempty"` + DnsSettings *NetworkInterfaceDnsSettings `json:"dnsSettings,omitempty"` + DscpConfiguration *SubResource `json:"dscpConfiguration,omitempty"` + EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"` + EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"` + HostedWorkloads *[]string `json:"hostedWorkloads,omitempty"` + IPConfigurations *[]NetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + MacAddress *string `json:"macAddress,omitempty"` + MigrationPhase *NetworkInterfaceMigrationPhase `json:"migrationPhase,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + NicType *NetworkInterfaceNicType `json:"nicType,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkService *PrivateLinkService `json:"privateLinkService,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + TapConfigurations *[]NetworkInterfaceTapConfiguration `json:"tapConfigurations,omitempty"` + VirtualMachine *SubResource `json:"virtualMachine,omitempty"` + VnetEncryptionSupported *bool `json:"vnetEncryptionSupported,omitempty"` + WorkloadType *string `json:"workloadType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterfacetapconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterfacetapconfiguration.go new file mode 100644 index 00000000000..7ee2c196852 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterfacetapconfiguration.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceTapConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterfacetapconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterfacetapconfigurationpropertiesformat.go new file mode 100644 index 00000000000..f37548acc09 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_networkinterfacetapconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualNetworkTap *VirtualNetworkTap `json:"virtualNetworkTap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_networksecuritygroup.go b/resource-manager/network/2024-01-01/virtualnetworks/model_networksecuritygroup.go new file mode 100644 index 00000000000..c6ffd2de200 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_networksecuritygroup.go @@ -0,0 +1,14 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_networksecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_networksecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..bdaff37d6ec --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_networksecuritygrouppropertiesformat.go @@ -0,0 +1,15 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupPropertiesFormat struct { + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + FlowLogs *[]FlowLog `json:"flowLogs,omitempty"` + FlushConnection *bool `json:"flushConnection,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_preparenetworkpoliciesrequest.go b/resource-manager/network/2024-01-01/virtualnetworks/model_preparenetworkpoliciesrequest.go new file mode 100644 index 00000000000..af5d6a6061c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_preparenetworkpoliciesrequest.go @@ -0,0 +1,9 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrepareNetworkPoliciesRequest struct { + NetworkIntentPolicyConfigurations *[]NetworkIntentPolicyConfiguration `json:"networkIntentPolicyConfigurations,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_privateendpoint.go b/resource-manager/network/2024-01-01/virtualnetworks/model_privateendpoint.go new file mode 100644 index 00000000000..a21e2003c7b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_privateendpoint.go @@ -0,0 +1,19 @@ +package virtualnetworks + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpoint struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_privateendpointconnection.go b/resource-manager/network/2024-01-01/virtualnetworks/model_privateendpointconnection.go new file mode 100644 index 00000000000..03c0943acbe --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_privateendpointconnection.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_privateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/virtualnetworks/model_privateendpointconnectionproperties.go new file mode 100644 index 00000000000..badbc227dee --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_privateendpointconnectionproperties.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateEndpointLocation *string `json:"privateEndpointLocation,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_privateendpointipconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworks/model_privateendpointipconfiguration.go new file mode 100644 index 00000000000..b8c8c0e51e2 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_privateendpointipconfiguration.go @@ -0,0 +1,11 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_privateendpointipconfigurationproperties.go b/resource-manager/network/2024-01-01/virtualnetworks/model_privateendpointipconfigurationproperties.go new file mode 100644 index 00000000000..0e1ea69495c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_privateendpointipconfigurationproperties.go @@ -0,0 +1,10 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfigurationProperties struct { + GroupId *string `json:"groupId,omitempty"` + MemberName *string `json:"memberName,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_privateendpointproperties.go b/resource-manager/network/2024-01-01/virtualnetworks/model_privateendpointproperties.go new file mode 100644 index 00000000000..c204c6f06f5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_privateendpointproperties.go @@ -0,0 +1,16 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointProperties struct { + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + CustomDnsConfigs *[]CustomDnsConfigPropertiesFormat `json:"customDnsConfigs,omitempty"` + CustomNetworkInterfaceName *string `json:"customNetworkInterfaceName,omitempty"` + IPConfigurations *[]PrivateEndpointIPConfiguration `json:"ipConfigurations,omitempty"` + ManualPrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"manualPrivateLinkServiceConnections,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"privateLinkServiceConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_privatelinkservice.go b/resource-manager/network/2024-01-01/virtualnetworks/model_privatelinkservice.go new file mode 100644 index 00000000000..ea60905675d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_privatelinkservice.go @@ -0,0 +1,19 @@ +package virtualnetworks + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkService struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_privatelinkserviceconnection.go b/resource-manager/network/2024-01-01/virtualnetworks/model_privatelinkserviceconnection.go new file mode 100644 index 00000000000..45640ebd97e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_privatelinkserviceconnection.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_privatelinkserviceconnectionproperties.go b/resource-manager/network/2024-01-01/virtualnetworks/model_privatelinkserviceconnectionproperties.go new file mode 100644 index 00000000000..ece1141c4d0 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_privatelinkserviceconnectionproperties.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionProperties struct { + GroupIds *[]string `json:"groupIds,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + PrivateLinkServiceId *string `json:"privateLinkServiceId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestMessage *string `json:"requestMessage,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_privatelinkserviceconnectionstate.go b/resource-manager/network/2024-01-01/virtualnetworks/model_privatelinkserviceconnectionstate.go new file mode 100644 index 00000000000..498d4f92f9a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_privatelinkserviceconnectionstate.go @@ -0,0 +1,10 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionState struct { + ActionsRequired *string `json:"actionsRequired,omitempty"` + Description *string `json:"description,omitempty"` + Status *string `json:"status,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_privatelinkserviceipconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworks/model_privatelinkserviceipconfiguration.go new file mode 100644 index 00000000000..b637ed217b5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_privatelinkserviceipconfiguration.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_privatelinkserviceipconfigurationproperties.go b/resource-manager/network/2024-01-01/virtualnetworks/model_privatelinkserviceipconfigurationproperties.go new file mode 100644 index 00000000000..7c3080b30c1 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_privatelinkserviceipconfigurationproperties.go @@ -0,0 +1,13 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_privatelinkserviceproperties.go b/resource-manager/network/2024-01-01/virtualnetworks/model_privatelinkserviceproperties.go new file mode 100644 index 00000000000..e187bf8454c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_privatelinkserviceproperties.go @@ -0,0 +1,17 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceProperties struct { + Alias *string `json:"alias,omitempty"` + AutoApproval *ResourceSet `json:"autoApproval,omitempty"` + EnableProxyProtocol *bool `json:"enableProxyProtocol,omitempty"` + Fqdns *[]string `json:"fqdns,omitempty"` + IPConfigurations *[]PrivateLinkServiceIPConfiguration `json:"ipConfigurations,omitempty"` + LoadBalancerFrontendIPConfigurations *[]FrontendIPConfiguration `json:"loadBalancerFrontendIpConfigurations,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Visibility *ResourceSet `json:"visibility,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_publicipaddress.go b/resource-manager/network/2024-01-01/virtualnetworks/model_publicipaddress.go new file mode 100644 index 00000000000..5eef47c77e3 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_publicipaddress.go @@ -0,0 +1,22 @@ +package virtualnetworks + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddress struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PublicIPAddressPropertiesFormat `json:"properties,omitempty"` + Sku *PublicIPAddressSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_publicipaddressdnssettings.go b/resource-manager/network/2024-01-01/virtualnetworks/model_publicipaddressdnssettings.go new file mode 100644 index 00000000000..1e10d9bb32a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_publicipaddressdnssettings.go @@ -0,0 +1,11 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressDnsSettings struct { + DomainNameLabel *string `json:"domainNameLabel,omitempty"` + DomainNameLabelScope *PublicIPAddressDnsSettingsDomainNameLabelScope `json:"domainNameLabelScope,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + ReverseFqdn *string `json:"reverseFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_publicipaddresspropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_publicipaddresspropertiesformat.go new file mode 100644 index 00000000000..f38386b9fd0 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_publicipaddresspropertiesformat.go @@ -0,0 +1,23 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressPropertiesFormat struct { + DdosSettings *DdosSettings `json:"ddosSettings,omitempty"` + DeleteOption *DeleteOptions `json:"deleteOption,omitempty"` + DnsSettings *PublicIPAddressDnsSettings `json:"dnsSettings,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty"` + IPTags *[]IPTag `json:"ipTags,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + LinkedPublicIPAddress *PublicIPAddress `json:"linkedPublicIPAddress,omitempty"` + MigrationPhase *PublicIPAddressMigrationPhase `json:"migrationPhase,omitempty"` + NatGateway *NatGateway `json:"natGateway,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"` + PublicIPAllocationMethod *IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServicePublicIPAddress *PublicIPAddress `json:"servicePublicIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_publicipaddresssku.go b/resource-manager/network/2024-01-01/virtualnetworks/model_publicipaddresssku.go new file mode 100644 index 00000000000..f080c20b33e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_publicipaddresssku.go @@ -0,0 +1,9 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressSku struct { + Name *PublicIPAddressSkuName `json:"name,omitempty"` + Tier *PublicIPAddressSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_publicipddosprotectionstatusresult.go b/resource-manager/network/2024-01-01/virtualnetworks/model_publicipddosprotectionstatusresult.go new file mode 100644 index 00000000000..ca0f8cc894f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_publicipddosprotectionstatusresult.go @@ -0,0 +1,11 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPDdosProtectionStatusResult struct { + DdosProtectionPlanId *string `json:"ddosProtectionPlanId,omitempty"` + IsWorkloadProtected *IsWorkloadProtected `json:"isWorkloadProtected,omitempty"` + PublicIPAddress *string `json:"publicIpAddress,omitempty"` + PublicIPAddressId *string `json:"publicIpAddressId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_resourcenavigationlink.go b/resource-manager/network/2024-01-01/virtualnetworks/model_resourcenavigationlink.go new file mode 100644 index 00000000000..e26d27c7784 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_resourcenavigationlink.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ResourceNavigationLinkFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_resourcenavigationlinkformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_resourcenavigationlinkformat.go new file mode 100644 index 00000000000..5c0bb30457e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_resourcenavigationlinkformat.go @@ -0,0 +1,10 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLinkFormat struct { + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_resourceset.go b/resource-manager/network/2024-01-01/virtualnetworks/model_resourceset.go new file mode 100644 index 00000000000..3f176c096e6 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_resourceset.go @@ -0,0 +1,8 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceSet struct { + Subscriptions *[]string `json:"subscriptions,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/virtualnetworks/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..b8a74239a26 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_route.go b/resource-manager/network/2024-01-01/virtualnetworks/model_route.go new file mode 100644 index 00000000000..d76eb9ceeec --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_route.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Route struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RoutePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_routepropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_routepropertiesformat.go new file mode 100644 index 00000000000..e52a5de8ca6 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_routepropertiesformat.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutePropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + HasBgpOverride *bool `json:"hasBgpOverride,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + NextHopType RouteNextHopType `json:"nextHopType"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_routetable.go b/resource-manager/network/2024-01-01/virtualnetworks/model_routetable.go new file mode 100644 index 00000000000..2e233c020e3 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_routetable.go @@ -0,0 +1,14 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTable struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteTablePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_routetablepropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_routetablepropertiesformat.go new file mode 100644 index 00000000000..69015d57403 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_routetablepropertiesformat.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTablePropertiesFormat struct { + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Routes *[]Route `json:"routes,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_securityrule.go b/resource-manager/network/2024-01-01/virtualnetworks/model_securityrule.go new file mode 100644 index 00000000000..f7ed0f51115 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_securityrule.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_securityrulepropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_securityrulepropertiesformat.go new file mode 100644 index 00000000000..af160e60e64 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_securityrulepropertiesformat.go @@ -0,0 +1,23 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulePropertiesFormat struct { + Access SecurityRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction SecurityRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_serviceassociationlink.go b/resource-manager/network/2024-01-01/virtualnetworks/model_serviceassociationlink.go new file mode 100644 index 00000000000..77039ca3b73 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_serviceassociationlink.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceAssociationLinkPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_serviceassociationlinkpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_serviceassociationlinkpropertiesformat.go new file mode 100644 index 00000000000..d6ef1f15de1 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_serviceassociationlinkpropertiesformat.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLinkPropertiesFormat struct { + AllowDelete *bool `json:"allowDelete,omitempty"` + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + Locations *[]string `json:"locations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_servicedelegationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_servicedelegationpropertiesformat.go new file mode 100644 index 00000000000..82eb0f31d43 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_servicedelegationpropertiesformat.go @@ -0,0 +1,10 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceDelegationPropertiesFormat struct { + Actions *[]string `json:"actions,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_serviceendpointpolicy.go b/resource-manager/network/2024-01-01/virtualnetworks/model_serviceendpointpolicy.go new file mode 100644 index 00000000000..d50c20ce576 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_serviceendpointpolicy.go @@ -0,0 +1,15 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Kind *string `json:"kind,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_serviceendpointpolicydefinition.go b/resource-manager/network/2024-01-01/virtualnetworks/model_serviceendpointpolicydefinition.go new file mode 100644 index 00000000000..4d2ebe5ac46 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_serviceendpointpolicydefinition.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinition struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_serviceendpointpolicydefinitionpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_serviceendpointpolicydefinitionpropertiesformat.go new file mode 100644 index 00000000000..b221dd2c319 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_serviceendpointpolicydefinitionpropertiesformat.go @@ -0,0 +1,11 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionPropertiesFormat struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` + ServiceResources *[]string `json:"serviceResources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_serviceendpointpolicypropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_serviceendpointpolicypropertiesformat.go new file mode 100644 index 00000000000..00a9c1e5662 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_serviceendpointpolicypropertiesformat.go @@ -0,0 +1,13 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyPropertiesFormat struct { + ContextualServiceEndpointPolicies *[]string `json:"contextualServiceEndpointPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServiceAlias *string `json:"serviceAlias,omitempty"` + ServiceEndpointPolicyDefinitions *[]ServiceEndpointPolicyDefinition `json:"serviceEndpointPolicyDefinitions,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_serviceendpointpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_serviceendpointpropertiesformat.go new file mode 100644 index 00000000000..8c3d42e8afc --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_serviceendpointpropertiesformat.go @@ -0,0 +1,11 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPropertiesFormat struct { + Locations *[]string `json:"locations,omitempty"` + NetworkIdentifier *SubResource `json:"networkIdentifier,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_subnet.go b/resource-manager/network/2024-01-01/virtualnetworks/model_subnet.go new file mode 100644 index 00000000000..7b3d4ff10c8 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_subnet.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Subnet struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SubnetPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_subnetpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_subnetpropertiesformat.go new file mode 100644 index 00000000000..24216334abb --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_subnetpropertiesformat.go @@ -0,0 +1,28 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + ApplicationGatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"applicationGatewayIPConfigurations,omitempty"` + DefaultOutboundAccess *bool `json:"defaultOutboundAccess,omitempty"` + Delegations *[]Delegation `json:"delegations,omitempty"` + IPAllocations *[]SubResource `json:"ipAllocations,omitempty"` + IPConfigurationProfiles *[]IPConfigurationProfile `json:"ipConfigurationProfiles,omitempty"` + IPConfigurations *[]IPConfiguration `json:"ipConfigurations,omitempty"` + NatGateway *SubResource `json:"natGateway,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + PrivateEndpointNetworkPolicies *VirtualNetworkPrivateEndpointNetworkPolicies `json:"privateEndpointNetworkPolicies,omitempty"` + PrivateEndpoints *[]PrivateEndpoint `json:"privateEndpoints,omitempty"` + PrivateLinkServiceNetworkPolicies *VirtualNetworkPrivateLinkServiceNetworkPolicies `json:"privateLinkServiceNetworkPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Purpose *string `json:"purpose,omitempty"` + ResourceNavigationLinks *[]ResourceNavigationLink `json:"resourceNavigationLinks,omitempty"` + RouteTable *RouteTable `json:"routeTable,omitempty"` + ServiceAssociationLinks *[]ServiceAssociationLink `json:"serviceAssociationLinks,omitempty"` + ServiceEndpointPolicies *[]ServiceEndpointPolicy `json:"serviceEndpointPolicies,omitempty"` + ServiceEndpoints *[]ServiceEndpointPropertiesFormat `json:"serviceEndpoints,omitempty"` + SharingScope *SharingScope `json:"sharingScope,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_subresource.go b/resource-manager/network/2024-01-01/virtualnetworks/model_subresource.go new file mode 100644 index 00000000000..ecd84dace18 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_subresource.go @@ -0,0 +1,8 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_tagsobject.go b/resource-manager/network/2024-01-01/virtualnetworks/model_tagsobject.go new file mode 100644 index 00000000000..9ac4400ec75 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_tagsobject.go @@ -0,0 +1,8 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/virtualnetworks/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..ce47549e2b9 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/virtualnetworks/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..26812782cc8 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_unpreparenetworkpoliciesrequest.go b/resource-manager/network/2024-01-01/virtualnetworks/model_unpreparenetworkpoliciesrequest.go new file mode 100644 index 00000000000..84b1fedbc2b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_unpreparenetworkpoliciesrequest.go @@ -0,0 +1,8 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UnprepareNetworkPoliciesRequest struct { + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetwork.go b/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetwork.go new file mode 100644 index 00000000000..01f2a07994e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetwork.go @@ -0,0 +1,19 @@ +package virtualnetworks + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetwork struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworkbgpcommunities.go b/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworkbgpcommunities.go new file mode 100644 index 00000000000..ecb655fd234 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworkbgpcommunities.go @@ -0,0 +1,9 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkBgpCommunities struct { + RegionalCommunity *string `json:"regionalCommunity,omitempty"` + VirtualNetworkCommunity string `json:"virtualNetworkCommunity"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworkencryption.go b/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworkencryption.go new file mode 100644 index 00000000000..a0d8e13fe3a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworkencryption.go @@ -0,0 +1,9 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkEncryption struct { + Enabled bool `json:"enabled"` + Enforcement *VirtualNetworkEncryptionEnforcement `json:"enforcement,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworkpeering.go b/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworkpeering.go new file mode 100644 index 00000000000..85b7fe9183a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworkpeering.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkPeering struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkPeeringPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworkpeeringpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworkpeeringpropertiesformat.go new file mode 100644 index 00000000000..41ebdc1a88a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworkpeeringpropertiesformat.go @@ -0,0 +1,27 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkPeeringPropertiesFormat struct { + AllowForwardedTraffic *bool `json:"allowForwardedTraffic,omitempty"` + AllowGatewayTransit *bool `json:"allowGatewayTransit,omitempty"` + AllowVirtualNetworkAccess *bool `json:"allowVirtualNetworkAccess,omitempty"` + DoNotVerifyRemoteGateways *bool `json:"doNotVerifyRemoteGateways,omitempty"` + EnableOnlyIPv6Peering *bool `json:"enableOnlyIPv6Peering,omitempty"` + LocalAddressSpace *AddressSpace `json:"localAddressSpace,omitempty"` + LocalSubnetNames *[]string `json:"localSubnetNames,omitempty"` + LocalVirtualNetworkAddressSpace *AddressSpace `json:"localVirtualNetworkAddressSpace,omitempty"` + PeerCompleteVnets *bool `json:"peerCompleteVnets,omitempty"` + PeeringState *VirtualNetworkPeeringState `json:"peeringState,omitempty"` + PeeringSyncLevel *VirtualNetworkPeeringLevel `json:"peeringSyncLevel,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RemoteAddressSpace *AddressSpace `json:"remoteAddressSpace,omitempty"` + RemoteBgpCommunities *VirtualNetworkBgpCommunities `json:"remoteBgpCommunities,omitempty"` + RemoteSubnetNames *[]string `json:"remoteSubnetNames,omitempty"` + RemoteVirtualNetwork *SubResource `json:"remoteVirtualNetwork,omitempty"` + RemoteVirtualNetworkAddressSpace *AddressSpace `json:"remoteVirtualNetworkAddressSpace,omitempty"` + RemoteVirtualNetworkEncryption *VirtualNetworkEncryption `json:"remoteVirtualNetworkEncryption,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + UseRemoteGateways *bool `json:"useRemoteGateways,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworkpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworkpropertiesformat.go new file mode 100644 index 00000000000..a6ad3b4e3a0 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworkpropertiesformat.go @@ -0,0 +1,21 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkPropertiesFormat struct { + AddressSpace *AddressSpace `json:"addressSpace,omitempty"` + BgpCommunities *VirtualNetworkBgpCommunities `json:"bgpCommunities,omitempty"` + DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"` + DhcpOptions *DhcpOptions `json:"dhcpOptions,omitempty"` + EnableDdosProtection *bool `json:"enableDdosProtection,omitempty"` + EnableVMProtection *bool `json:"enableVmProtection,omitempty"` + Encryption *VirtualNetworkEncryption `json:"encryption,omitempty"` + FlowLogs *[]FlowLog `json:"flowLogs,omitempty"` + FlowTimeoutInMinutes *int64 `json:"flowTimeoutInMinutes,omitempty"` + IPAllocations *[]SubResource `json:"ipAllocations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` + VirtualNetworkPeerings *[]VirtualNetworkPeering `json:"virtualNetworkPeerings,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworktap.go b/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworktap.go new file mode 100644 index 00000000000..d1b3faf4100 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworktap.go @@ -0,0 +1,14 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkTapPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworktappropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworktappropertiesformat.go new file mode 100644 index 00000000000..4c2bb1fad6c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworktappropertiesformat.go @@ -0,0 +1,13 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapPropertiesFormat struct { + DestinationLoadBalancerFrontEndIPConfiguration *FrontendIPConfiguration `json:"destinationLoadBalancerFrontEndIPConfiguration,omitempty"` + DestinationNetworkInterfaceIPConfiguration *NetworkInterfaceIPConfiguration `json:"destinationNetworkInterfaceIPConfiguration,omitempty"` + DestinationPort *int64 `json:"destinationPort,omitempty"` + NetworkInterfaceTapConfigurations *[]NetworkInterfaceTapConfiguration `json:"networkInterfaceTapConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworkusage.go b/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworkusage.go new file mode 100644 index 00000000000..470dd6b34f8 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworkusage.go @@ -0,0 +1,12 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkUsage struct { + CurrentValue *float64 `json:"currentValue,omitempty"` + Id *string `json:"id,omitempty"` + Limit *float64 `json:"limit,omitempty"` + Name *VirtualNetworkUsageName `json:"name,omitempty"` + Unit *string `json:"unit,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworkusagename.go b/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworkusagename.go new file mode 100644 index 00000000000..f3156ce6be8 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/model_virtualnetworkusagename.go @@ -0,0 +1,9 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkUsageName struct { + LocalizedValue *string `json:"localizedValue,omitempty"` + Value *string `json:"value,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/predicates.go b/resource-manager/network/2024-01-01/virtualnetworks/predicates.go new file mode 100644 index 00000000000..ae976386154 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/predicates.go @@ -0,0 +1,144 @@ +package virtualnetworks + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPDdosProtectionStatusResultOperationPredicate struct { + DdosProtectionPlanId *string + PublicIPAddress *string + PublicIPAddressId *string +} + +func (p PublicIPDdosProtectionStatusResultOperationPredicate) Matches(input PublicIPDdosProtectionStatusResult) bool { + + if p.DdosProtectionPlanId != nil && (input.DdosProtectionPlanId == nil || *p.DdosProtectionPlanId != *input.DdosProtectionPlanId) { + return false + } + + if p.PublicIPAddress != nil && (input.PublicIPAddress == nil || *p.PublicIPAddress != *input.PublicIPAddress) { + return false + } + + if p.PublicIPAddressId != nil && (input.PublicIPAddressId == nil || *p.PublicIPAddressId != *input.PublicIPAddressId) { + return false + } + + return true +} + +type ResourceNavigationLinkOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p ResourceNavigationLinkOperationPredicate) Matches(input ResourceNavigationLink) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type ServiceAssociationLinkOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p ServiceAssociationLinkOperationPredicate) Matches(input ServiceAssociationLink) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type VirtualNetworkOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p VirtualNetworkOperationPredicate) Matches(input VirtualNetwork) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type VirtualNetworkUsageOperationPredicate struct { + CurrentValue *float64 + Id *string + Limit *float64 + Unit *string +} + +func (p VirtualNetworkUsageOperationPredicate) Matches(input VirtualNetworkUsage) bool { + + if p.CurrentValue != nil && (input.CurrentValue == nil || *p.CurrentValue != *input.CurrentValue) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Limit != nil && (input.Limit == nil || *p.Limit != *input.Limit) { + return false + } + + if p.Unit != nil && (input.Unit == nil || *p.Unit != *input.Unit) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/virtualnetworks/version.go b/resource-manager/network/2024-01-01/virtualnetworks/version.go new file mode 100644 index 00000000000..d9a791b9024 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworks/version.go @@ -0,0 +1,12 @@ +package virtualnetworks + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/virtualnetworks/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/README.md b/resource-manager/network/2024-01-01/virtualnetworktap/README.md new file mode 100644 index 00000000000..e80ff3d2eb8 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/README.md @@ -0,0 +1,86 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualnetworktap` Documentation + +The `virtualnetworktap` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualnetworktap" +``` + + +### Client Initialization + +```go +client := virtualnetworktap.NewVirtualNetworkTapClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `VirtualNetworkTapClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := virtualnetworktap.NewVirtualNetworkTapID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkTapValue") + +payload := virtualnetworktap.VirtualNetworkTap{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkTapClient.Delete` + +```go +ctx := context.TODO() +id := virtualnetworktap.NewVirtualNetworkTapID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkTapValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualNetworkTapClient.Get` + +```go +ctx := context.TODO() +id := virtualnetworktap.NewVirtualNetworkTapID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkTapValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualNetworkTapClient.UpdateTags` + +```go +ctx := context.TODO() +id := virtualnetworktap.NewVirtualNetworkTapID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkTapValue") + +payload := virtualnetworktap.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/client.go b/resource-manager/network/2024-01-01/virtualnetworktap/client.go new file mode 100644 index 00000000000..4444f3072d8 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/client.go @@ -0,0 +1,26 @@ +package virtualnetworktap + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapClient struct { + Client *resourcemanager.Client +} + +func NewVirtualNetworkTapClientWithBaseURI(sdkApi sdkEnv.Api) (*VirtualNetworkTapClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "virtualnetworktap", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating VirtualNetworkTapClient: %+v", err) + } + + return &VirtualNetworkTapClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/constants.go b/resource-manager/network/2024-01-01/virtualnetworktap/constants.go new file mode 100644 index 00000000000..131e5231f12 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/constants.go @@ -0,0 +1,1198 @@ +package virtualnetworktap + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettingsProtectionMode string + +const ( + DdosSettingsProtectionModeDisabled DdosSettingsProtectionMode = "Disabled" + DdosSettingsProtectionModeEnabled DdosSettingsProtectionMode = "Enabled" + DdosSettingsProtectionModeVirtualNetworkInherited DdosSettingsProtectionMode = "VirtualNetworkInherited" +) + +func PossibleValuesForDdosSettingsProtectionMode() []string { + return []string{ + string(DdosSettingsProtectionModeDisabled), + string(DdosSettingsProtectionModeEnabled), + string(DdosSettingsProtectionModeVirtualNetworkInherited), + } +} + +func (s *DdosSettingsProtectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDdosSettingsProtectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDdosSettingsProtectionMode(input string) (*DdosSettingsProtectionMode, error) { + vals := map[string]DdosSettingsProtectionMode{ + "disabled": DdosSettingsProtectionModeDisabled, + "enabled": DdosSettingsProtectionModeEnabled, + "virtualnetworkinherited": DdosSettingsProtectionModeVirtualNetworkInherited, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DdosSettingsProtectionMode(input) + return &out, nil +} + +type DeleteOptions string + +const ( + DeleteOptionsDelete DeleteOptions = "Delete" + DeleteOptionsDetach DeleteOptions = "Detach" +) + +func PossibleValuesForDeleteOptions() []string { + return []string{ + string(DeleteOptionsDelete), + string(DeleteOptionsDetach), + } +} + +func (s *DeleteOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteOptions(input string) (*DeleteOptions, error) { + vals := map[string]DeleteOptions{ + "delete": DeleteOptionsDelete, + "detach": DeleteOptionsDetach, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteOptions(input) + return &out, nil +} + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelInterfaceType string + +const ( + GatewayLoadBalancerTunnelInterfaceTypeExternal GatewayLoadBalancerTunnelInterfaceType = "External" + GatewayLoadBalancerTunnelInterfaceTypeInternal GatewayLoadBalancerTunnelInterfaceType = "Internal" + GatewayLoadBalancerTunnelInterfaceTypeNone GatewayLoadBalancerTunnelInterfaceType = "None" +) + +func PossibleValuesForGatewayLoadBalancerTunnelInterfaceType() []string { + return []string{ + string(GatewayLoadBalancerTunnelInterfaceTypeExternal), + string(GatewayLoadBalancerTunnelInterfaceTypeInternal), + string(GatewayLoadBalancerTunnelInterfaceTypeNone), + } +} + +func (s *GatewayLoadBalancerTunnelInterfaceType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelInterfaceType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelInterfaceType(input string) (*GatewayLoadBalancerTunnelInterfaceType, error) { + vals := map[string]GatewayLoadBalancerTunnelInterfaceType{ + "external": GatewayLoadBalancerTunnelInterfaceTypeExternal, + "internal": GatewayLoadBalancerTunnelInterfaceTypeInternal, + "none": GatewayLoadBalancerTunnelInterfaceTypeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelInterfaceType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelProtocol string + +const ( + GatewayLoadBalancerTunnelProtocolNative GatewayLoadBalancerTunnelProtocol = "Native" + GatewayLoadBalancerTunnelProtocolNone GatewayLoadBalancerTunnelProtocol = "None" + GatewayLoadBalancerTunnelProtocolVXLAN GatewayLoadBalancerTunnelProtocol = "VXLAN" +) + +func PossibleValuesForGatewayLoadBalancerTunnelProtocol() []string { + return []string{ + string(GatewayLoadBalancerTunnelProtocolNative), + string(GatewayLoadBalancerTunnelProtocolNone), + string(GatewayLoadBalancerTunnelProtocolVXLAN), + } +} + +func (s *GatewayLoadBalancerTunnelProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelProtocol(input string) (*GatewayLoadBalancerTunnelProtocol, error) { + vals := map[string]GatewayLoadBalancerTunnelProtocol{ + "native": GatewayLoadBalancerTunnelProtocolNative, + "none": GatewayLoadBalancerTunnelProtocolNone, + "vxlan": GatewayLoadBalancerTunnelProtocolVXLAN, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelProtocol(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} + +type LoadBalancerBackendAddressAdminState string + +const ( + LoadBalancerBackendAddressAdminStateDown LoadBalancerBackendAddressAdminState = "Down" + LoadBalancerBackendAddressAdminStateNone LoadBalancerBackendAddressAdminState = "None" + LoadBalancerBackendAddressAdminStateUp LoadBalancerBackendAddressAdminState = "Up" +) + +func PossibleValuesForLoadBalancerBackendAddressAdminState() []string { + return []string{ + string(LoadBalancerBackendAddressAdminStateDown), + string(LoadBalancerBackendAddressAdminStateNone), + string(LoadBalancerBackendAddressAdminStateUp), + } +} + +func (s *LoadBalancerBackendAddressAdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerBackendAddressAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerBackendAddressAdminState(input string) (*LoadBalancerBackendAddressAdminState, error) { + vals := map[string]LoadBalancerBackendAddressAdminState{ + "down": LoadBalancerBackendAddressAdminStateDown, + "none": LoadBalancerBackendAddressAdminStateNone, + "up": LoadBalancerBackendAddressAdminStateUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerBackendAddressAdminState(input) + return &out, nil +} + +type NatGatewaySkuName string + +const ( + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +func PossibleValuesForNatGatewaySkuName() []string { + return []string{ + string(NatGatewaySkuNameStandard), + } +} + +func (s *NatGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNatGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNatGatewaySkuName(input string) (*NatGatewaySkuName, error) { + vals := map[string]NatGatewaySkuName{ + "standard": NatGatewaySkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NatGatewaySkuName(input) + return &out, nil +} + +type NetworkInterfaceAuxiliaryMode string + +const ( + NetworkInterfaceAuxiliaryModeAcceleratedConnections NetworkInterfaceAuxiliaryMode = "AcceleratedConnections" + NetworkInterfaceAuxiliaryModeFloating NetworkInterfaceAuxiliaryMode = "Floating" + NetworkInterfaceAuxiliaryModeMaxConnections NetworkInterfaceAuxiliaryMode = "MaxConnections" + NetworkInterfaceAuxiliaryModeNone NetworkInterfaceAuxiliaryMode = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliaryMode() []string { + return []string{ + string(NetworkInterfaceAuxiliaryModeAcceleratedConnections), + string(NetworkInterfaceAuxiliaryModeFloating), + string(NetworkInterfaceAuxiliaryModeMaxConnections), + string(NetworkInterfaceAuxiliaryModeNone), + } +} + +func (s *NetworkInterfaceAuxiliaryMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliaryMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliaryMode(input string) (*NetworkInterfaceAuxiliaryMode, error) { + vals := map[string]NetworkInterfaceAuxiliaryMode{ + "acceleratedconnections": NetworkInterfaceAuxiliaryModeAcceleratedConnections, + "floating": NetworkInterfaceAuxiliaryModeFloating, + "maxconnections": NetworkInterfaceAuxiliaryModeMaxConnections, + "none": NetworkInterfaceAuxiliaryModeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliaryMode(input) + return &out, nil +} + +type NetworkInterfaceAuxiliarySku string + +const ( + NetworkInterfaceAuxiliarySkuAEight NetworkInterfaceAuxiliarySku = "A8" + NetworkInterfaceAuxiliarySkuAFour NetworkInterfaceAuxiliarySku = "A4" + NetworkInterfaceAuxiliarySkuAOne NetworkInterfaceAuxiliarySku = "A1" + NetworkInterfaceAuxiliarySkuATwo NetworkInterfaceAuxiliarySku = "A2" + NetworkInterfaceAuxiliarySkuNone NetworkInterfaceAuxiliarySku = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliarySku() []string { + return []string{ + string(NetworkInterfaceAuxiliarySkuAEight), + string(NetworkInterfaceAuxiliarySkuAFour), + string(NetworkInterfaceAuxiliarySkuAOne), + string(NetworkInterfaceAuxiliarySkuATwo), + string(NetworkInterfaceAuxiliarySkuNone), + } +} + +func (s *NetworkInterfaceAuxiliarySku) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliarySku(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliarySku(input string) (*NetworkInterfaceAuxiliarySku, error) { + vals := map[string]NetworkInterfaceAuxiliarySku{ + "a8": NetworkInterfaceAuxiliarySkuAEight, + "a4": NetworkInterfaceAuxiliarySkuAFour, + "a1": NetworkInterfaceAuxiliarySkuAOne, + "a2": NetworkInterfaceAuxiliarySkuATwo, + "none": NetworkInterfaceAuxiliarySkuNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliarySku(input) + return &out, nil +} + +type NetworkInterfaceMigrationPhase string + +const ( + NetworkInterfaceMigrationPhaseAbort NetworkInterfaceMigrationPhase = "Abort" + NetworkInterfaceMigrationPhaseCommit NetworkInterfaceMigrationPhase = "Commit" + NetworkInterfaceMigrationPhaseCommitted NetworkInterfaceMigrationPhase = "Committed" + NetworkInterfaceMigrationPhaseNone NetworkInterfaceMigrationPhase = "None" + NetworkInterfaceMigrationPhasePrepare NetworkInterfaceMigrationPhase = "Prepare" +) + +func PossibleValuesForNetworkInterfaceMigrationPhase() []string { + return []string{ + string(NetworkInterfaceMigrationPhaseAbort), + string(NetworkInterfaceMigrationPhaseCommit), + string(NetworkInterfaceMigrationPhaseCommitted), + string(NetworkInterfaceMigrationPhaseNone), + string(NetworkInterfaceMigrationPhasePrepare), + } +} + +func (s *NetworkInterfaceMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceMigrationPhase(input string) (*NetworkInterfaceMigrationPhase, error) { + vals := map[string]NetworkInterfaceMigrationPhase{ + "abort": NetworkInterfaceMigrationPhaseAbort, + "commit": NetworkInterfaceMigrationPhaseCommit, + "committed": NetworkInterfaceMigrationPhaseCommitted, + "none": NetworkInterfaceMigrationPhaseNone, + "prepare": NetworkInterfaceMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceMigrationPhase(input) + return &out, nil +} + +type NetworkInterfaceNicType string + +const ( + NetworkInterfaceNicTypeElastic NetworkInterfaceNicType = "Elastic" + NetworkInterfaceNicTypeStandard NetworkInterfaceNicType = "Standard" +) + +func PossibleValuesForNetworkInterfaceNicType() []string { + return []string{ + string(NetworkInterfaceNicTypeElastic), + string(NetworkInterfaceNicTypeStandard), + } +} + +func (s *NetworkInterfaceNicType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceNicType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceNicType(input string) (*NetworkInterfaceNicType, error) { + vals := map[string]NetworkInterfaceNicType{ + "elastic": NetworkInterfaceNicTypeElastic, + "standard": NetworkInterfaceNicTypeStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceNicType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type PublicIPAddressDnsSettingsDomainNameLabelScope string + +const ( + PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "NoReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "ResourceGroupReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "SubscriptionReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "TenantReuse" +) + +func PossibleValuesForPublicIPAddressDnsSettingsDomainNameLabelScope() []string { + return []string{ + string(PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse), + } +} + +func (s *PublicIPAddressDnsSettingsDomainNameLabelScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressDnsSettingsDomainNameLabelScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressDnsSettingsDomainNameLabelScope(input string) (*PublicIPAddressDnsSettingsDomainNameLabelScope, error) { + vals := map[string]PublicIPAddressDnsSettingsDomainNameLabelScope{ + "noreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse, + "resourcegroupreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse, + "subscriptionreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse, + "tenantreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressDnsSettingsDomainNameLabelScope(input) + return &out, nil +} + +type PublicIPAddressMigrationPhase string + +const ( + PublicIPAddressMigrationPhaseAbort PublicIPAddressMigrationPhase = "Abort" + PublicIPAddressMigrationPhaseCommit PublicIPAddressMigrationPhase = "Commit" + PublicIPAddressMigrationPhaseCommitted PublicIPAddressMigrationPhase = "Committed" + PublicIPAddressMigrationPhaseNone PublicIPAddressMigrationPhase = "None" + PublicIPAddressMigrationPhasePrepare PublicIPAddressMigrationPhase = "Prepare" +) + +func PossibleValuesForPublicIPAddressMigrationPhase() []string { + return []string{ + string(PublicIPAddressMigrationPhaseAbort), + string(PublicIPAddressMigrationPhaseCommit), + string(PublicIPAddressMigrationPhaseCommitted), + string(PublicIPAddressMigrationPhaseNone), + string(PublicIPAddressMigrationPhasePrepare), + } +} + +func (s *PublicIPAddressMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressMigrationPhase(input string) (*PublicIPAddressMigrationPhase, error) { + vals := map[string]PublicIPAddressMigrationPhase{ + "abort": PublicIPAddressMigrationPhaseAbort, + "commit": PublicIPAddressMigrationPhaseCommit, + "committed": PublicIPAddressMigrationPhaseCommitted, + "none": PublicIPAddressMigrationPhaseNone, + "prepare": PublicIPAddressMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressMigrationPhase(input) + return &out, nil +} + +type PublicIPAddressSkuName string + +const ( + PublicIPAddressSkuNameBasic PublicIPAddressSkuName = "Basic" + PublicIPAddressSkuNameStandard PublicIPAddressSkuName = "Standard" +) + +func PossibleValuesForPublicIPAddressSkuName() []string { + return []string{ + string(PublicIPAddressSkuNameBasic), + string(PublicIPAddressSkuNameStandard), + } +} + +func (s *PublicIPAddressSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuName(input string) (*PublicIPAddressSkuName, error) { + vals := map[string]PublicIPAddressSkuName{ + "basic": PublicIPAddressSkuNameBasic, + "standard": PublicIPAddressSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuName(input) + return &out, nil +} + +type PublicIPAddressSkuTier string + +const ( + PublicIPAddressSkuTierGlobal PublicIPAddressSkuTier = "Global" + PublicIPAddressSkuTierRegional PublicIPAddressSkuTier = "Regional" +) + +func PossibleValuesForPublicIPAddressSkuTier() []string { + return []string{ + string(PublicIPAddressSkuTierGlobal), + string(PublicIPAddressSkuTierRegional), + } +} + +func (s *PublicIPAddressSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuTier(input string) (*PublicIPAddressSkuTier, error) { + vals := map[string]PublicIPAddressSkuTier{ + "global": PublicIPAddressSkuTierGlobal, + "regional": PublicIPAddressSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuTier(input) + return &out, nil +} + +type RouteNextHopType string + +const ( + RouteNextHopTypeInternet RouteNextHopType = "Internet" + RouteNextHopTypeNone RouteNextHopType = "None" + RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" + RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" + RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" +) + +func PossibleValuesForRouteNextHopType() []string { + return []string{ + string(RouteNextHopTypeInternet), + string(RouteNextHopTypeNone), + string(RouteNextHopTypeVirtualAppliance), + string(RouteNextHopTypeVirtualNetworkGateway), + string(RouteNextHopTypeVnetLocal), + } +} + +func (s *RouteNextHopType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteNextHopType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteNextHopType(input string) (*RouteNextHopType, error) { + vals := map[string]RouteNextHopType{ + "internet": RouteNextHopTypeInternet, + "none": RouteNextHopTypeNone, + "virtualappliance": RouteNextHopTypeVirtualAppliance, + "virtualnetworkgateway": RouteNextHopTypeVirtualNetworkGateway, + "vnetlocal": RouteNextHopTypeVnetLocal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteNextHopType(input) + return &out, nil +} + +type SecurityRuleAccess string + +const ( + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +func PossibleValuesForSecurityRuleAccess() []string { + return []string{ + string(SecurityRuleAccessAllow), + string(SecurityRuleAccessDeny), + } +} + +func (s *SecurityRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleAccess(input string) (*SecurityRuleAccess, error) { + vals := map[string]SecurityRuleAccess{ + "allow": SecurityRuleAccessAllow, + "deny": SecurityRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleAccess(input) + return &out, nil +} + +type SecurityRuleDirection string + +const ( + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityRuleDirection() []string { + return []string{ + string(SecurityRuleDirectionInbound), + string(SecurityRuleDirectionOutbound), + } +} + +func (s *SecurityRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleDirection(input string) (*SecurityRuleDirection, error) { + vals := map[string]SecurityRuleDirection{ + "inbound": SecurityRuleDirectionInbound, + "outbound": SecurityRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleDirection(input) + return &out, nil +} + +type SecurityRuleProtocol string + +const ( + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + SecurityRuleProtocolAny SecurityRuleProtocol = "*" + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + SecurityRuleProtocolTcp SecurityRuleProtocol = "Tcp" + SecurityRuleProtocolUdp SecurityRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityRuleProtocol() []string { + return []string{ + string(SecurityRuleProtocolAh), + string(SecurityRuleProtocolAny), + string(SecurityRuleProtocolEsp), + string(SecurityRuleProtocolIcmp), + string(SecurityRuleProtocolTcp), + string(SecurityRuleProtocolUdp), + } +} + +func (s *SecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleProtocol(input string) (*SecurityRuleProtocol, error) { + vals := map[string]SecurityRuleProtocol{ + "ah": SecurityRuleProtocolAh, + "*": SecurityRuleProtocolAny, + "esp": SecurityRuleProtocolEsp, + "icmp": SecurityRuleProtocolIcmp, + "tcp": SecurityRuleProtocolTcp, + "udp": SecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleProtocol(input) + return &out, nil +} + +type SharingScope string + +const ( + SharingScopeDelegatedServices SharingScope = "DelegatedServices" + SharingScopeTenant SharingScope = "Tenant" +) + +func PossibleValuesForSharingScope() []string { + return []string{ + string(SharingScopeDelegatedServices), + string(SharingScopeTenant), + } +} + +func (s *SharingScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSharingScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSharingScope(input string) (*SharingScope, error) { + vals := map[string]SharingScope{ + "delegatedservices": SharingScopeDelegatedServices, + "tenant": SharingScopeTenant, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SharingScope(input) + return &out, nil +} + +type SyncMode string + +const ( + SyncModeAutomatic SyncMode = "Automatic" + SyncModeManual SyncMode = "Manual" +) + +func PossibleValuesForSyncMode() []string { + return []string{ + string(SyncModeAutomatic), + string(SyncModeManual), + } +} + +func (s *SyncMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSyncMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSyncMode(input string) (*SyncMode, error) { + vals := map[string]SyncMode{ + "automatic": SyncModeAutomatic, + "manual": SyncModeManual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SyncMode(input) + return &out, nil +} + +type TransportProtocol string + +const ( + TransportProtocolAll TransportProtocol = "All" + TransportProtocolTcp TransportProtocol = "Tcp" + TransportProtocolUdp TransportProtocol = "Udp" +) + +func PossibleValuesForTransportProtocol() []string { + return []string{ + string(TransportProtocolAll), + string(TransportProtocolTcp), + string(TransportProtocolUdp), + } +} + +func (s *TransportProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseTransportProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseTransportProtocol(input string) (*TransportProtocol, error) { + vals := map[string]TransportProtocol{ + "all": TransportProtocolAll, + "tcp": TransportProtocolTcp, + "udp": TransportProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := TransportProtocol(input) + return &out, nil +} + +type VirtualNetworkPrivateEndpointNetworkPolicies string + +const ( + VirtualNetworkPrivateEndpointNetworkPoliciesDisabled VirtualNetworkPrivateEndpointNetworkPolicies = "Disabled" + VirtualNetworkPrivateEndpointNetworkPoliciesEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "Enabled" + VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "NetworkSecurityGroupEnabled" + VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "RouteTableEnabled" +) + +func PossibleValuesForVirtualNetworkPrivateEndpointNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateEndpointNetworkPoliciesDisabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled), + } +} + +func (s *VirtualNetworkPrivateEndpointNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateEndpointNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateEndpointNetworkPolicies(input string) (*VirtualNetworkPrivateEndpointNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateEndpointNetworkPolicies{ + "disabled": VirtualNetworkPrivateEndpointNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateEndpointNetworkPoliciesEnabled, + "networksecuritygroupenabled": VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled, + "routetableenabled": VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateEndpointNetworkPolicies(input) + return &out, nil +} + +type VirtualNetworkPrivateLinkServiceNetworkPolicies string + +const ( + VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Disabled" + VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Enabled" +) + +func PossibleValuesForVirtualNetworkPrivateLinkServiceNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled), + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled), + } +} + +func (s *VirtualNetworkPrivateLinkServiceNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateLinkServiceNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateLinkServiceNetworkPolicies(input string) (*VirtualNetworkPrivateLinkServiceNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateLinkServiceNetworkPolicies{ + "disabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateLinkServiceNetworkPolicies(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/id_virtualnetworktap.go b/resource-manager/network/2024-01-01/virtualnetworktap/id_virtualnetworktap.go new file mode 100644 index 00000000000..5bf0638a304 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/id_virtualnetworktap.go @@ -0,0 +1,130 @@ +package virtualnetworktap + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&VirtualNetworkTapId{}) +} + +var _ resourceids.ResourceId = &VirtualNetworkTapId{} + +// VirtualNetworkTapId is a struct representing the Resource ID for a Virtual Network Tap +type VirtualNetworkTapId struct { + SubscriptionId string + ResourceGroupName string + VirtualNetworkTapName string +} + +// NewVirtualNetworkTapID returns a new VirtualNetworkTapId struct +func NewVirtualNetworkTapID(subscriptionId string, resourceGroupName string, virtualNetworkTapName string) VirtualNetworkTapId { + return VirtualNetworkTapId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VirtualNetworkTapName: virtualNetworkTapName, + } +} + +// ParseVirtualNetworkTapID parses 'input' into a VirtualNetworkTapId +func ParseVirtualNetworkTapID(input string) (*VirtualNetworkTapId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualNetworkTapId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualNetworkTapId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseVirtualNetworkTapIDInsensitively parses 'input' case-insensitively into a VirtualNetworkTapId +// note: this method should only be used for API response data and not user input +func ParseVirtualNetworkTapIDInsensitively(input string) (*VirtualNetworkTapId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualNetworkTapId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualNetworkTapId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *VirtualNetworkTapId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VirtualNetworkTapName, ok = input.Parsed["virtualNetworkTapName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "virtualNetworkTapName", input) + } + + return nil +} + +// ValidateVirtualNetworkTapID checks that 'input' can be parsed as a Virtual Network Tap ID +func ValidateVirtualNetworkTapID(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 := ParseVirtualNetworkTapID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Virtual Network Tap ID +func (id VirtualNetworkTapId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/virtualNetworkTaps/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VirtualNetworkTapName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Virtual Network Tap ID +func (id VirtualNetworkTapId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVirtualNetworkTaps", "virtualNetworkTaps", "virtualNetworkTaps"), + resourceids.UserSpecifiedSegment("virtualNetworkTapName", "virtualNetworkTapValue"), + } +} + +// String returns a human-readable description of this Virtual Network Tap ID +func (id VirtualNetworkTapId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Virtual Network Tap Name: %q", id.VirtualNetworkTapName), + } + return fmt.Sprintf("Virtual Network Tap (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/id_virtualnetworktap_test.go b/resource-manager/network/2024-01-01/virtualnetworktap/id_virtualnetworktap_test.go new file mode 100644 index 00000000000..db63499cc59 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/id_virtualnetworktap_test.go @@ -0,0 +1,282 @@ +package virtualnetworktap + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &VirtualNetworkTapId{} + +func TestNewVirtualNetworkTapID(t *testing.T) { + id := NewVirtualNetworkTapID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkTapValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VirtualNetworkTapName != "virtualNetworkTapValue" { + t.Fatalf("Expected %q but got %q for Segment 'VirtualNetworkTapName'", id.VirtualNetworkTapName, "virtualNetworkTapValue") + } +} + +func TestFormatVirtualNetworkTapID(t *testing.T) { + actual := NewVirtualNetworkTapID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualNetworkTapValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkTaps/virtualNetworkTapValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseVirtualNetworkTapID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualNetworkTapId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkTaps", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkTaps/virtualNetworkTapValue", + Expected: &VirtualNetworkTapId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualNetworkTapName: "virtualNetworkTapValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkTaps/virtualNetworkTapValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualNetworkTapID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualNetworkTapName != v.Expected.VirtualNetworkTapName { + t.Fatalf("Expected %q but got %q for VirtualNetworkTapName", v.Expected.VirtualNetworkTapName, actual.VirtualNetworkTapName) + } + + } +} + +func TestParseVirtualNetworkTapIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualNetworkTapId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkTaps", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlNeTwOrKtApS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkTaps/virtualNetworkTapValue", + Expected: &VirtualNetworkTapId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualNetworkTapName: "virtualNetworkTapValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualNetworkTaps/virtualNetworkTapValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlNeTwOrKtApS/vIrTuAlNeTwOrKtApVaLuE", + Expected: &VirtualNetworkTapId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VirtualNetworkTapName: "vIrTuAlNeTwOrKtApVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlNeTwOrKtApS/vIrTuAlNeTwOrKtApVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualNetworkTapIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualNetworkTapName != v.Expected.VirtualNetworkTapName { + t.Fatalf("Expected %q but got %q for VirtualNetworkTapName", v.Expected.VirtualNetworkTapName, actual.VirtualNetworkTapName) + } + + } +} + +func TestSegmentsForVirtualNetworkTapId(t *testing.T) { + segments := VirtualNetworkTapId{}.Segments() + if len(segments) == 0 { + t.Fatalf("VirtualNetworkTapId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/method_createorupdate.go b/resource-manager/network/2024-01-01/virtualnetworktap/method_createorupdate.go new file mode 100644 index 00000000000..9e0265a1971 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/method_createorupdate.go @@ -0,0 +1,75 @@ +package virtualnetworktap + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VirtualNetworkTap +} + +// CreateOrUpdate ... +func (c VirtualNetworkTapClient) CreateOrUpdate(ctx context.Context, id VirtualNetworkTapId, input VirtualNetworkTap) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c VirtualNetworkTapClient) CreateOrUpdateThenPoll(ctx context.Context, id VirtualNetworkTapId, input VirtualNetworkTap) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/method_delete.go b/resource-manager/network/2024-01-01/virtualnetworktap/method_delete.go new file mode 100644 index 00000000000..93b4ec0c489 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/method_delete.go @@ -0,0 +1,71 @@ +package virtualnetworktap + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c VirtualNetworkTapClient) Delete(ctx context.Context, id VirtualNetworkTapId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c VirtualNetworkTapClient) DeleteThenPoll(ctx context.Context, id VirtualNetworkTapId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/method_get.go b/resource-manager/network/2024-01-01/virtualnetworktap/method_get.go new file mode 100644 index 00000000000..7d8ef7767ee --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/method_get.go @@ -0,0 +1,54 @@ +package virtualnetworktap + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VirtualNetworkTap +} + +// Get ... +func (c VirtualNetworkTapClient) Get(ctx context.Context, id VirtualNetworkTapId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VirtualNetworkTap + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/method_updatetags.go b/resource-manager/network/2024-01-01/virtualnetworktap/method_updatetags.go new file mode 100644 index 00000000000..2079b8bdf80 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/method_updatetags.go @@ -0,0 +1,58 @@ +package virtualnetworktap + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VirtualNetworkTap +} + +// UpdateTags ... +func (c VirtualNetworkTapClient) UpdateTags(ctx context.Context, id VirtualNetworkTapId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VirtualNetworkTap + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_applicationgatewaybackendaddress.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_applicationgatewaybackendaddress.go new file mode 100644 index 00000000000..db62a91aeb1 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_applicationgatewaybackendaddress.go @@ -0,0 +1,9 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddress struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_applicationgatewaybackendaddresspool.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_applicationgatewaybackendaddresspool.go new file mode 100644 index 00000000000..a220744195a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_applicationgatewaybackendaddresspool.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_applicationgatewaybackendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_applicationgatewaybackendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..f1a5f708c1c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_applicationgatewaybackendaddresspoolpropertiesformat.go @@ -0,0 +1,10 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPoolPropertiesFormat struct { + BackendAddresses *[]ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"` + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_applicationgatewayipconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_applicationgatewayipconfiguration.go new file mode 100644 index 00000000000..e0dd6f54986 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_applicationgatewayipconfiguration.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_applicationgatewayipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_applicationgatewayipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..05e2cf6e7ff --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_applicationgatewayipconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..89fac6f865a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..dd34d207344 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_backendaddresspool.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_backendaddresspool.go new file mode 100644 index 00000000000..22fa8953303 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_backendaddresspool.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_backendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_backendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..6ac563af429 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_backendaddresspoolpropertiesformat.go @@ -0,0 +1,19 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPoolPropertiesFormat struct { + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + DrainPeriodInSeconds *int64 `json:"drainPeriodInSeconds,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancerBackendAddresses *[]LoadBalancerBackendAddress `json:"loadBalancerBackendAddresses,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + Location *string `json:"location,omitempty"` + OutboundRule *SubResource `json:"outboundRule,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SyncMode *SyncMode `json:"syncMode,omitempty"` + TunnelInterfaces *[]GatewayLoadBalancerTunnelInterface `json:"tunnelInterfaces,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_customdnsconfigpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_customdnsconfigpropertiesformat.go new file mode 100644 index 00000000000..d263c1b8649 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_customdnsconfigpropertiesformat.go @@ -0,0 +1,9 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomDnsConfigPropertiesFormat struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_ddossettings.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_ddossettings.go new file mode 100644 index 00000000000..934851a560f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_ddossettings.go @@ -0,0 +1,9 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettings struct { + DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"` + ProtectionMode *DdosSettingsProtectionMode `json:"protectionMode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_delegation.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_delegation.go new file mode 100644 index 00000000000..b98041c6409 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_delegation.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Delegation struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceDelegationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_flowlog.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_flowlog.go new file mode 100644 index 00000000000..d3c755b3dbf --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_flowlog.go @@ -0,0 +1,19 @@ +package virtualnetworktap + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLog struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FlowLogPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_flowlogformatparameters.go new file mode 100644 index 00000000000..05c5660bcab --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_flowlogpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_flowlogpropertiesformat.go new file mode 100644 index 00000000000..64eb8ac4566 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_flowlogpropertiesformat.go @@ -0,0 +1,15 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogPropertiesFormat struct { + Enabled *bool `json:"enabled,omitempty"` + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` + TargetResourceGuid *string `json:"targetResourceGuid,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_frontendipconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_frontendipconfiguration.go new file mode 100644 index 00000000000..8e718fbb787 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_frontendipconfiguration.go @@ -0,0 +1,17 @@ +package virtualnetworktap + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_frontendipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_frontendipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..df238cbcfd3 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_frontendipconfigurationpropertiesformat.go @@ -0,0 +1,19 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfigurationPropertiesFormat struct { + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + InboundNatPools *[]SubResource `json:"inboundNatPools,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_gatewayloadbalancertunnelinterface.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_gatewayloadbalancertunnelinterface.go new file mode 100644 index 00000000000..3301ab1a1c7 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_gatewayloadbalancertunnelinterface.go @@ -0,0 +1,11 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayLoadBalancerTunnelInterface struct { + Identifier *int64 `json:"identifier,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *GatewayLoadBalancerTunnelProtocol `json:"protocol,omitempty"` + Type *GatewayLoadBalancerTunnelInterfaceType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_inboundnatrule.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_inboundnatrule.go new file mode 100644 index 00000000000..7c4fefd00fe --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_inboundnatrule.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundNatRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_inboundnatrulepropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_inboundnatrulepropertiesformat.go new file mode 100644 index 00000000000..9562bb00429 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_inboundnatrulepropertiesformat.go @@ -0,0 +1,19 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendIPConfiguration *NetworkInterfaceIPConfiguration `json:"backendIPConfiguration,omitempty"` + BackendPort *int64 `json:"backendPort,omitempty"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + FrontendPortRangeEnd *int64 `json:"frontendPortRangeEnd,omitempty"` + FrontendPortRangeStart *int64 `json:"frontendPortRangeStart,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol *TransportProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_ipconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_ipconfiguration.go new file mode 100644 index 00000000000..072921c15aa --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_ipconfiguration.go @@ -0,0 +1,11 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_ipconfigurationprofile.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_ipconfigurationprofile.go new file mode 100644 index 00000000000..319c9ec5ee9 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_ipconfigurationprofile.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationProfilePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_ipconfigurationprofilepropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_ipconfigurationprofilepropertiesformat.go new file mode 100644 index 00000000000..adf0a28fb73 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_ipconfigurationprofilepropertiesformat.go @@ -0,0 +1,9 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfilePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_ipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_ipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..14c8a64a2a2 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_ipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_iptag.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_iptag.go new file mode 100644 index 00000000000..85d10556d1c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_iptag.go @@ -0,0 +1,9 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPTag struct { + IPTagType *string `json:"ipTagType,omitempty"` + Tag *string `json:"tag,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_loadbalancerbackendaddress.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_loadbalancerbackendaddress.go new file mode 100644 index 00000000000..bb0a0c328c1 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_loadbalancerbackendaddress.go @@ -0,0 +1,9 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddress struct { + Name *string `json:"name,omitempty"` + Properties *LoadBalancerBackendAddressPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_loadbalancerbackendaddresspropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_loadbalancerbackendaddresspropertiesformat.go new file mode 100644 index 00000000000..b16ba8335ae --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_loadbalancerbackendaddresspropertiesformat.go @@ -0,0 +1,14 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPropertiesFormat struct { + AdminState *LoadBalancerBackendAddressAdminState `json:"adminState,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + InboundNatRulesPortMapping *[]NatRulePortMapping `json:"inboundNatRulesPortMapping,omitempty"` + LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIPConfiguration,omitempty"` + NetworkInterfaceIPConfiguration *SubResource `json:"networkInterfaceIPConfiguration,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_natgateway.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_natgateway.go new file mode 100644 index 00000000000..ff0008c8a9e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_natgateway.go @@ -0,0 +1,20 @@ +package virtualnetworktap + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"` + Sku *NatGatewaySku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_natgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_natgatewaypropertiesformat.go new file mode 100644 index 00000000000..314c102eee6 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_natgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayPropertiesFormat struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]SubResource `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_natgatewaysku.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_natgatewaysku.go new file mode 100644 index 00000000000..efd87c92e07 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_natgatewaysku.go @@ -0,0 +1,8 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySku struct { + Name *NatGatewaySkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_natruleportmapping.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_natruleportmapping.go new file mode 100644 index 00000000000..9c675767782 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_natruleportmapping.go @@ -0,0 +1,10 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulePortMapping struct { + BackendPort *int64 `json:"backendPort,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + InboundNatRuleName *string `json:"inboundNatRuleName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterface.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterface.go new file mode 100644 index 00000000000..90bd182032d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterface.go @@ -0,0 +1,19 @@ +package virtualnetworktap + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterface struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfacePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterfacednssettings.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterfacednssettings.go new file mode 100644 index 00000000000..8f7f5c9ab69 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterfacednssettings.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceDnsSettings struct { + AppliedDnsServers *[]string `json:"appliedDnsServers,omitempty"` + DnsServers *[]string `json:"dnsServers,omitempty"` + InternalDnsNameLabel *string `json:"internalDnsNameLabel,omitempty"` + InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty"` + InternalFqdn *string `json:"internalFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterfaceipconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterfaceipconfiguration.go new file mode 100644 index 00000000000..420ea20f4d2 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterfaceipconfiguration.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go new file mode 100644 index 00000000000..e2d0d046dd7 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go @@ -0,0 +1,10 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties struct { + Fqdns *[]string `json:"fqdns,omitempty"` + GroupId *string `json:"groupId,omitempty"` + RequiredMemberName *string `json:"requiredMemberName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterfaceipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterfaceipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..133846da8a3 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterfaceipconfigurationpropertiesformat.go @@ -0,0 +1,22 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPropertiesFormat struct { + ApplicationGatewayBackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"applicationGatewayBackendAddressPools,omitempty"` + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + LoadBalancerBackendAddressPools *[]BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"` + LoadBalancerInboundNatRules *[]InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressPrefixLength *int64 `json:"privateIPAddressPrefixLength,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + PrivateLinkConnectionProperties *NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties `json:"privateLinkConnectionProperties,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` + VirtualNetworkTaps *[]VirtualNetworkTap `json:"virtualNetworkTaps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterfacepropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterfacepropertiesformat.go new file mode 100644 index 00000000000..0428a2c793c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterfacepropertiesformat.go @@ -0,0 +1,29 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfacePropertiesFormat struct { + AuxiliaryMode *NetworkInterfaceAuxiliaryMode `json:"auxiliaryMode,omitempty"` + AuxiliarySku *NetworkInterfaceAuxiliarySku `json:"auxiliarySku,omitempty"` + DisableTcpStateTracking *bool `json:"disableTcpStateTracking,omitempty"` + DnsSettings *NetworkInterfaceDnsSettings `json:"dnsSettings,omitempty"` + DscpConfiguration *SubResource `json:"dscpConfiguration,omitempty"` + EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"` + EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"` + HostedWorkloads *[]string `json:"hostedWorkloads,omitempty"` + IPConfigurations *[]NetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + MacAddress *string `json:"macAddress,omitempty"` + MigrationPhase *NetworkInterfaceMigrationPhase `json:"migrationPhase,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + NicType *NetworkInterfaceNicType `json:"nicType,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkService *PrivateLinkService `json:"privateLinkService,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + TapConfigurations *[]NetworkInterfaceTapConfiguration `json:"tapConfigurations,omitempty"` + VirtualMachine *SubResource `json:"virtualMachine,omitempty"` + VnetEncryptionSupported *bool `json:"vnetEncryptionSupported,omitempty"` + WorkloadType *string `json:"workloadType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterfacetapconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterfacetapconfiguration.go new file mode 100644 index 00000000000..1514177f60e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterfacetapconfiguration.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceTapConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterfacetapconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterfacetapconfigurationpropertiesformat.go new file mode 100644 index 00000000000..4d5181920b1 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_networkinterfacetapconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualNetworkTap *VirtualNetworkTap `json:"virtualNetworkTap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_networksecuritygroup.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_networksecuritygroup.go new file mode 100644 index 00000000000..f1f880186f1 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_networksecuritygroup.go @@ -0,0 +1,14 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_networksecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_networksecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..c0a2565b3a0 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_networksecuritygrouppropertiesformat.go @@ -0,0 +1,15 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupPropertiesFormat struct { + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + FlowLogs *[]FlowLog `json:"flowLogs,omitempty"` + FlushConnection *bool `json:"flushConnection,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_privateendpoint.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_privateendpoint.go new file mode 100644 index 00000000000..18177d11a3e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_privateendpoint.go @@ -0,0 +1,19 @@ +package virtualnetworktap + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpoint struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_privateendpointconnection.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_privateendpointconnection.go new file mode 100644 index 00000000000..3a5764483c9 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_privateendpointconnection.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_privateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_privateendpointconnectionproperties.go new file mode 100644 index 00000000000..f6119badaa5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_privateendpointconnectionproperties.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateEndpointLocation *string `json:"privateEndpointLocation,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_privateendpointipconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_privateendpointipconfiguration.go new file mode 100644 index 00000000000..35ffb6cda11 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_privateendpointipconfiguration.go @@ -0,0 +1,11 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_privateendpointipconfigurationproperties.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_privateendpointipconfigurationproperties.go new file mode 100644 index 00000000000..8e362a6d1b5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_privateendpointipconfigurationproperties.go @@ -0,0 +1,10 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfigurationProperties struct { + GroupId *string `json:"groupId,omitempty"` + MemberName *string `json:"memberName,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_privateendpointproperties.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_privateendpointproperties.go new file mode 100644 index 00000000000..8d42714c80d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_privateendpointproperties.go @@ -0,0 +1,16 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointProperties struct { + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + CustomDnsConfigs *[]CustomDnsConfigPropertiesFormat `json:"customDnsConfigs,omitempty"` + CustomNetworkInterfaceName *string `json:"customNetworkInterfaceName,omitempty"` + IPConfigurations *[]PrivateEndpointIPConfiguration `json:"ipConfigurations,omitempty"` + ManualPrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"manualPrivateLinkServiceConnections,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"privateLinkServiceConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_privatelinkservice.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_privatelinkservice.go new file mode 100644 index 00000000000..42d87ebbbcb --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_privatelinkservice.go @@ -0,0 +1,19 @@ +package virtualnetworktap + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkService struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_privatelinkserviceconnection.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_privatelinkserviceconnection.go new file mode 100644 index 00000000000..6218ca9e0c5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_privatelinkserviceconnection.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_privatelinkserviceconnectionproperties.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_privatelinkserviceconnectionproperties.go new file mode 100644 index 00000000000..bb689f2425d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_privatelinkserviceconnectionproperties.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionProperties struct { + GroupIds *[]string `json:"groupIds,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + PrivateLinkServiceId *string `json:"privateLinkServiceId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestMessage *string `json:"requestMessage,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_privatelinkserviceconnectionstate.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_privatelinkserviceconnectionstate.go new file mode 100644 index 00000000000..4510ba8bea7 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_privatelinkserviceconnectionstate.go @@ -0,0 +1,10 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionState struct { + ActionsRequired *string `json:"actionsRequired,omitempty"` + Description *string `json:"description,omitempty"` + Status *string `json:"status,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_privatelinkserviceipconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_privatelinkserviceipconfiguration.go new file mode 100644 index 00000000000..7f7ebc0d7f8 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_privatelinkserviceipconfiguration.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_privatelinkserviceipconfigurationproperties.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_privatelinkserviceipconfigurationproperties.go new file mode 100644 index 00000000000..9e874822a6b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_privatelinkserviceipconfigurationproperties.go @@ -0,0 +1,13 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_privatelinkserviceproperties.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_privatelinkserviceproperties.go new file mode 100644 index 00000000000..cbafd8f4967 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_privatelinkserviceproperties.go @@ -0,0 +1,17 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceProperties struct { + Alias *string `json:"alias,omitempty"` + AutoApproval *ResourceSet `json:"autoApproval,omitempty"` + EnableProxyProtocol *bool `json:"enableProxyProtocol,omitempty"` + Fqdns *[]string `json:"fqdns,omitempty"` + IPConfigurations *[]PrivateLinkServiceIPConfiguration `json:"ipConfigurations,omitempty"` + LoadBalancerFrontendIPConfigurations *[]FrontendIPConfiguration `json:"loadBalancerFrontendIpConfigurations,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Visibility *ResourceSet `json:"visibility,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_publicipaddress.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_publicipaddress.go new file mode 100644 index 00000000000..5059f6b2c6b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_publicipaddress.go @@ -0,0 +1,22 @@ +package virtualnetworktap + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddress struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PublicIPAddressPropertiesFormat `json:"properties,omitempty"` + Sku *PublicIPAddressSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_publicipaddressdnssettings.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_publicipaddressdnssettings.go new file mode 100644 index 00000000000..5e531cfaa59 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_publicipaddressdnssettings.go @@ -0,0 +1,11 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressDnsSettings struct { + DomainNameLabel *string `json:"domainNameLabel,omitempty"` + DomainNameLabelScope *PublicIPAddressDnsSettingsDomainNameLabelScope `json:"domainNameLabelScope,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + ReverseFqdn *string `json:"reverseFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_publicipaddresspropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_publicipaddresspropertiesformat.go new file mode 100644 index 00000000000..b1b74de6b82 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_publicipaddresspropertiesformat.go @@ -0,0 +1,23 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressPropertiesFormat struct { + DdosSettings *DdosSettings `json:"ddosSettings,omitempty"` + DeleteOption *DeleteOptions `json:"deleteOption,omitempty"` + DnsSettings *PublicIPAddressDnsSettings `json:"dnsSettings,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty"` + IPTags *[]IPTag `json:"ipTags,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + LinkedPublicIPAddress *PublicIPAddress `json:"linkedPublicIPAddress,omitempty"` + MigrationPhase *PublicIPAddressMigrationPhase `json:"migrationPhase,omitempty"` + NatGateway *NatGateway `json:"natGateway,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"` + PublicIPAllocationMethod *IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServicePublicIPAddress *PublicIPAddress `json:"servicePublicIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_publicipaddresssku.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_publicipaddresssku.go new file mode 100644 index 00000000000..c719ed93844 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_publicipaddresssku.go @@ -0,0 +1,9 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressSku struct { + Name *PublicIPAddressSkuName `json:"name,omitempty"` + Tier *PublicIPAddressSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_resourcenavigationlink.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_resourcenavigationlink.go new file mode 100644 index 00000000000..e1834b720d7 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_resourcenavigationlink.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ResourceNavigationLinkFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_resourcenavigationlinkformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_resourcenavigationlinkformat.go new file mode 100644 index 00000000000..5100c40bc8d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_resourcenavigationlinkformat.go @@ -0,0 +1,10 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLinkFormat struct { + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_resourceset.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_resourceset.go new file mode 100644 index 00000000000..fa8408e3374 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_resourceset.go @@ -0,0 +1,8 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceSet struct { + Subscriptions *[]string `json:"subscriptions,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..402a95f81e1 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_route.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_route.go new file mode 100644 index 00000000000..5eb14c76d8d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_route.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Route struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RoutePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_routepropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_routepropertiesformat.go new file mode 100644 index 00000000000..1e404b86207 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_routepropertiesformat.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutePropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + HasBgpOverride *bool `json:"hasBgpOverride,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + NextHopType RouteNextHopType `json:"nextHopType"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_routetable.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_routetable.go new file mode 100644 index 00000000000..c5bfa2aacc9 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_routetable.go @@ -0,0 +1,14 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTable struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteTablePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_routetablepropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_routetablepropertiesformat.go new file mode 100644 index 00000000000..788b58851db --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_routetablepropertiesformat.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTablePropertiesFormat struct { + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Routes *[]Route `json:"routes,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_securityrule.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_securityrule.go new file mode 100644 index 00000000000..42a4c62093e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_securityrule.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_securityrulepropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_securityrulepropertiesformat.go new file mode 100644 index 00000000000..8b92ef45964 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_securityrulepropertiesformat.go @@ -0,0 +1,23 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulePropertiesFormat struct { + Access SecurityRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction SecurityRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_serviceassociationlink.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_serviceassociationlink.go new file mode 100644 index 00000000000..806ced6b5e5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_serviceassociationlink.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceAssociationLinkPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_serviceassociationlinkpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_serviceassociationlinkpropertiesformat.go new file mode 100644 index 00000000000..9a18079edd6 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_serviceassociationlinkpropertiesformat.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLinkPropertiesFormat struct { + AllowDelete *bool `json:"allowDelete,omitempty"` + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + Locations *[]string `json:"locations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_servicedelegationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_servicedelegationpropertiesformat.go new file mode 100644 index 00000000000..347761b277f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_servicedelegationpropertiesformat.go @@ -0,0 +1,10 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceDelegationPropertiesFormat struct { + Actions *[]string `json:"actions,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_serviceendpointpolicy.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_serviceendpointpolicy.go new file mode 100644 index 00000000000..6ca8e2d4a35 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_serviceendpointpolicy.go @@ -0,0 +1,15 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Kind *string `json:"kind,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_serviceendpointpolicydefinition.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_serviceendpointpolicydefinition.go new file mode 100644 index 00000000000..05ee77e2b81 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_serviceendpointpolicydefinition.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinition struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_serviceendpointpolicydefinitionpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_serviceendpointpolicydefinitionpropertiesformat.go new file mode 100644 index 00000000000..537a3df890d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_serviceendpointpolicydefinitionpropertiesformat.go @@ -0,0 +1,11 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionPropertiesFormat struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` + ServiceResources *[]string `json:"serviceResources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_serviceendpointpolicypropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_serviceendpointpolicypropertiesformat.go new file mode 100644 index 00000000000..f2645082640 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_serviceendpointpolicypropertiesformat.go @@ -0,0 +1,13 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyPropertiesFormat struct { + ContextualServiceEndpointPolicies *[]string `json:"contextualServiceEndpointPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServiceAlias *string `json:"serviceAlias,omitempty"` + ServiceEndpointPolicyDefinitions *[]ServiceEndpointPolicyDefinition `json:"serviceEndpointPolicyDefinitions,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_serviceendpointpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_serviceendpointpropertiesformat.go new file mode 100644 index 00000000000..13911877fe3 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_serviceendpointpropertiesformat.go @@ -0,0 +1,11 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPropertiesFormat struct { + Locations *[]string `json:"locations,omitempty"` + NetworkIdentifier *SubResource `json:"networkIdentifier,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_subnet.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_subnet.go new file mode 100644 index 00000000000..e7d6771812b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_subnet.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Subnet struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SubnetPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_subnetpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_subnetpropertiesformat.go new file mode 100644 index 00000000000..5fa44918ba2 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_subnetpropertiesformat.go @@ -0,0 +1,28 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + ApplicationGatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"applicationGatewayIPConfigurations,omitempty"` + DefaultOutboundAccess *bool `json:"defaultOutboundAccess,omitempty"` + Delegations *[]Delegation `json:"delegations,omitempty"` + IPAllocations *[]SubResource `json:"ipAllocations,omitempty"` + IPConfigurationProfiles *[]IPConfigurationProfile `json:"ipConfigurationProfiles,omitempty"` + IPConfigurations *[]IPConfiguration `json:"ipConfigurations,omitempty"` + NatGateway *SubResource `json:"natGateway,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + PrivateEndpointNetworkPolicies *VirtualNetworkPrivateEndpointNetworkPolicies `json:"privateEndpointNetworkPolicies,omitempty"` + PrivateEndpoints *[]PrivateEndpoint `json:"privateEndpoints,omitempty"` + PrivateLinkServiceNetworkPolicies *VirtualNetworkPrivateLinkServiceNetworkPolicies `json:"privateLinkServiceNetworkPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Purpose *string `json:"purpose,omitempty"` + ResourceNavigationLinks *[]ResourceNavigationLink `json:"resourceNavigationLinks,omitempty"` + RouteTable *RouteTable `json:"routeTable,omitempty"` + ServiceAssociationLinks *[]ServiceAssociationLink `json:"serviceAssociationLinks,omitempty"` + ServiceEndpointPolicies *[]ServiceEndpointPolicy `json:"serviceEndpointPolicies,omitempty"` + ServiceEndpoints *[]ServiceEndpointPropertiesFormat `json:"serviceEndpoints,omitempty"` + SharingScope *SharingScope `json:"sharingScope,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_subresource.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_subresource.go new file mode 100644 index 00000000000..da7e12e526b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_subresource.go @@ -0,0 +1,8 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_tagsobject.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_tagsobject.go new file mode 100644 index 00000000000..1c98be14a33 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_tagsobject.go @@ -0,0 +1,8 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..89aa415edbb --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..701cc7ae154 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_virtualnetworktap.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_virtualnetworktap.go new file mode 100644 index 00000000000..209659855b5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_virtualnetworktap.go @@ -0,0 +1,14 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkTapPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/model_virtualnetworktappropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktap/model_virtualnetworktappropertiesformat.go new file mode 100644 index 00000000000..5c2f9db5892 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/model_virtualnetworktappropertiesformat.go @@ -0,0 +1,13 @@ +package virtualnetworktap + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapPropertiesFormat struct { + DestinationLoadBalancerFrontEndIPConfiguration *FrontendIPConfiguration `json:"destinationLoadBalancerFrontEndIPConfiguration,omitempty"` + DestinationNetworkInterfaceIPConfiguration *NetworkInterfaceIPConfiguration `json:"destinationNetworkInterfaceIPConfiguration,omitempty"` + DestinationPort *int64 `json:"destinationPort,omitempty"` + NetworkInterfaceTapConfigurations *[]NetworkInterfaceTapConfiguration `json:"networkInterfaceTapConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktap/version.go b/resource-manager/network/2024-01-01/virtualnetworktap/version.go new file mode 100644 index 00000000000..8d4459e47b2 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktap/version.go @@ -0,0 +1,12 @@ +package virtualnetworktap + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/virtualnetworktap/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/README.md b/resource-manager/network/2024-01-01/virtualnetworktaps/README.md new file mode 100644 index 00000000000..80985f504be --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/README.md @@ -0,0 +1,55 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualnetworktaps` Documentation + +The `virtualnetworktaps` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualnetworktaps" +``` + + +### Client Initialization + +```go +client := virtualnetworktaps.NewVirtualNetworkTapsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `VirtualNetworkTapsClient.ListAll` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.ListAll(ctx, id)` can be used to do batched pagination +items, err := client.ListAllComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualNetworkTapsClient.ListByResourceGroup` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.ListByResourceGroup(ctx, id)` can be used to do batched pagination +items, err := client.ListByResourceGroupComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/client.go b/resource-manager/network/2024-01-01/virtualnetworktaps/client.go new file mode 100644 index 00000000000..33de6824de7 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/client.go @@ -0,0 +1,26 @@ +package virtualnetworktaps + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapsClient struct { + Client *resourcemanager.Client +} + +func NewVirtualNetworkTapsClientWithBaseURI(sdkApi sdkEnv.Api) (*VirtualNetworkTapsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "virtualnetworktaps", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating VirtualNetworkTapsClient: %+v", err) + } + + return &VirtualNetworkTapsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/constants.go b/resource-manager/network/2024-01-01/virtualnetworktaps/constants.go new file mode 100644 index 00000000000..627a31a8ca2 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/constants.go @@ -0,0 +1,1198 @@ +package virtualnetworktaps + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettingsProtectionMode string + +const ( + DdosSettingsProtectionModeDisabled DdosSettingsProtectionMode = "Disabled" + DdosSettingsProtectionModeEnabled DdosSettingsProtectionMode = "Enabled" + DdosSettingsProtectionModeVirtualNetworkInherited DdosSettingsProtectionMode = "VirtualNetworkInherited" +) + +func PossibleValuesForDdosSettingsProtectionMode() []string { + return []string{ + string(DdosSettingsProtectionModeDisabled), + string(DdosSettingsProtectionModeEnabled), + string(DdosSettingsProtectionModeVirtualNetworkInherited), + } +} + +func (s *DdosSettingsProtectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDdosSettingsProtectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDdosSettingsProtectionMode(input string) (*DdosSettingsProtectionMode, error) { + vals := map[string]DdosSettingsProtectionMode{ + "disabled": DdosSettingsProtectionModeDisabled, + "enabled": DdosSettingsProtectionModeEnabled, + "virtualnetworkinherited": DdosSettingsProtectionModeVirtualNetworkInherited, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DdosSettingsProtectionMode(input) + return &out, nil +} + +type DeleteOptions string + +const ( + DeleteOptionsDelete DeleteOptions = "Delete" + DeleteOptionsDetach DeleteOptions = "Detach" +) + +func PossibleValuesForDeleteOptions() []string { + return []string{ + string(DeleteOptionsDelete), + string(DeleteOptionsDetach), + } +} + +func (s *DeleteOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteOptions(input string) (*DeleteOptions, error) { + vals := map[string]DeleteOptions{ + "delete": DeleteOptionsDelete, + "detach": DeleteOptionsDetach, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteOptions(input) + return &out, nil +} + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelInterfaceType string + +const ( + GatewayLoadBalancerTunnelInterfaceTypeExternal GatewayLoadBalancerTunnelInterfaceType = "External" + GatewayLoadBalancerTunnelInterfaceTypeInternal GatewayLoadBalancerTunnelInterfaceType = "Internal" + GatewayLoadBalancerTunnelInterfaceTypeNone GatewayLoadBalancerTunnelInterfaceType = "None" +) + +func PossibleValuesForGatewayLoadBalancerTunnelInterfaceType() []string { + return []string{ + string(GatewayLoadBalancerTunnelInterfaceTypeExternal), + string(GatewayLoadBalancerTunnelInterfaceTypeInternal), + string(GatewayLoadBalancerTunnelInterfaceTypeNone), + } +} + +func (s *GatewayLoadBalancerTunnelInterfaceType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelInterfaceType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelInterfaceType(input string) (*GatewayLoadBalancerTunnelInterfaceType, error) { + vals := map[string]GatewayLoadBalancerTunnelInterfaceType{ + "external": GatewayLoadBalancerTunnelInterfaceTypeExternal, + "internal": GatewayLoadBalancerTunnelInterfaceTypeInternal, + "none": GatewayLoadBalancerTunnelInterfaceTypeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelInterfaceType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelProtocol string + +const ( + GatewayLoadBalancerTunnelProtocolNative GatewayLoadBalancerTunnelProtocol = "Native" + GatewayLoadBalancerTunnelProtocolNone GatewayLoadBalancerTunnelProtocol = "None" + GatewayLoadBalancerTunnelProtocolVXLAN GatewayLoadBalancerTunnelProtocol = "VXLAN" +) + +func PossibleValuesForGatewayLoadBalancerTunnelProtocol() []string { + return []string{ + string(GatewayLoadBalancerTunnelProtocolNative), + string(GatewayLoadBalancerTunnelProtocolNone), + string(GatewayLoadBalancerTunnelProtocolVXLAN), + } +} + +func (s *GatewayLoadBalancerTunnelProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelProtocol(input string) (*GatewayLoadBalancerTunnelProtocol, error) { + vals := map[string]GatewayLoadBalancerTunnelProtocol{ + "native": GatewayLoadBalancerTunnelProtocolNative, + "none": GatewayLoadBalancerTunnelProtocolNone, + "vxlan": GatewayLoadBalancerTunnelProtocolVXLAN, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelProtocol(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} + +type LoadBalancerBackendAddressAdminState string + +const ( + LoadBalancerBackendAddressAdminStateDown LoadBalancerBackendAddressAdminState = "Down" + LoadBalancerBackendAddressAdminStateNone LoadBalancerBackendAddressAdminState = "None" + LoadBalancerBackendAddressAdminStateUp LoadBalancerBackendAddressAdminState = "Up" +) + +func PossibleValuesForLoadBalancerBackendAddressAdminState() []string { + return []string{ + string(LoadBalancerBackendAddressAdminStateDown), + string(LoadBalancerBackendAddressAdminStateNone), + string(LoadBalancerBackendAddressAdminStateUp), + } +} + +func (s *LoadBalancerBackendAddressAdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerBackendAddressAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerBackendAddressAdminState(input string) (*LoadBalancerBackendAddressAdminState, error) { + vals := map[string]LoadBalancerBackendAddressAdminState{ + "down": LoadBalancerBackendAddressAdminStateDown, + "none": LoadBalancerBackendAddressAdminStateNone, + "up": LoadBalancerBackendAddressAdminStateUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerBackendAddressAdminState(input) + return &out, nil +} + +type NatGatewaySkuName string + +const ( + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +func PossibleValuesForNatGatewaySkuName() []string { + return []string{ + string(NatGatewaySkuNameStandard), + } +} + +func (s *NatGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNatGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNatGatewaySkuName(input string) (*NatGatewaySkuName, error) { + vals := map[string]NatGatewaySkuName{ + "standard": NatGatewaySkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NatGatewaySkuName(input) + return &out, nil +} + +type NetworkInterfaceAuxiliaryMode string + +const ( + NetworkInterfaceAuxiliaryModeAcceleratedConnections NetworkInterfaceAuxiliaryMode = "AcceleratedConnections" + NetworkInterfaceAuxiliaryModeFloating NetworkInterfaceAuxiliaryMode = "Floating" + NetworkInterfaceAuxiliaryModeMaxConnections NetworkInterfaceAuxiliaryMode = "MaxConnections" + NetworkInterfaceAuxiliaryModeNone NetworkInterfaceAuxiliaryMode = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliaryMode() []string { + return []string{ + string(NetworkInterfaceAuxiliaryModeAcceleratedConnections), + string(NetworkInterfaceAuxiliaryModeFloating), + string(NetworkInterfaceAuxiliaryModeMaxConnections), + string(NetworkInterfaceAuxiliaryModeNone), + } +} + +func (s *NetworkInterfaceAuxiliaryMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliaryMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliaryMode(input string) (*NetworkInterfaceAuxiliaryMode, error) { + vals := map[string]NetworkInterfaceAuxiliaryMode{ + "acceleratedconnections": NetworkInterfaceAuxiliaryModeAcceleratedConnections, + "floating": NetworkInterfaceAuxiliaryModeFloating, + "maxconnections": NetworkInterfaceAuxiliaryModeMaxConnections, + "none": NetworkInterfaceAuxiliaryModeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliaryMode(input) + return &out, nil +} + +type NetworkInterfaceAuxiliarySku string + +const ( + NetworkInterfaceAuxiliarySkuAEight NetworkInterfaceAuxiliarySku = "A8" + NetworkInterfaceAuxiliarySkuAFour NetworkInterfaceAuxiliarySku = "A4" + NetworkInterfaceAuxiliarySkuAOne NetworkInterfaceAuxiliarySku = "A1" + NetworkInterfaceAuxiliarySkuATwo NetworkInterfaceAuxiliarySku = "A2" + NetworkInterfaceAuxiliarySkuNone NetworkInterfaceAuxiliarySku = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliarySku() []string { + return []string{ + string(NetworkInterfaceAuxiliarySkuAEight), + string(NetworkInterfaceAuxiliarySkuAFour), + string(NetworkInterfaceAuxiliarySkuAOne), + string(NetworkInterfaceAuxiliarySkuATwo), + string(NetworkInterfaceAuxiliarySkuNone), + } +} + +func (s *NetworkInterfaceAuxiliarySku) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliarySku(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliarySku(input string) (*NetworkInterfaceAuxiliarySku, error) { + vals := map[string]NetworkInterfaceAuxiliarySku{ + "a8": NetworkInterfaceAuxiliarySkuAEight, + "a4": NetworkInterfaceAuxiliarySkuAFour, + "a1": NetworkInterfaceAuxiliarySkuAOne, + "a2": NetworkInterfaceAuxiliarySkuATwo, + "none": NetworkInterfaceAuxiliarySkuNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliarySku(input) + return &out, nil +} + +type NetworkInterfaceMigrationPhase string + +const ( + NetworkInterfaceMigrationPhaseAbort NetworkInterfaceMigrationPhase = "Abort" + NetworkInterfaceMigrationPhaseCommit NetworkInterfaceMigrationPhase = "Commit" + NetworkInterfaceMigrationPhaseCommitted NetworkInterfaceMigrationPhase = "Committed" + NetworkInterfaceMigrationPhaseNone NetworkInterfaceMigrationPhase = "None" + NetworkInterfaceMigrationPhasePrepare NetworkInterfaceMigrationPhase = "Prepare" +) + +func PossibleValuesForNetworkInterfaceMigrationPhase() []string { + return []string{ + string(NetworkInterfaceMigrationPhaseAbort), + string(NetworkInterfaceMigrationPhaseCommit), + string(NetworkInterfaceMigrationPhaseCommitted), + string(NetworkInterfaceMigrationPhaseNone), + string(NetworkInterfaceMigrationPhasePrepare), + } +} + +func (s *NetworkInterfaceMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceMigrationPhase(input string) (*NetworkInterfaceMigrationPhase, error) { + vals := map[string]NetworkInterfaceMigrationPhase{ + "abort": NetworkInterfaceMigrationPhaseAbort, + "commit": NetworkInterfaceMigrationPhaseCommit, + "committed": NetworkInterfaceMigrationPhaseCommitted, + "none": NetworkInterfaceMigrationPhaseNone, + "prepare": NetworkInterfaceMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceMigrationPhase(input) + return &out, nil +} + +type NetworkInterfaceNicType string + +const ( + NetworkInterfaceNicTypeElastic NetworkInterfaceNicType = "Elastic" + NetworkInterfaceNicTypeStandard NetworkInterfaceNicType = "Standard" +) + +func PossibleValuesForNetworkInterfaceNicType() []string { + return []string{ + string(NetworkInterfaceNicTypeElastic), + string(NetworkInterfaceNicTypeStandard), + } +} + +func (s *NetworkInterfaceNicType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceNicType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceNicType(input string) (*NetworkInterfaceNicType, error) { + vals := map[string]NetworkInterfaceNicType{ + "elastic": NetworkInterfaceNicTypeElastic, + "standard": NetworkInterfaceNicTypeStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceNicType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type PublicIPAddressDnsSettingsDomainNameLabelScope string + +const ( + PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "NoReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "ResourceGroupReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "SubscriptionReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "TenantReuse" +) + +func PossibleValuesForPublicIPAddressDnsSettingsDomainNameLabelScope() []string { + return []string{ + string(PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse), + } +} + +func (s *PublicIPAddressDnsSettingsDomainNameLabelScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressDnsSettingsDomainNameLabelScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressDnsSettingsDomainNameLabelScope(input string) (*PublicIPAddressDnsSettingsDomainNameLabelScope, error) { + vals := map[string]PublicIPAddressDnsSettingsDomainNameLabelScope{ + "noreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse, + "resourcegroupreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse, + "subscriptionreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse, + "tenantreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressDnsSettingsDomainNameLabelScope(input) + return &out, nil +} + +type PublicIPAddressMigrationPhase string + +const ( + PublicIPAddressMigrationPhaseAbort PublicIPAddressMigrationPhase = "Abort" + PublicIPAddressMigrationPhaseCommit PublicIPAddressMigrationPhase = "Commit" + PublicIPAddressMigrationPhaseCommitted PublicIPAddressMigrationPhase = "Committed" + PublicIPAddressMigrationPhaseNone PublicIPAddressMigrationPhase = "None" + PublicIPAddressMigrationPhasePrepare PublicIPAddressMigrationPhase = "Prepare" +) + +func PossibleValuesForPublicIPAddressMigrationPhase() []string { + return []string{ + string(PublicIPAddressMigrationPhaseAbort), + string(PublicIPAddressMigrationPhaseCommit), + string(PublicIPAddressMigrationPhaseCommitted), + string(PublicIPAddressMigrationPhaseNone), + string(PublicIPAddressMigrationPhasePrepare), + } +} + +func (s *PublicIPAddressMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressMigrationPhase(input string) (*PublicIPAddressMigrationPhase, error) { + vals := map[string]PublicIPAddressMigrationPhase{ + "abort": PublicIPAddressMigrationPhaseAbort, + "commit": PublicIPAddressMigrationPhaseCommit, + "committed": PublicIPAddressMigrationPhaseCommitted, + "none": PublicIPAddressMigrationPhaseNone, + "prepare": PublicIPAddressMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressMigrationPhase(input) + return &out, nil +} + +type PublicIPAddressSkuName string + +const ( + PublicIPAddressSkuNameBasic PublicIPAddressSkuName = "Basic" + PublicIPAddressSkuNameStandard PublicIPAddressSkuName = "Standard" +) + +func PossibleValuesForPublicIPAddressSkuName() []string { + return []string{ + string(PublicIPAddressSkuNameBasic), + string(PublicIPAddressSkuNameStandard), + } +} + +func (s *PublicIPAddressSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuName(input string) (*PublicIPAddressSkuName, error) { + vals := map[string]PublicIPAddressSkuName{ + "basic": PublicIPAddressSkuNameBasic, + "standard": PublicIPAddressSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuName(input) + return &out, nil +} + +type PublicIPAddressSkuTier string + +const ( + PublicIPAddressSkuTierGlobal PublicIPAddressSkuTier = "Global" + PublicIPAddressSkuTierRegional PublicIPAddressSkuTier = "Regional" +) + +func PossibleValuesForPublicIPAddressSkuTier() []string { + return []string{ + string(PublicIPAddressSkuTierGlobal), + string(PublicIPAddressSkuTierRegional), + } +} + +func (s *PublicIPAddressSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuTier(input string) (*PublicIPAddressSkuTier, error) { + vals := map[string]PublicIPAddressSkuTier{ + "global": PublicIPAddressSkuTierGlobal, + "regional": PublicIPAddressSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuTier(input) + return &out, nil +} + +type RouteNextHopType string + +const ( + RouteNextHopTypeInternet RouteNextHopType = "Internet" + RouteNextHopTypeNone RouteNextHopType = "None" + RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" + RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" + RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" +) + +func PossibleValuesForRouteNextHopType() []string { + return []string{ + string(RouteNextHopTypeInternet), + string(RouteNextHopTypeNone), + string(RouteNextHopTypeVirtualAppliance), + string(RouteNextHopTypeVirtualNetworkGateway), + string(RouteNextHopTypeVnetLocal), + } +} + +func (s *RouteNextHopType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteNextHopType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteNextHopType(input string) (*RouteNextHopType, error) { + vals := map[string]RouteNextHopType{ + "internet": RouteNextHopTypeInternet, + "none": RouteNextHopTypeNone, + "virtualappliance": RouteNextHopTypeVirtualAppliance, + "virtualnetworkgateway": RouteNextHopTypeVirtualNetworkGateway, + "vnetlocal": RouteNextHopTypeVnetLocal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteNextHopType(input) + return &out, nil +} + +type SecurityRuleAccess string + +const ( + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +func PossibleValuesForSecurityRuleAccess() []string { + return []string{ + string(SecurityRuleAccessAllow), + string(SecurityRuleAccessDeny), + } +} + +func (s *SecurityRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleAccess(input string) (*SecurityRuleAccess, error) { + vals := map[string]SecurityRuleAccess{ + "allow": SecurityRuleAccessAllow, + "deny": SecurityRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleAccess(input) + return &out, nil +} + +type SecurityRuleDirection string + +const ( + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityRuleDirection() []string { + return []string{ + string(SecurityRuleDirectionInbound), + string(SecurityRuleDirectionOutbound), + } +} + +func (s *SecurityRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleDirection(input string) (*SecurityRuleDirection, error) { + vals := map[string]SecurityRuleDirection{ + "inbound": SecurityRuleDirectionInbound, + "outbound": SecurityRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleDirection(input) + return &out, nil +} + +type SecurityRuleProtocol string + +const ( + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + SecurityRuleProtocolAny SecurityRuleProtocol = "*" + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + SecurityRuleProtocolTcp SecurityRuleProtocol = "Tcp" + SecurityRuleProtocolUdp SecurityRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityRuleProtocol() []string { + return []string{ + string(SecurityRuleProtocolAh), + string(SecurityRuleProtocolAny), + string(SecurityRuleProtocolEsp), + string(SecurityRuleProtocolIcmp), + string(SecurityRuleProtocolTcp), + string(SecurityRuleProtocolUdp), + } +} + +func (s *SecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleProtocol(input string) (*SecurityRuleProtocol, error) { + vals := map[string]SecurityRuleProtocol{ + "ah": SecurityRuleProtocolAh, + "*": SecurityRuleProtocolAny, + "esp": SecurityRuleProtocolEsp, + "icmp": SecurityRuleProtocolIcmp, + "tcp": SecurityRuleProtocolTcp, + "udp": SecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleProtocol(input) + return &out, nil +} + +type SharingScope string + +const ( + SharingScopeDelegatedServices SharingScope = "DelegatedServices" + SharingScopeTenant SharingScope = "Tenant" +) + +func PossibleValuesForSharingScope() []string { + return []string{ + string(SharingScopeDelegatedServices), + string(SharingScopeTenant), + } +} + +func (s *SharingScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSharingScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSharingScope(input string) (*SharingScope, error) { + vals := map[string]SharingScope{ + "delegatedservices": SharingScopeDelegatedServices, + "tenant": SharingScopeTenant, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SharingScope(input) + return &out, nil +} + +type SyncMode string + +const ( + SyncModeAutomatic SyncMode = "Automatic" + SyncModeManual SyncMode = "Manual" +) + +func PossibleValuesForSyncMode() []string { + return []string{ + string(SyncModeAutomatic), + string(SyncModeManual), + } +} + +func (s *SyncMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSyncMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSyncMode(input string) (*SyncMode, error) { + vals := map[string]SyncMode{ + "automatic": SyncModeAutomatic, + "manual": SyncModeManual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SyncMode(input) + return &out, nil +} + +type TransportProtocol string + +const ( + TransportProtocolAll TransportProtocol = "All" + TransportProtocolTcp TransportProtocol = "Tcp" + TransportProtocolUdp TransportProtocol = "Udp" +) + +func PossibleValuesForTransportProtocol() []string { + return []string{ + string(TransportProtocolAll), + string(TransportProtocolTcp), + string(TransportProtocolUdp), + } +} + +func (s *TransportProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseTransportProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseTransportProtocol(input string) (*TransportProtocol, error) { + vals := map[string]TransportProtocol{ + "all": TransportProtocolAll, + "tcp": TransportProtocolTcp, + "udp": TransportProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := TransportProtocol(input) + return &out, nil +} + +type VirtualNetworkPrivateEndpointNetworkPolicies string + +const ( + VirtualNetworkPrivateEndpointNetworkPoliciesDisabled VirtualNetworkPrivateEndpointNetworkPolicies = "Disabled" + VirtualNetworkPrivateEndpointNetworkPoliciesEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "Enabled" + VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "NetworkSecurityGroupEnabled" + VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "RouteTableEnabled" +) + +func PossibleValuesForVirtualNetworkPrivateEndpointNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateEndpointNetworkPoliciesDisabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled), + } +} + +func (s *VirtualNetworkPrivateEndpointNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateEndpointNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateEndpointNetworkPolicies(input string) (*VirtualNetworkPrivateEndpointNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateEndpointNetworkPolicies{ + "disabled": VirtualNetworkPrivateEndpointNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateEndpointNetworkPoliciesEnabled, + "networksecuritygroupenabled": VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled, + "routetableenabled": VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateEndpointNetworkPolicies(input) + return &out, nil +} + +type VirtualNetworkPrivateLinkServiceNetworkPolicies string + +const ( + VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Disabled" + VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Enabled" +) + +func PossibleValuesForVirtualNetworkPrivateLinkServiceNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled), + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled), + } +} + +func (s *VirtualNetworkPrivateLinkServiceNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateLinkServiceNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateLinkServiceNetworkPolicies(input string) (*VirtualNetworkPrivateLinkServiceNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateLinkServiceNetworkPolicies{ + "disabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateLinkServiceNetworkPolicies(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/method_listall.go b/resource-manager/network/2024-01-01/virtualnetworktaps/method_listall.go new file mode 100644 index 00000000000..aba7596749e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/method_listall.go @@ -0,0 +1,93 @@ +package virtualnetworktaps + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAllOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VirtualNetworkTap +} + +type ListAllCompleteResult struct { + LatestHttpResponse *http.Response + Items []VirtualNetworkTap +} + +// ListAll ... +func (c VirtualNetworkTapsClient) ListAll(ctx context.Context, id commonids.SubscriptionId) (result ListAllOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/virtualNetworkTaps", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VirtualNetworkTap `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListAllComplete retrieves all the results into a single object +func (c VirtualNetworkTapsClient) ListAllComplete(ctx context.Context, id commonids.SubscriptionId) (ListAllCompleteResult, error) { + return c.ListAllCompleteMatchingPredicate(ctx, id, VirtualNetworkTapOperationPredicate{}) +} + +// ListAllCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualNetworkTapsClient) ListAllCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate VirtualNetworkTapOperationPredicate) (result ListAllCompleteResult, err error) { + items := make([]VirtualNetworkTap, 0) + + resp, err := c.ListAll(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListAllCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/method_listbyresourcegroup.go b/resource-manager/network/2024-01-01/virtualnetworktaps/method_listbyresourcegroup.go new file mode 100644 index 00000000000..7377c5f3294 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/method_listbyresourcegroup.go @@ -0,0 +1,93 @@ +package virtualnetworktaps + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListByResourceGroupOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VirtualNetworkTap +} + +type ListByResourceGroupCompleteResult struct { + LatestHttpResponse *http.Response + Items []VirtualNetworkTap +} + +// ListByResourceGroup ... +func (c VirtualNetworkTapsClient) ListByResourceGroup(ctx context.Context, id commonids.ResourceGroupId) (result ListByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/virtualNetworkTaps", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VirtualNetworkTap `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListByResourceGroupComplete retrieves all the results into a single object +func (c VirtualNetworkTapsClient) ListByResourceGroupComplete(ctx context.Context, id commonids.ResourceGroupId) (ListByResourceGroupCompleteResult, error) { + return c.ListByResourceGroupCompleteMatchingPredicate(ctx, id, VirtualNetworkTapOperationPredicate{}) +} + +// ListByResourceGroupCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualNetworkTapsClient) ListByResourceGroupCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate VirtualNetworkTapOperationPredicate) (result ListByResourceGroupCompleteResult, err error) { + items := make([]VirtualNetworkTap, 0) + + resp, err := c.ListByResourceGroup(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListByResourceGroupCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_applicationgatewaybackendaddress.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_applicationgatewaybackendaddress.go new file mode 100644 index 00000000000..b76026be6bc --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_applicationgatewaybackendaddress.go @@ -0,0 +1,9 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddress struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_applicationgatewaybackendaddresspool.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_applicationgatewaybackendaddresspool.go new file mode 100644 index 00000000000..b8bc620ea71 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_applicationgatewaybackendaddresspool.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_applicationgatewaybackendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_applicationgatewaybackendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..f6179e4f0e3 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_applicationgatewaybackendaddresspoolpropertiesformat.go @@ -0,0 +1,10 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPoolPropertiesFormat struct { + BackendAddresses *[]ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"` + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_applicationgatewayipconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_applicationgatewayipconfiguration.go new file mode 100644 index 00000000000..9e995dbb56d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_applicationgatewayipconfiguration.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_applicationgatewayipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_applicationgatewayipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..0c3c2c531f3 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_applicationgatewayipconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..1c38043ef88 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..9102a6b9188 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_backendaddresspool.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_backendaddresspool.go new file mode 100644 index 00000000000..2c478d85562 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_backendaddresspool.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_backendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_backendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..9afb32298d3 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_backendaddresspoolpropertiesformat.go @@ -0,0 +1,19 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPoolPropertiesFormat struct { + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + DrainPeriodInSeconds *int64 `json:"drainPeriodInSeconds,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancerBackendAddresses *[]LoadBalancerBackendAddress `json:"loadBalancerBackendAddresses,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + Location *string `json:"location,omitempty"` + OutboundRule *SubResource `json:"outboundRule,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SyncMode *SyncMode `json:"syncMode,omitempty"` + TunnelInterfaces *[]GatewayLoadBalancerTunnelInterface `json:"tunnelInterfaces,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_customdnsconfigpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_customdnsconfigpropertiesformat.go new file mode 100644 index 00000000000..36b2063994a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_customdnsconfigpropertiesformat.go @@ -0,0 +1,9 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomDnsConfigPropertiesFormat struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_ddossettings.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_ddossettings.go new file mode 100644 index 00000000000..cbd6745cb8e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_ddossettings.go @@ -0,0 +1,9 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettings struct { + DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"` + ProtectionMode *DdosSettingsProtectionMode `json:"protectionMode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_delegation.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_delegation.go new file mode 100644 index 00000000000..018e0605aee --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_delegation.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Delegation struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceDelegationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_flowlog.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_flowlog.go new file mode 100644 index 00000000000..0247c576115 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_flowlog.go @@ -0,0 +1,19 @@ +package virtualnetworktaps + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLog struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FlowLogPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_flowlogformatparameters.go new file mode 100644 index 00000000000..3dc25c465d0 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_flowlogpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_flowlogpropertiesformat.go new file mode 100644 index 00000000000..6fc887f8010 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_flowlogpropertiesformat.go @@ -0,0 +1,15 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogPropertiesFormat struct { + Enabled *bool `json:"enabled,omitempty"` + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` + TargetResourceGuid *string `json:"targetResourceGuid,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_frontendipconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_frontendipconfiguration.go new file mode 100644 index 00000000000..35e28c95460 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_frontendipconfiguration.go @@ -0,0 +1,17 @@ +package virtualnetworktaps + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_frontendipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_frontendipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..c6949a4745a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_frontendipconfigurationpropertiesformat.go @@ -0,0 +1,19 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfigurationPropertiesFormat struct { + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + InboundNatPools *[]SubResource `json:"inboundNatPools,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_gatewayloadbalancertunnelinterface.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_gatewayloadbalancertunnelinterface.go new file mode 100644 index 00000000000..a2e82dba72b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_gatewayloadbalancertunnelinterface.go @@ -0,0 +1,11 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayLoadBalancerTunnelInterface struct { + Identifier *int64 `json:"identifier,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *GatewayLoadBalancerTunnelProtocol `json:"protocol,omitempty"` + Type *GatewayLoadBalancerTunnelInterfaceType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_inboundnatrule.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_inboundnatrule.go new file mode 100644 index 00000000000..f84bd93f6c7 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_inboundnatrule.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundNatRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_inboundnatrulepropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_inboundnatrulepropertiesformat.go new file mode 100644 index 00000000000..8200337ef35 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_inboundnatrulepropertiesformat.go @@ -0,0 +1,19 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendIPConfiguration *NetworkInterfaceIPConfiguration `json:"backendIPConfiguration,omitempty"` + BackendPort *int64 `json:"backendPort,omitempty"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + FrontendPortRangeEnd *int64 `json:"frontendPortRangeEnd,omitempty"` + FrontendPortRangeStart *int64 `json:"frontendPortRangeStart,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol *TransportProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_ipconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_ipconfiguration.go new file mode 100644 index 00000000000..fcd9033c4a4 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_ipconfiguration.go @@ -0,0 +1,11 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_ipconfigurationprofile.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_ipconfigurationprofile.go new file mode 100644 index 00000000000..2e7b5cfe5eb --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_ipconfigurationprofile.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationProfilePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_ipconfigurationprofilepropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_ipconfigurationprofilepropertiesformat.go new file mode 100644 index 00000000000..1d5ab92dcd5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_ipconfigurationprofilepropertiesformat.go @@ -0,0 +1,9 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfilePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_ipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_ipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..4a486230c36 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_ipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_iptag.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_iptag.go new file mode 100644 index 00000000000..c4127e59d60 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_iptag.go @@ -0,0 +1,9 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPTag struct { + IPTagType *string `json:"ipTagType,omitempty"` + Tag *string `json:"tag,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_loadbalancerbackendaddress.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_loadbalancerbackendaddress.go new file mode 100644 index 00000000000..7a8c5cb8b73 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_loadbalancerbackendaddress.go @@ -0,0 +1,9 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddress struct { + Name *string `json:"name,omitempty"` + Properties *LoadBalancerBackendAddressPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_loadbalancerbackendaddresspropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_loadbalancerbackendaddresspropertiesformat.go new file mode 100644 index 00000000000..d3193da6576 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_loadbalancerbackendaddresspropertiesformat.go @@ -0,0 +1,14 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPropertiesFormat struct { + AdminState *LoadBalancerBackendAddressAdminState `json:"adminState,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + InboundNatRulesPortMapping *[]NatRulePortMapping `json:"inboundNatRulesPortMapping,omitempty"` + LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIPConfiguration,omitempty"` + NetworkInterfaceIPConfiguration *SubResource `json:"networkInterfaceIPConfiguration,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_natgateway.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_natgateway.go new file mode 100644 index 00000000000..b2e289b8923 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_natgateway.go @@ -0,0 +1,20 @@ +package virtualnetworktaps + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"` + Sku *NatGatewaySku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_natgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_natgatewaypropertiesformat.go new file mode 100644 index 00000000000..17859bcb59e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_natgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayPropertiesFormat struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]SubResource `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_natgatewaysku.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_natgatewaysku.go new file mode 100644 index 00000000000..cab72fef58e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_natgatewaysku.go @@ -0,0 +1,8 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySku struct { + Name *NatGatewaySkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_natruleportmapping.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_natruleportmapping.go new file mode 100644 index 00000000000..2426f4e9182 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_natruleportmapping.go @@ -0,0 +1,10 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulePortMapping struct { + BackendPort *int64 `json:"backendPort,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + InboundNatRuleName *string `json:"inboundNatRuleName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterface.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterface.go new file mode 100644 index 00000000000..0959f2effbd --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterface.go @@ -0,0 +1,19 @@ +package virtualnetworktaps + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterface struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfacePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterfacednssettings.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterfacednssettings.go new file mode 100644 index 00000000000..63a0e5410a5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterfacednssettings.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceDnsSettings struct { + AppliedDnsServers *[]string `json:"appliedDnsServers,omitempty"` + DnsServers *[]string `json:"dnsServers,omitempty"` + InternalDnsNameLabel *string `json:"internalDnsNameLabel,omitempty"` + InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty"` + InternalFqdn *string `json:"internalFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterfaceipconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterfaceipconfiguration.go new file mode 100644 index 00000000000..3295f16b481 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterfaceipconfiguration.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go new file mode 100644 index 00000000000..7659a03380a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go @@ -0,0 +1,10 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties struct { + Fqdns *[]string `json:"fqdns,omitempty"` + GroupId *string `json:"groupId,omitempty"` + RequiredMemberName *string `json:"requiredMemberName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterfaceipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterfaceipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..758acc402d6 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterfaceipconfigurationpropertiesformat.go @@ -0,0 +1,22 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPropertiesFormat struct { + ApplicationGatewayBackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"applicationGatewayBackendAddressPools,omitempty"` + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + LoadBalancerBackendAddressPools *[]BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"` + LoadBalancerInboundNatRules *[]InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressPrefixLength *int64 `json:"privateIPAddressPrefixLength,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + PrivateLinkConnectionProperties *NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties `json:"privateLinkConnectionProperties,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` + VirtualNetworkTaps *[]VirtualNetworkTap `json:"virtualNetworkTaps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterfacepropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterfacepropertiesformat.go new file mode 100644 index 00000000000..9cb7ea2624a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterfacepropertiesformat.go @@ -0,0 +1,29 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfacePropertiesFormat struct { + AuxiliaryMode *NetworkInterfaceAuxiliaryMode `json:"auxiliaryMode,omitempty"` + AuxiliarySku *NetworkInterfaceAuxiliarySku `json:"auxiliarySku,omitempty"` + DisableTcpStateTracking *bool `json:"disableTcpStateTracking,omitempty"` + DnsSettings *NetworkInterfaceDnsSettings `json:"dnsSettings,omitempty"` + DscpConfiguration *SubResource `json:"dscpConfiguration,omitempty"` + EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"` + EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"` + HostedWorkloads *[]string `json:"hostedWorkloads,omitempty"` + IPConfigurations *[]NetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + MacAddress *string `json:"macAddress,omitempty"` + MigrationPhase *NetworkInterfaceMigrationPhase `json:"migrationPhase,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + NicType *NetworkInterfaceNicType `json:"nicType,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkService *PrivateLinkService `json:"privateLinkService,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + TapConfigurations *[]NetworkInterfaceTapConfiguration `json:"tapConfigurations,omitempty"` + VirtualMachine *SubResource `json:"virtualMachine,omitempty"` + VnetEncryptionSupported *bool `json:"vnetEncryptionSupported,omitempty"` + WorkloadType *string `json:"workloadType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterfacetapconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterfacetapconfiguration.go new file mode 100644 index 00000000000..3d883d5678c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterfacetapconfiguration.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceTapConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterfacetapconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterfacetapconfigurationpropertiesformat.go new file mode 100644 index 00000000000..dd9ef377372 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_networkinterfacetapconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualNetworkTap *VirtualNetworkTap `json:"virtualNetworkTap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_networksecuritygroup.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_networksecuritygroup.go new file mode 100644 index 00000000000..d3ce4b39ea6 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_networksecuritygroup.go @@ -0,0 +1,14 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_networksecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_networksecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..57de91eafd3 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_networksecuritygrouppropertiesformat.go @@ -0,0 +1,15 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupPropertiesFormat struct { + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + FlowLogs *[]FlowLog `json:"flowLogs,omitempty"` + FlushConnection *bool `json:"flushConnection,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_privateendpoint.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privateendpoint.go new file mode 100644 index 00000000000..b58c024b508 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privateendpoint.go @@ -0,0 +1,19 @@ +package virtualnetworktaps + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpoint struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_privateendpointconnection.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privateendpointconnection.go new file mode 100644 index 00000000000..3d314882781 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privateendpointconnection.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_privateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privateendpointconnectionproperties.go new file mode 100644 index 00000000000..d6ea54d1367 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privateendpointconnectionproperties.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateEndpointLocation *string `json:"privateEndpointLocation,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_privateendpointipconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privateendpointipconfiguration.go new file mode 100644 index 00000000000..40468e7e3ae --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privateendpointipconfiguration.go @@ -0,0 +1,11 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_privateendpointipconfigurationproperties.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privateendpointipconfigurationproperties.go new file mode 100644 index 00000000000..46faf7b053b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privateendpointipconfigurationproperties.go @@ -0,0 +1,10 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfigurationProperties struct { + GroupId *string `json:"groupId,omitempty"` + MemberName *string `json:"memberName,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_privateendpointproperties.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privateendpointproperties.go new file mode 100644 index 00000000000..44ca9629906 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privateendpointproperties.go @@ -0,0 +1,16 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointProperties struct { + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + CustomDnsConfigs *[]CustomDnsConfigPropertiesFormat `json:"customDnsConfigs,omitempty"` + CustomNetworkInterfaceName *string `json:"customNetworkInterfaceName,omitempty"` + IPConfigurations *[]PrivateEndpointIPConfiguration `json:"ipConfigurations,omitempty"` + ManualPrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"manualPrivateLinkServiceConnections,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"privateLinkServiceConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_privatelinkservice.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privatelinkservice.go new file mode 100644 index 00000000000..8df5b6ca8e9 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privatelinkservice.go @@ -0,0 +1,19 @@ +package virtualnetworktaps + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkService struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_privatelinkserviceconnection.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privatelinkserviceconnection.go new file mode 100644 index 00000000000..3d9511e926a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privatelinkserviceconnection.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_privatelinkserviceconnectionproperties.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privatelinkserviceconnectionproperties.go new file mode 100644 index 00000000000..149dad152de --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privatelinkserviceconnectionproperties.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionProperties struct { + GroupIds *[]string `json:"groupIds,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + PrivateLinkServiceId *string `json:"privateLinkServiceId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestMessage *string `json:"requestMessage,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_privatelinkserviceconnectionstate.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privatelinkserviceconnectionstate.go new file mode 100644 index 00000000000..5ae16683918 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privatelinkserviceconnectionstate.go @@ -0,0 +1,10 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionState struct { + ActionsRequired *string `json:"actionsRequired,omitempty"` + Description *string `json:"description,omitempty"` + Status *string `json:"status,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_privatelinkserviceipconfiguration.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privatelinkserviceipconfiguration.go new file mode 100644 index 00000000000..830a49d4825 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privatelinkserviceipconfiguration.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_privatelinkserviceipconfigurationproperties.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privatelinkserviceipconfigurationproperties.go new file mode 100644 index 00000000000..b3b914d17a6 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privatelinkserviceipconfigurationproperties.go @@ -0,0 +1,13 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_privatelinkserviceproperties.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privatelinkserviceproperties.go new file mode 100644 index 00000000000..9e5885610f5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_privatelinkserviceproperties.go @@ -0,0 +1,17 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceProperties struct { + Alias *string `json:"alias,omitempty"` + AutoApproval *ResourceSet `json:"autoApproval,omitempty"` + EnableProxyProtocol *bool `json:"enableProxyProtocol,omitempty"` + Fqdns *[]string `json:"fqdns,omitempty"` + IPConfigurations *[]PrivateLinkServiceIPConfiguration `json:"ipConfigurations,omitempty"` + LoadBalancerFrontendIPConfigurations *[]FrontendIPConfiguration `json:"loadBalancerFrontendIpConfigurations,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Visibility *ResourceSet `json:"visibility,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_publicipaddress.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_publicipaddress.go new file mode 100644 index 00000000000..a63d498e9b2 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_publicipaddress.go @@ -0,0 +1,22 @@ +package virtualnetworktaps + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddress struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PublicIPAddressPropertiesFormat `json:"properties,omitempty"` + Sku *PublicIPAddressSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_publicipaddressdnssettings.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_publicipaddressdnssettings.go new file mode 100644 index 00000000000..a22c5ccb482 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_publicipaddressdnssettings.go @@ -0,0 +1,11 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressDnsSettings struct { + DomainNameLabel *string `json:"domainNameLabel,omitempty"` + DomainNameLabelScope *PublicIPAddressDnsSettingsDomainNameLabelScope `json:"domainNameLabelScope,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + ReverseFqdn *string `json:"reverseFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_publicipaddresspropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_publicipaddresspropertiesformat.go new file mode 100644 index 00000000000..f3a6e76f01e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_publicipaddresspropertiesformat.go @@ -0,0 +1,23 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressPropertiesFormat struct { + DdosSettings *DdosSettings `json:"ddosSettings,omitempty"` + DeleteOption *DeleteOptions `json:"deleteOption,omitempty"` + DnsSettings *PublicIPAddressDnsSettings `json:"dnsSettings,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty"` + IPTags *[]IPTag `json:"ipTags,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + LinkedPublicIPAddress *PublicIPAddress `json:"linkedPublicIPAddress,omitempty"` + MigrationPhase *PublicIPAddressMigrationPhase `json:"migrationPhase,omitempty"` + NatGateway *NatGateway `json:"natGateway,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"` + PublicIPAllocationMethod *IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServicePublicIPAddress *PublicIPAddress `json:"servicePublicIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_publicipaddresssku.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_publicipaddresssku.go new file mode 100644 index 00000000000..b6d56cb8fcd --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_publicipaddresssku.go @@ -0,0 +1,9 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressSku struct { + Name *PublicIPAddressSkuName `json:"name,omitempty"` + Tier *PublicIPAddressSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_resourcenavigationlink.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_resourcenavigationlink.go new file mode 100644 index 00000000000..b362ba5a95b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_resourcenavigationlink.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ResourceNavigationLinkFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_resourcenavigationlinkformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_resourcenavigationlinkformat.go new file mode 100644 index 00000000000..83b81bd5755 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_resourcenavigationlinkformat.go @@ -0,0 +1,10 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLinkFormat struct { + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_resourceset.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_resourceset.go new file mode 100644 index 00000000000..7e28952a0a0 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_resourceset.go @@ -0,0 +1,8 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceSet struct { + Subscriptions *[]string `json:"subscriptions,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..9a09f483b36 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_route.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_route.go new file mode 100644 index 00000000000..fe09505f366 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_route.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Route struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RoutePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_routepropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_routepropertiesformat.go new file mode 100644 index 00000000000..3d3840b7cfb --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_routepropertiesformat.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutePropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + HasBgpOverride *bool `json:"hasBgpOverride,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + NextHopType RouteNextHopType `json:"nextHopType"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_routetable.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_routetable.go new file mode 100644 index 00000000000..dc456ac5330 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_routetable.go @@ -0,0 +1,14 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTable struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteTablePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_routetablepropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_routetablepropertiesformat.go new file mode 100644 index 00000000000..29d5488b413 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_routetablepropertiesformat.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTablePropertiesFormat struct { + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Routes *[]Route `json:"routes,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_securityrule.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_securityrule.go new file mode 100644 index 00000000000..2b52f93106a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_securityrule.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_securityrulepropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_securityrulepropertiesformat.go new file mode 100644 index 00000000000..549b4d495a6 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_securityrulepropertiesformat.go @@ -0,0 +1,23 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulePropertiesFormat struct { + Access SecurityRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction SecurityRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_serviceassociationlink.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_serviceassociationlink.go new file mode 100644 index 00000000000..eff71aa8797 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_serviceassociationlink.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceAssociationLinkPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_serviceassociationlinkpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_serviceassociationlinkpropertiesformat.go new file mode 100644 index 00000000000..72fe6efec6b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_serviceassociationlinkpropertiesformat.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLinkPropertiesFormat struct { + AllowDelete *bool `json:"allowDelete,omitempty"` + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + Locations *[]string `json:"locations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_servicedelegationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_servicedelegationpropertiesformat.go new file mode 100644 index 00000000000..d130c80bc92 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_servicedelegationpropertiesformat.go @@ -0,0 +1,10 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceDelegationPropertiesFormat struct { + Actions *[]string `json:"actions,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_serviceendpointpolicy.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_serviceendpointpolicy.go new file mode 100644 index 00000000000..b164c8a3ad8 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_serviceendpointpolicy.go @@ -0,0 +1,15 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Kind *string `json:"kind,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_serviceendpointpolicydefinition.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_serviceendpointpolicydefinition.go new file mode 100644 index 00000000000..a715beb370f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_serviceendpointpolicydefinition.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinition struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_serviceendpointpolicydefinitionpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_serviceendpointpolicydefinitionpropertiesformat.go new file mode 100644 index 00000000000..6283b834876 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_serviceendpointpolicydefinitionpropertiesformat.go @@ -0,0 +1,11 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionPropertiesFormat struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` + ServiceResources *[]string `json:"serviceResources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_serviceendpointpolicypropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_serviceendpointpolicypropertiesformat.go new file mode 100644 index 00000000000..e39a39b0dc9 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_serviceendpointpolicypropertiesformat.go @@ -0,0 +1,13 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyPropertiesFormat struct { + ContextualServiceEndpointPolicies *[]string `json:"contextualServiceEndpointPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServiceAlias *string `json:"serviceAlias,omitempty"` + ServiceEndpointPolicyDefinitions *[]ServiceEndpointPolicyDefinition `json:"serviceEndpointPolicyDefinitions,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_serviceendpointpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_serviceendpointpropertiesformat.go new file mode 100644 index 00000000000..bf27483e5ab --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_serviceendpointpropertiesformat.go @@ -0,0 +1,11 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPropertiesFormat struct { + Locations *[]string `json:"locations,omitempty"` + NetworkIdentifier *SubResource `json:"networkIdentifier,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_subnet.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_subnet.go new file mode 100644 index 00000000000..586828d80aa --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_subnet.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Subnet struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SubnetPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_subnetpropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_subnetpropertiesformat.go new file mode 100644 index 00000000000..18e3434d7b5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_subnetpropertiesformat.go @@ -0,0 +1,28 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + ApplicationGatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"applicationGatewayIPConfigurations,omitempty"` + DefaultOutboundAccess *bool `json:"defaultOutboundAccess,omitempty"` + Delegations *[]Delegation `json:"delegations,omitempty"` + IPAllocations *[]SubResource `json:"ipAllocations,omitempty"` + IPConfigurationProfiles *[]IPConfigurationProfile `json:"ipConfigurationProfiles,omitempty"` + IPConfigurations *[]IPConfiguration `json:"ipConfigurations,omitempty"` + NatGateway *SubResource `json:"natGateway,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + PrivateEndpointNetworkPolicies *VirtualNetworkPrivateEndpointNetworkPolicies `json:"privateEndpointNetworkPolicies,omitempty"` + PrivateEndpoints *[]PrivateEndpoint `json:"privateEndpoints,omitempty"` + PrivateLinkServiceNetworkPolicies *VirtualNetworkPrivateLinkServiceNetworkPolicies `json:"privateLinkServiceNetworkPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Purpose *string `json:"purpose,omitempty"` + ResourceNavigationLinks *[]ResourceNavigationLink `json:"resourceNavigationLinks,omitempty"` + RouteTable *RouteTable `json:"routeTable,omitempty"` + ServiceAssociationLinks *[]ServiceAssociationLink `json:"serviceAssociationLinks,omitempty"` + ServiceEndpointPolicies *[]ServiceEndpointPolicy `json:"serviceEndpointPolicies,omitempty"` + ServiceEndpoints *[]ServiceEndpointPropertiesFormat `json:"serviceEndpoints,omitempty"` + SharingScope *SharingScope `json:"sharingScope,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_subresource.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_subresource.go new file mode 100644 index 00000000000..64ad7a5e2b6 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_subresource.go @@ -0,0 +1,8 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..5d2043fba12 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..a673cd2c104 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_virtualnetworktap.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_virtualnetworktap.go new file mode 100644 index 00000000000..d5bf88cf9cb --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_virtualnetworktap.go @@ -0,0 +1,14 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkTapPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/model_virtualnetworktappropertiesformat.go b/resource-manager/network/2024-01-01/virtualnetworktaps/model_virtualnetworktappropertiesformat.go new file mode 100644 index 00000000000..e75a60ff515 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/model_virtualnetworktappropertiesformat.go @@ -0,0 +1,13 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapPropertiesFormat struct { + DestinationLoadBalancerFrontEndIPConfiguration *FrontendIPConfiguration `json:"destinationLoadBalancerFrontEndIPConfiguration,omitempty"` + DestinationNetworkInterfaceIPConfiguration *NetworkInterfaceIPConfiguration `json:"destinationNetworkInterfaceIPConfiguration,omitempty"` + DestinationPort *int64 `json:"destinationPort,omitempty"` + NetworkInterfaceTapConfigurations *[]NetworkInterfaceTapConfiguration `json:"networkInterfaceTapConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/predicates.go b/resource-manager/network/2024-01-01/virtualnetworktaps/predicates.go new file mode 100644 index 00000000000..0b7fb5985f4 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/predicates.go @@ -0,0 +1,37 @@ +package virtualnetworktaps + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p VirtualNetworkTapOperationPredicate) Matches(input VirtualNetworkTap) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/virtualnetworktaps/version.go b/resource-manager/network/2024-01-01/virtualnetworktaps/version.go new file mode 100644 index 00000000000..fe96630abcd --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualnetworktaps/version.go @@ -0,0 +1,12 @@ +package virtualnetworktaps + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/virtualnetworktaps/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/virtualrouterpeerings/README.md b/resource-manager/network/2024-01-01/virtualrouterpeerings/README.md new file mode 100644 index 00000000000..345a1a3eb6b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouterpeerings/README.md @@ -0,0 +1,83 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualrouterpeerings` Documentation + +The `virtualrouterpeerings` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualrouterpeerings" +``` + + +### Client Initialization + +```go +client := virtualrouterpeerings.NewVirtualRouterPeeringsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `VirtualRouterPeeringsClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := commonids.NewVirtualRouterPeeringID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualRouterValue", "peeringValue") + +payload := virtualrouterpeerings.VirtualRouterPeering{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualRouterPeeringsClient.Delete` + +```go +ctx := context.TODO() +id := commonids.NewVirtualRouterPeeringID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualRouterValue", "peeringValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualRouterPeeringsClient.Get` + +```go +ctx := context.TODO() +id := commonids.NewVirtualRouterPeeringID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualRouterValue", "peeringValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualRouterPeeringsClient.List` + +```go +ctx := context.TODO() +id := virtualrouterpeerings.NewVirtualRouterID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualRouterValue") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/virtualrouterpeerings/client.go b/resource-manager/network/2024-01-01/virtualrouterpeerings/client.go new file mode 100644 index 00000000000..6b55e901ef5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouterpeerings/client.go @@ -0,0 +1,26 @@ +package virtualrouterpeerings + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualRouterPeeringsClient struct { + Client *resourcemanager.Client +} + +func NewVirtualRouterPeeringsClientWithBaseURI(sdkApi sdkEnv.Api) (*VirtualRouterPeeringsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "virtualrouterpeerings", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating VirtualRouterPeeringsClient: %+v", err) + } + + return &VirtualRouterPeeringsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/virtualrouterpeerings/constants.go b/resource-manager/network/2024-01-01/virtualrouterpeerings/constants.go new file mode 100644 index 00000000000..464d2b779c9 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouterpeerings/constants.go @@ -0,0 +1,57 @@ +package virtualrouterpeerings + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/virtualrouterpeerings/id_virtualrouter.go b/resource-manager/network/2024-01-01/virtualrouterpeerings/id_virtualrouter.go new file mode 100644 index 00000000000..85fff5b9af3 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouterpeerings/id_virtualrouter.go @@ -0,0 +1,130 @@ +package virtualrouterpeerings + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&VirtualRouterId{}) +} + +var _ resourceids.ResourceId = &VirtualRouterId{} + +// VirtualRouterId is a struct representing the Resource ID for a Virtual Router +type VirtualRouterId struct { + SubscriptionId string + ResourceGroupName string + VirtualRouterName string +} + +// NewVirtualRouterID returns a new VirtualRouterId struct +func NewVirtualRouterID(subscriptionId string, resourceGroupName string, virtualRouterName string) VirtualRouterId { + return VirtualRouterId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VirtualRouterName: virtualRouterName, + } +} + +// ParseVirtualRouterID parses 'input' into a VirtualRouterId +func ParseVirtualRouterID(input string) (*VirtualRouterId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualRouterId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualRouterId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseVirtualRouterIDInsensitively parses 'input' case-insensitively into a VirtualRouterId +// note: this method should only be used for API response data and not user input +func ParseVirtualRouterIDInsensitively(input string) (*VirtualRouterId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualRouterId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualRouterId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *VirtualRouterId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VirtualRouterName, ok = input.Parsed["virtualRouterName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "virtualRouterName", input) + } + + return nil +} + +// ValidateVirtualRouterID checks that 'input' can be parsed as a Virtual Router ID +func ValidateVirtualRouterID(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 := ParseVirtualRouterID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Virtual Router ID +func (id VirtualRouterId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/virtualRouters/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VirtualRouterName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Virtual Router ID +func (id VirtualRouterId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVirtualRouters", "virtualRouters", "virtualRouters"), + resourceids.UserSpecifiedSegment("virtualRouterName", "virtualRouterValue"), + } +} + +// String returns a human-readable description of this Virtual Router ID +func (id VirtualRouterId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Virtual Router Name: %q", id.VirtualRouterName), + } + return fmt.Sprintf("Virtual Router (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualrouterpeerings/id_virtualrouter_test.go b/resource-manager/network/2024-01-01/virtualrouterpeerings/id_virtualrouter_test.go new file mode 100644 index 00000000000..43ccb8cff05 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouterpeerings/id_virtualrouter_test.go @@ -0,0 +1,282 @@ +package virtualrouterpeerings + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &VirtualRouterId{} + +func TestNewVirtualRouterID(t *testing.T) { + id := NewVirtualRouterID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualRouterValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VirtualRouterName != "virtualRouterValue" { + t.Fatalf("Expected %q but got %q for Segment 'VirtualRouterName'", id.VirtualRouterName, "virtualRouterValue") + } +} + +func TestFormatVirtualRouterID(t *testing.T) { + actual := NewVirtualRouterID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualRouterValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualRouters/virtualRouterValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseVirtualRouterID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualRouterId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualRouters", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualRouters/virtualRouterValue", + Expected: &VirtualRouterId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualRouterName: "virtualRouterValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualRouters/virtualRouterValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualRouterID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualRouterName != v.Expected.VirtualRouterName { + t.Fatalf("Expected %q but got %q for VirtualRouterName", v.Expected.VirtualRouterName, actual.VirtualRouterName) + } + + } +} + +func TestParseVirtualRouterIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualRouterId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualRouters", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlRoUtErS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualRouters/virtualRouterValue", + Expected: &VirtualRouterId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualRouterName: "virtualRouterValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualRouters/virtualRouterValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlRoUtErS/vIrTuAlRoUtErVaLuE", + Expected: &VirtualRouterId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VirtualRouterName: "vIrTuAlRoUtErVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlRoUtErS/vIrTuAlRoUtErVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualRouterIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualRouterName != v.Expected.VirtualRouterName { + t.Fatalf("Expected %q but got %q for VirtualRouterName", v.Expected.VirtualRouterName, actual.VirtualRouterName) + } + + } +} + +func TestSegmentsForVirtualRouterId(t *testing.T) { + segments := VirtualRouterId{}.Segments() + if len(segments) == 0 { + t.Fatalf("VirtualRouterId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualrouterpeerings/method_createorupdate.go b/resource-manager/network/2024-01-01/virtualrouterpeerings/method_createorupdate.go new file mode 100644 index 00000000000..c3c6be8f2f4 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouterpeerings/method_createorupdate.go @@ -0,0 +1,76 @@ +package virtualrouterpeerings + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VirtualRouterPeering +} + +// CreateOrUpdate ... +func (c VirtualRouterPeeringsClient) CreateOrUpdate(ctx context.Context, id commonids.VirtualRouterPeeringId, input VirtualRouterPeering) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c VirtualRouterPeeringsClient) CreateOrUpdateThenPoll(ctx context.Context, id commonids.VirtualRouterPeeringId, input VirtualRouterPeering) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualrouterpeerings/method_delete.go b/resource-manager/network/2024-01-01/virtualrouterpeerings/method_delete.go new file mode 100644 index 00000000000..0f1d37addbb --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouterpeerings/method_delete.go @@ -0,0 +1,72 @@ +package virtualrouterpeerings + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c VirtualRouterPeeringsClient) Delete(ctx context.Context, id commonids.VirtualRouterPeeringId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c VirtualRouterPeeringsClient) DeleteThenPoll(ctx context.Context, id commonids.VirtualRouterPeeringId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualrouterpeerings/method_get.go b/resource-manager/network/2024-01-01/virtualrouterpeerings/method_get.go new file mode 100644 index 00000000000..684fe0cb2fc --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouterpeerings/method_get.go @@ -0,0 +1,55 @@ +package virtualrouterpeerings + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VirtualRouterPeering +} + +// Get ... +func (c VirtualRouterPeeringsClient) Get(ctx context.Context, id commonids.VirtualRouterPeeringId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VirtualRouterPeering + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualrouterpeerings/method_list.go b/resource-manager/network/2024-01-01/virtualrouterpeerings/method_list.go new file mode 100644 index 00000000000..c0a333e6c0d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouterpeerings/method_list.go @@ -0,0 +1,92 @@ +package virtualrouterpeerings + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VirtualRouterPeering +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []VirtualRouterPeering +} + +// List ... +func (c VirtualRouterPeeringsClient) List(ctx context.Context, id VirtualRouterId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/peerings", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VirtualRouterPeering `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c VirtualRouterPeeringsClient) ListComplete(ctx context.Context, id VirtualRouterId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, VirtualRouterPeeringOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualRouterPeeringsClient) ListCompleteMatchingPredicate(ctx context.Context, id VirtualRouterId, predicate VirtualRouterPeeringOperationPredicate) (result ListCompleteResult, err error) { + items := make([]VirtualRouterPeering, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualrouterpeerings/model_virtualrouterpeering.go b/resource-manager/network/2024-01-01/virtualrouterpeerings/model_virtualrouterpeering.go new file mode 100644 index 00000000000..148137d1d12 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouterpeerings/model_virtualrouterpeering.go @@ -0,0 +1,12 @@ +package virtualrouterpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualRouterPeering struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualRouterPeeringProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualrouterpeerings/model_virtualrouterpeeringproperties.go b/resource-manager/network/2024-01-01/virtualrouterpeerings/model_virtualrouterpeeringproperties.go new file mode 100644 index 00000000000..c205251cdff --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouterpeerings/model_virtualrouterpeeringproperties.go @@ -0,0 +1,10 @@ +package virtualrouterpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualRouterPeeringProperties struct { + PeerAsn *int64 `json:"peerAsn,omitempty"` + PeerIP *string `json:"peerIp,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualrouterpeerings/predicates.go b/resource-manager/network/2024-01-01/virtualrouterpeerings/predicates.go new file mode 100644 index 00000000000..1e181881675 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouterpeerings/predicates.go @@ -0,0 +1,32 @@ +package virtualrouterpeerings + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualRouterPeeringOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p VirtualRouterPeeringOperationPredicate) Matches(input VirtualRouterPeering) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/virtualrouterpeerings/version.go b/resource-manager/network/2024-01-01/virtualrouterpeerings/version.go new file mode 100644 index 00000000000..2e5fa1dc574 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouterpeerings/version.go @@ -0,0 +1,12 @@ +package virtualrouterpeerings + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/virtualrouterpeerings/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/virtualrouters/README.md b/resource-manager/network/2024-01-01/virtualrouters/README.md new file mode 100644 index 00000000000..a6add7ba840 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouters/README.md @@ -0,0 +1,100 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualrouters` Documentation + +The `virtualrouters` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualrouters" +``` + + +### Client Initialization + +```go +client := virtualrouters.NewVirtualRoutersClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `VirtualRoutersClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := virtualrouters.NewVirtualRouterID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualRouterValue") + +payload := virtualrouters.VirtualRouter{ + // ... +} + + +if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualRoutersClient.Delete` + +```go +ctx := context.TODO() +id := virtualrouters.NewVirtualRouterID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualRouterValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualRoutersClient.Get` + +```go +ctx := context.TODO() +id := virtualrouters.NewVirtualRouterID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualRouterValue") + +read, err := client.Get(ctx, id, virtualrouters.DefaultGetOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualRoutersClient.List` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualRoutersClient.ListByResourceGroup` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.ListByResourceGroup(ctx, id)` can be used to do batched pagination +items, err := client.ListByResourceGroupComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/virtualrouters/client.go b/resource-manager/network/2024-01-01/virtualrouters/client.go new file mode 100644 index 00000000000..37e6baf91a8 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouters/client.go @@ -0,0 +1,26 @@ +package virtualrouters + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualRoutersClient struct { + Client *resourcemanager.Client +} + +func NewVirtualRoutersClientWithBaseURI(sdkApi sdkEnv.Api) (*VirtualRoutersClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "virtualrouters", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating VirtualRoutersClient: %+v", err) + } + + return &VirtualRoutersClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/virtualrouters/constants.go b/resource-manager/network/2024-01-01/virtualrouters/constants.go new file mode 100644 index 00000000000..1a43afab5dd --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouters/constants.go @@ -0,0 +1,57 @@ +package virtualrouters + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/virtualrouters/id_virtualrouter.go b/resource-manager/network/2024-01-01/virtualrouters/id_virtualrouter.go new file mode 100644 index 00000000000..3e9ac08d3a1 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouters/id_virtualrouter.go @@ -0,0 +1,130 @@ +package virtualrouters + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&VirtualRouterId{}) +} + +var _ resourceids.ResourceId = &VirtualRouterId{} + +// VirtualRouterId is a struct representing the Resource ID for a Virtual Router +type VirtualRouterId struct { + SubscriptionId string + ResourceGroupName string + VirtualRouterName string +} + +// NewVirtualRouterID returns a new VirtualRouterId struct +func NewVirtualRouterID(subscriptionId string, resourceGroupName string, virtualRouterName string) VirtualRouterId { + return VirtualRouterId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VirtualRouterName: virtualRouterName, + } +} + +// ParseVirtualRouterID parses 'input' into a VirtualRouterId +func ParseVirtualRouterID(input string) (*VirtualRouterId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualRouterId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualRouterId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseVirtualRouterIDInsensitively parses 'input' case-insensitively into a VirtualRouterId +// note: this method should only be used for API response data and not user input +func ParseVirtualRouterIDInsensitively(input string) (*VirtualRouterId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualRouterId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualRouterId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *VirtualRouterId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VirtualRouterName, ok = input.Parsed["virtualRouterName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "virtualRouterName", input) + } + + return nil +} + +// ValidateVirtualRouterID checks that 'input' can be parsed as a Virtual Router ID +func ValidateVirtualRouterID(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 := ParseVirtualRouterID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Virtual Router ID +func (id VirtualRouterId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/virtualRouters/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VirtualRouterName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Virtual Router ID +func (id VirtualRouterId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVirtualRouters", "virtualRouters", "virtualRouters"), + resourceids.UserSpecifiedSegment("virtualRouterName", "virtualRouterValue"), + } +} + +// String returns a human-readable description of this Virtual Router ID +func (id VirtualRouterId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Virtual Router Name: %q", id.VirtualRouterName), + } + return fmt.Sprintf("Virtual Router (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualrouters/id_virtualrouter_test.go b/resource-manager/network/2024-01-01/virtualrouters/id_virtualrouter_test.go new file mode 100644 index 00000000000..eae7920cd09 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouters/id_virtualrouter_test.go @@ -0,0 +1,282 @@ +package virtualrouters + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &VirtualRouterId{} + +func TestNewVirtualRouterID(t *testing.T) { + id := NewVirtualRouterID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualRouterValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VirtualRouterName != "virtualRouterValue" { + t.Fatalf("Expected %q but got %q for Segment 'VirtualRouterName'", id.VirtualRouterName, "virtualRouterValue") + } +} + +func TestFormatVirtualRouterID(t *testing.T) { + actual := NewVirtualRouterID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualRouterValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualRouters/virtualRouterValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseVirtualRouterID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualRouterId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualRouters", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualRouters/virtualRouterValue", + Expected: &VirtualRouterId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualRouterName: "virtualRouterValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualRouters/virtualRouterValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualRouterID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualRouterName != v.Expected.VirtualRouterName { + t.Fatalf("Expected %q but got %q for VirtualRouterName", v.Expected.VirtualRouterName, actual.VirtualRouterName) + } + + } +} + +func TestParseVirtualRouterIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualRouterId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualRouters", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlRoUtErS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualRouters/virtualRouterValue", + Expected: &VirtualRouterId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualRouterName: "virtualRouterValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualRouters/virtualRouterValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlRoUtErS/vIrTuAlRoUtErVaLuE", + Expected: &VirtualRouterId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VirtualRouterName: "vIrTuAlRoUtErVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlRoUtErS/vIrTuAlRoUtErVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualRouterIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualRouterName != v.Expected.VirtualRouterName { + t.Fatalf("Expected %q but got %q for VirtualRouterName", v.Expected.VirtualRouterName, actual.VirtualRouterName) + } + + } +} + +func TestSegmentsForVirtualRouterId(t *testing.T) { + segments := VirtualRouterId{}.Segments() + if len(segments) == 0 { + t.Fatalf("VirtualRouterId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualrouters/method_createorupdate.go b/resource-manager/network/2024-01-01/virtualrouters/method_createorupdate.go new file mode 100644 index 00000000000..a9d77afc1e5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouters/method_createorupdate.go @@ -0,0 +1,75 @@ +package virtualrouters + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VirtualRouter +} + +// CreateOrUpdate ... +func (c VirtualRoutersClient) CreateOrUpdate(ctx context.Context, id VirtualRouterId, input VirtualRouter) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed +func (c VirtualRoutersClient) CreateOrUpdateThenPoll(ctx context.Context, id VirtualRouterId, input VirtualRouter) error { + result, err := c.CreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing CreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after CreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualrouters/method_delete.go b/resource-manager/network/2024-01-01/virtualrouters/method_delete.go new file mode 100644 index 00000000000..7dcaaf847d3 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouters/method_delete.go @@ -0,0 +1,71 @@ +package virtualrouters + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c VirtualRoutersClient) Delete(ctx context.Context, id VirtualRouterId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c VirtualRoutersClient) DeleteThenPoll(ctx context.Context, id VirtualRouterId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualrouters/method_get.go b/resource-manager/network/2024-01-01/virtualrouters/method_get.go new file mode 100644 index 00000000000..2e829ce071e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouters/method_get.go @@ -0,0 +1,83 @@ +package virtualrouters + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VirtualRouter +} + +type GetOperationOptions struct { + Expand *string +} + +func DefaultGetOperationOptions() GetOperationOptions { + return GetOperationOptions{} +} + +func (o GetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// Get ... +func (c VirtualRoutersClient) Get(ctx context.Context, id VirtualRouterId, options GetOperationOptions) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VirtualRouter + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualrouters/method_list.go b/resource-manager/network/2024-01-01/virtualrouters/method_list.go new file mode 100644 index 00000000000..db67e56568e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouters/method_list.go @@ -0,0 +1,93 @@ +package virtualrouters + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VirtualRouter +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []VirtualRouter +} + +// List ... +func (c VirtualRoutersClient) List(ctx context.Context, id commonids.SubscriptionId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/virtualRouters", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VirtualRouter `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c VirtualRoutersClient) ListComplete(ctx context.Context, id commonids.SubscriptionId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, VirtualRouterOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualRoutersClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate VirtualRouterOperationPredicate) (result ListCompleteResult, err error) { + items := make([]VirtualRouter, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualrouters/method_listbyresourcegroup.go b/resource-manager/network/2024-01-01/virtualrouters/method_listbyresourcegroup.go new file mode 100644 index 00000000000..9f01dcc539a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouters/method_listbyresourcegroup.go @@ -0,0 +1,93 @@ +package virtualrouters + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListByResourceGroupOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VirtualRouter +} + +type ListByResourceGroupCompleteResult struct { + LatestHttpResponse *http.Response + Items []VirtualRouter +} + +// ListByResourceGroup ... +func (c VirtualRoutersClient) ListByResourceGroup(ctx context.Context, id commonids.ResourceGroupId) (result ListByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/virtualRouters", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VirtualRouter `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListByResourceGroupComplete retrieves all the results into a single object +func (c VirtualRoutersClient) ListByResourceGroupComplete(ctx context.Context, id commonids.ResourceGroupId) (ListByResourceGroupCompleteResult, error) { + return c.ListByResourceGroupCompleteMatchingPredicate(ctx, id, VirtualRouterOperationPredicate{}) +} + +// ListByResourceGroupCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualRoutersClient) ListByResourceGroupCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate VirtualRouterOperationPredicate) (result ListByResourceGroupCompleteResult, err error) { + items := make([]VirtualRouter, 0) + + resp, err := c.ListByResourceGroup(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListByResourceGroupCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualrouters/model_subresource.go b/resource-manager/network/2024-01-01/virtualrouters/model_subresource.go new file mode 100644 index 00000000000..f9c28cc090f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouters/model_subresource.go @@ -0,0 +1,8 @@ +package virtualrouters + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualrouters/model_virtualrouter.go b/resource-manager/network/2024-01-01/virtualrouters/model_virtualrouter.go new file mode 100644 index 00000000000..ac50af509f1 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouters/model_virtualrouter.go @@ -0,0 +1,14 @@ +package virtualrouters + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualRouter struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualRouterPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualrouters/model_virtualrouterpropertiesformat.go b/resource-manager/network/2024-01-01/virtualrouters/model_virtualrouterpropertiesformat.go new file mode 100644 index 00000000000..24601ff2eb4 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouters/model_virtualrouterpropertiesformat.go @@ -0,0 +1,13 @@ +package virtualrouters + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualRouterPropertiesFormat struct { + HostedGateway *SubResource `json:"hostedGateway,omitempty"` + HostedSubnet *SubResource `json:"hostedSubnet,omitempty"` + Peerings *[]SubResource `json:"peerings,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualRouterAsn *int64 `json:"virtualRouterAsn,omitempty"` + VirtualRouterIPs *[]string `json:"virtualRouterIps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualrouters/predicates.go b/resource-manager/network/2024-01-01/virtualrouters/predicates.go new file mode 100644 index 00000000000..676ee423641 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouters/predicates.go @@ -0,0 +1,37 @@ +package virtualrouters + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualRouterOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p VirtualRouterOperationPredicate) Matches(input VirtualRouter) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/virtualrouters/version.go b/resource-manager/network/2024-01-01/virtualrouters/version.go new file mode 100644 index 00000000000..f082e0d6275 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualrouters/version.go @@ -0,0 +1,12 @@ +package virtualrouters + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/virtualrouters/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/virtualwans/README.md b/resource-manager/network/2024-01-01/virtualwans/README.md new file mode 100644 index 00000000000..ac5aca73669 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/README.md @@ -0,0 +1,1468 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualwans` Documentation + +The `virtualwans` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/virtualwans" +``` + + +### Client Initialization + +```go +client := virtualwans.NewVirtualWANsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `VirtualWANsClient.ConfigurationPolicyGroupsCreateOrUpdate` + +```go +ctx := context.TODO() +id := virtualwans.NewConfigurationPolicyGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnServerConfigurationValue", "configurationPolicyGroupValue") + +payload := virtualwans.VpnServerConfigurationPolicyGroup{ + // ... +} + + +if err := client.ConfigurationPolicyGroupsCreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.ConfigurationPolicyGroupsDelete` + +```go +ctx := context.TODO() +id := virtualwans.NewConfigurationPolicyGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnServerConfigurationValue", "configurationPolicyGroupValue") + +if err := client.ConfigurationPolicyGroupsDeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.ConfigurationPolicyGroupsGet` + +```go +ctx := context.TODO() +id := virtualwans.NewConfigurationPolicyGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnServerConfigurationValue", "configurationPolicyGroupValue") + +read, err := client.ConfigurationPolicyGroupsGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualWANsClient.ConfigurationPolicyGroupsListByVpnServerConfiguration` + +```go +ctx := context.TODO() +id := virtualwans.NewVpnServerConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnServerConfigurationValue") + +// alternatively `client.ConfigurationPolicyGroupsListByVpnServerConfiguration(ctx, id)` can be used to do batched pagination +items, err := client.ConfigurationPolicyGroupsListByVpnServerConfigurationComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.Generatevirtualwanvpnserverconfigurationvpnprofile` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualWANID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualWanValue") + +payload := virtualwans.VirtualWanVpnProfileParameters{ + // ... +} + + +if err := client.GeneratevirtualwanvpnserverconfigurationvpnprofileThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.HubRouteTablesCreateOrUpdate` + +```go +ctx := context.TODO() +id := virtualwans.NewHubRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "hubRouteTableValue") + +payload := virtualwans.HubRouteTable{ + // ... +} + + +if err := client.HubRouteTablesCreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.HubRouteTablesDelete` + +```go +ctx := context.TODO() +id := virtualwans.NewHubRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "hubRouteTableValue") + +if err := client.HubRouteTablesDeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.HubRouteTablesGet` + +```go +ctx := context.TODO() +id := virtualwans.NewHubRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "hubRouteTableValue") + +read, err := client.HubRouteTablesGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualWANsClient.HubRouteTablesList` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualHubID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue") + +// alternatively `client.HubRouteTablesList(ctx, id)` can be used to do batched pagination +items, err := client.HubRouteTablesListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.HubVirtualNetworkConnectionsCreateOrUpdate` + +```go +ctx := context.TODO() +id := virtualwans.NewHubVirtualNetworkConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "hubVirtualNetworkConnectionValue") + +payload := virtualwans.HubVirtualNetworkConnection{ + // ... +} + + +if err := client.HubVirtualNetworkConnectionsCreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.HubVirtualNetworkConnectionsDelete` + +```go +ctx := context.TODO() +id := virtualwans.NewHubVirtualNetworkConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "hubVirtualNetworkConnectionValue") + +if err := client.HubVirtualNetworkConnectionsDeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.HubVirtualNetworkConnectionsGet` + +```go +ctx := context.TODO() +id := virtualwans.NewHubVirtualNetworkConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "hubVirtualNetworkConnectionValue") + +read, err := client.HubVirtualNetworkConnectionsGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualWANsClient.HubVirtualNetworkConnectionsList` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualHubID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue") + +// alternatively `client.HubVirtualNetworkConnectionsList(ctx, id)` can be used to do batched pagination +items, err := client.HubVirtualNetworkConnectionsListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.NatRulesCreateOrUpdate` + +```go +ctx := context.TODO() +id := virtualwans.NewNatRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue", "natRuleValue") + +payload := virtualwans.VpnGatewayNatRule{ + // ... +} + + +if err := client.NatRulesCreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.NatRulesDelete` + +```go +ctx := context.TODO() +id := virtualwans.NewNatRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue", "natRuleValue") + +if err := client.NatRulesDeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.NatRulesGet` + +```go +ctx := context.TODO() +id := virtualwans.NewNatRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue", "natRuleValue") + +read, err := client.NatRulesGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualWANsClient.NatRulesListByVpnGateway` + +```go +ctx := context.TODO() +id := virtualwans.NewVpnGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue") + +// alternatively `client.NatRulesListByVpnGateway(ctx, id)` can be used to do batched pagination +items, err := client.NatRulesListByVpnGatewayComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.NetworkVirtualApplianceConnectionsCreateOrUpdate` + +```go +ctx := context.TODO() +id := virtualwans.NewNetworkVirtualApplianceConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue", "networkVirtualApplianceConnectionValue") + +payload := virtualwans.NetworkVirtualApplianceConnection{ + // ... +} + + +if err := client.NetworkVirtualApplianceConnectionsCreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.NetworkVirtualApplianceConnectionsDelete` + +```go +ctx := context.TODO() +id := virtualwans.NewNetworkVirtualApplianceConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue", "networkVirtualApplianceConnectionValue") + +if err := client.NetworkVirtualApplianceConnectionsDeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.NetworkVirtualApplianceConnectionsGet` + +```go +ctx := context.TODO() +id := virtualwans.NewNetworkVirtualApplianceConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue", "networkVirtualApplianceConnectionValue") + +read, err := client.NetworkVirtualApplianceConnectionsGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualWANsClient.NetworkVirtualApplianceConnectionsList` + +```go +ctx := context.TODO() +id := virtualwans.NewNetworkVirtualApplianceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue") + +// alternatively `client.NetworkVirtualApplianceConnectionsList(ctx, id)` can be used to do batched pagination +items, err := client.NetworkVirtualApplianceConnectionsListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.P2sVpnGatewaysCreateOrUpdate` + +```go +ctx := context.TODO() +id := commonids.NewVirtualWANP2SVPNGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "p2sVpnGatewayValue") + +payload := virtualwans.P2SVpnGateway{ + // ... +} + + +if err := client.P2sVpnGatewaysCreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.P2sVpnGatewaysDelete` + +```go +ctx := context.TODO() +id := commonids.NewVirtualWANP2SVPNGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "p2sVpnGatewayValue") + +if err := client.P2sVpnGatewaysDeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.P2sVpnGatewaysGet` + +```go +ctx := context.TODO() +id := commonids.NewVirtualWANP2SVPNGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "p2sVpnGatewayValue") + +read, err := client.P2sVpnGatewaysGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualWANsClient.P2sVpnGatewaysList` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.P2sVpnGatewaysList(ctx, id)` can be used to do batched pagination +items, err := client.P2sVpnGatewaysListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.P2sVpnGatewaysListByResourceGroup` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.P2sVpnGatewaysListByResourceGroup(ctx, id)` can be used to do batched pagination +items, err := client.P2sVpnGatewaysListByResourceGroupComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.RouteMapsCreateOrUpdate` + +```go +ctx := context.TODO() +id := virtualwans.NewRouteMapID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "routeMapValue") + +payload := virtualwans.RouteMap{ + // ... +} + + +if err := client.RouteMapsCreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.RouteMapsDelete` + +```go +ctx := context.TODO() +id := virtualwans.NewRouteMapID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "routeMapValue") + +if err := client.RouteMapsDeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.RouteMapsGet` + +```go +ctx := context.TODO() +id := virtualwans.NewRouteMapID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "routeMapValue") + +read, err := client.RouteMapsGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualWANsClient.RouteMapsList` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualHubID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue") + +// alternatively `client.RouteMapsList(ctx, id)` can be used to do batched pagination +items, err := client.RouteMapsListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.RoutingIntentCreateOrUpdate` + +```go +ctx := context.TODO() +id := virtualwans.NewRoutingIntentID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "routingIntentValue") + +payload := virtualwans.RoutingIntent{ + // ... +} + + +if err := client.RoutingIntentCreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.RoutingIntentDelete` + +```go +ctx := context.TODO() +id := virtualwans.NewRoutingIntentID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "routingIntentValue") + +if err := client.RoutingIntentDeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.RoutingIntentGet` + +```go +ctx := context.TODO() +id := virtualwans.NewRoutingIntentID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "routingIntentValue") + +read, err := client.RoutingIntentGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualWANsClient.RoutingIntentList` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualHubID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue") + +// alternatively `client.RoutingIntentList(ctx, id)` can be used to do batched pagination +items, err := client.RoutingIntentListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.SupportedSecurityProviders` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualWANID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualWanValue") + +read, err := client.SupportedSecurityProviders(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualWANsClient.UpdateTags` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualWANID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualWanValue") + +payload := virtualwans.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualHubBgpConnectionCreateOrUpdate` + +```go +ctx := context.TODO() +id := commonids.NewVirtualHubBGPConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "bgpConnectionValue") + +payload := virtualwans.BgpConnection{ + // ... +} + + +if err := client.VirtualHubBgpConnectionCreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualHubBgpConnectionDelete` + +```go +ctx := context.TODO() +id := commonids.NewVirtualHubBGPConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "bgpConnectionValue") + +if err := client.VirtualHubBgpConnectionDeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualHubBgpConnectionGet` + +```go +ctx := context.TODO() +id := commonids.NewVirtualHubBGPConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "bgpConnectionValue") + +read, err := client.VirtualHubBgpConnectionGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualHubBgpConnectionsList` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualHubID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue") + +// alternatively `client.VirtualHubBgpConnectionsList(ctx, id)` can be used to do batched pagination +items, err := client.VirtualHubBgpConnectionsListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualHubBgpConnectionsListAdvertisedRoutes` + +```go +ctx := context.TODO() +id := commonids.NewVirtualHubBGPConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "bgpConnectionValue") + +if err := client.VirtualHubBgpConnectionsListAdvertisedRoutesThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualHubBgpConnectionsListLearnedRoutes` + +```go +ctx := context.TODO() +id := commonids.NewVirtualHubBGPConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "bgpConnectionValue") + +if err := client.VirtualHubBgpConnectionsListLearnedRoutesThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualHubIPConfigurationCreateOrUpdate` + +```go +ctx := context.TODO() +id := commonids.NewVirtualHubIPConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "ipConfigurationValue") + +payload := virtualwans.HubIPConfiguration{ + // ... +} + + +if err := client.VirtualHubIPConfigurationCreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualHubIPConfigurationDelete` + +```go +ctx := context.TODO() +id := commonids.NewVirtualHubIPConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "ipConfigurationValue") + +if err := client.VirtualHubIPConfigurationDeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualHubIPConfigurationGet` + +```go +ctx := context.TODO() +id := commonids.NewVirtualHubIPConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "ipConfigurationValue") + +read, err := client.VirtualHubIPConfigurationGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualHubIPConfigurationList` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualHubID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue") + +// alternatively `client.VirtualHubIPConfigurationList(ctx, id)` can be used to do batched pagination +items, err := client.VirtualHubIPConfigurationListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualHubRouteTableV2sCreateOrUpdate` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualHubRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "routeTableValue") + +payload := virtualwans.VirtualHubRouteTableV2{ + // ... +} + + +if err := client.VirtualHubRouteTableV2sCreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualHubRouteTableV2sDelete` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualHubRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "routeTableValue") + +if err := client.VirtualHubRouteTableV2sDeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualHubRouteTableV2sGet` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualHubRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "routeTableValue") + +read, err := client.VirtualHubRouteTableV2sGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualHubRouteTableV2sList` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualHubID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue") + +// alternatively `client.VirtualHubRouteTableV2sList(ctx, id)` can be used to do batched pagination +items, err := client.VirtualHubRouteTableV2sListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualHubsCreateOrUpdate` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualHubID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue") + +payload := virtualwans.VirtualHub{ + // ... +} + + +if err := client.VirtualHubsCreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualHubsDelete` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualHubID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue") + +if err := client.VirtualHubsDeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualHubsGet` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualHubID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue") + +read, err := client.VirtualHubsGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualHubsGetEffectiveVirtualHubRoutes` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualHubID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue") + +payload := virtualwans.EffectiveRoutesParameters{ + // ... +} + + +if err := client.VirtualHubsGetEffectiveVirtualHubRoutesThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualHubsGetInboundRoutes` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualHubID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue") + +payload := virtualwans.GetInboundRoutesParameters{ + // ... +} + + +if err := client.VirtualHubsGetInboundRoutesThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualHubsGetOutboundRoutes` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualHubID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue") + +payload := virtualwans.GetOutboundRoutesParameters{ + // ... +} + + +if err := client.VirtualHubsGetOutboundRoutesThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualHubsList` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.VirtualHubsList(ctx, id)` can be used to do batched pagination +items, err := client.VirtualHubsListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualHubsListByResourceGroup` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.VirtualHubsListByResourceGroup(ctx, id)` can be used to do batched pagination +items, err := client.VirtualHubsListByResourceGroupComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualHubsUpdateTags` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualHubID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue") + +payload := virtualwans.TagsObject{ + // ... +} + + +read, err := client.VirtualHubsUpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualWansCreateOrUpdate` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualWANID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualWanValue") + +payload := virtualwans.VirtualWAN{ + // ... +} + + +if err := client.VirtualWansCreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualWansDelete` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualWANID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualWanValue") + +if err := client.VirtualWansDeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualWansGet` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualWANID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualWanValue") + +read, err := client.VirtualWansGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualWansList` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.VirtualWansList(ctx, id)` can be used to do batched pagination +items, err := client.VirtualWansListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.VirtualWansListByResourceGroup` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.VirtualWansListByResourceGroup(ctx, id)` can be used to do batched pagination +items, err := client.VirtualWansListByResourceGroupComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.VpnConnectionsCreateOrUpdate` + +```go +ctx := context.TODO() +id := commonids.NewVPNConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue", "vpnConnectionValue") + +payload := virtualwans.VpnConnection{ + // ... +} + + +if err := client.VpnConnectionsCreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VpnConnectionsDelete` + +```go +ctx := context.TODO() +id := commonids.NewVPNConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue", "vpnConnectionValue") + +if err := client.VpnConnectionsDeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VpnConnectionsGet` + +```go +ctx := context.TODO() +id := commonids.NewVPNConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue", "vpnConnectionValue") + +read, err := client.VpnConnectionsGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualWANsClient.VpnConnectionsListByVpnGateway` + +```go +ctx := context.TODO() +id := virtualwans.NewVpnGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue") + +// alternatively `client.VpnConnectionsListByVpnGateway(ctx, id)` can be used to do batched pagination +items, err := client.VpnConnectionsListByVpnGatewayComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.VpnConnectionsStartPacketCapture` + +```go +ctx := context.TODO() +id := commonids.NewVPNConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue", "vpnConnectionValue") + +payload := virtualwans.VpnConnectionPacketCaptureStartParameters{ + // ... +} + + +if err := client.VpnConnectionsStartPacketCaptureThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VpnConnectionsStopPacketCapture` + +```go +ctx := context.TODO() +id := commonids.NewVPNConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue", "vpnConnectionValue") + +payload := virtualwans.VpnConnectionPacketCaptureStopParameters{ + // ... +} + + +if err := client.VpnConnectionsStopPacketCaptureThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VpnGatewaysCreateOrUpdate` + +```go +ctx := context.TODO() +id := virtualwans.NewVpnGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue") + +payload := virtualwans.VpnGateway{ + // ... +} + + +if err := client.VpnGatewaysCreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VpnGatewaysDelete` + +```go +ctx := context.TODO() +id := virtualwans.NewVpnGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue") + +if err := client.VpnGatewaysDeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VpnGatewaysGet` + +```go +ctx := context.TODO() +id := virtualwans.NewVpnGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue") + +read, err := client.VpnGatewaysGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualWANsClient.VpnGatewaysList` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.VpnGatewaysList(ctx, id)` can be used to do batched pagination +items, err := client.VpnGatewaysListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.VpnGatewaysListByResourceGroup` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.VpnGatewaysListByResourceGroup(ctx, id)` can be used to do batched pagination +items, err := client.VpnGatewaysListByResourceGroupComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.VpnLinkConnectionsGetIkeSas` + +```go +ctx := context.TODO() +id := virtualwans.NewVpnLinkConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue", "vpnConnectionValue", "vpnLinkConnectionValue") + +if err := client.VpnLinkConnectionsGetIkeSasThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VpnLinkConnectionsListByVpnConnection` + +```go +ctx := context.TODO() +id := commonids.NewVPNConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue", "vpnConnectionValue") + +// alternatively `client.VpnLinkConnectionsListByVpnConnection(ctx, id)` can be used to do batched pagination +items, err := client.VpnLinkConnectionsListByVpnConnectionComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.VpnServerConfigurationsAssociatedWithVirtualWanList` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualWANID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualWanValue") + +if err := client.VpnServerConfigurationsAssociatedWithVirtualWanListThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VpnServerConfigurationsCreateOrUpdate` + +```go +ctx := context.TODO() +id := virtualwans.NewVpnServerConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnServerConfigurationValue") + +payload := virtualwans.VpnServerConfiguration{ + // ... +} + + +if err := client.VpnServerConfigurationsCreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VpnServerConfigurationsDelete` + +```go +ctx := context.TODO() +id := virtualwans.NewVpnServerConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnServerConfigurationValue") + +if err := client.VpnServerConfigurationsDeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VpnServerConfigurationsGet` + +```go +ctx := context.TODO() +id := virtualwans.NewVpnServerConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnServerConfigurationValue") + +read, err := client.VpnServerConfigurationsGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualWANsClient.VpnServerConfigurationsList` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.VpnServerConfigurationsList(ctx, id)` can be used to do batched pagination +items, err := client.VpnServerConfigurationsListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.VpnServerConfigurationsListByResourceGroup` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.VpnServerConfigurationsListByResourceGroup(ctx, id)` can be used to do batched pagination +items, err := client.VpnServerConfigurationsListByResourceGroupComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.VpnSiteLinkConnectionsGet` + +```go +ctx := context.TODO() +id := virtualwans.NewVpnLinkConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue", "vpnConnectionValue", "vpnLinkConnectionValue") + +read, err := client.VpnSiteLinkConnectionsGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualWANsClient.VpnSiteLinksGet` + +```go +ctx := context.TODO() +id := virtualwans.NewVpnSiteLinkID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnSiteValue", "vpnSiteLinkValue") + +read, err := client.VpnSiteLinksGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualWANsClient.VpnSiteLinksListByVpnSite` + +```go +ctx := context.TODO() +id := virtualwans.NewVpnSiteID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnSiteValue") + +// alternatively `client.VpnSiteLinksListByVpnSite(ctx, id)` can be used to do batched pagination +items, err := client.VpnSiteLinksListByVpnSiteComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.VpnSitesConfigurationDownload` + +```go +ctx := context.TODO() +id := virtualwans.NewVirtualWANID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualWanValue") + +payload := virtualwans.GetVpnSitesConfigurationRequest{ + // ... +} + + +if err := client.VpnSitesConfigurationDownloadThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VpnSitesCreateOrUpdate` + +```go +ctx := context.TODO() +id := virtualwans.NewVpnSiteID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnSiteValue") + +payload := virtualwans.VpnSite{ + // ... +} + + +if err := client.VpnSitesCreateOrUpdateThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VpnSitesDelete` + +```go +ctx := context.TODO() +id := virtualwans.NewVpnSiteID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnSiteValue") + +if err := client.VpnSitesDeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `VirtualWANsClient.VpnSitesGet` + +```go +ctx := context.TODO() +id := virtualwans.NewVpnSiteID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnSiteValue") + +read, err := client.VpnSitesGet(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VirtualWANsClient.VpnSitesList` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.VpnSitesList(ctx, id)` can be used to do batched pagination +items, err := client.VpnSitesListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VirtualWANsClient.VpnSitesListByResourceGroup` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.VpnSitesListByResourceGroup(ctx, id)` can be used to do batched pagination +items, err := client.VpnSitesListByResourceGroupComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/virtualwans/client.go b/resource-manager/network/2024-01-01/virtualwans/client.go new file mode 100644 index 00000000000..bf0a24c960f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/client.go @@ -0,0 +1,26 @@ +package virtualwans + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualWANsClient struct { + Client *resourcemanager.Client +} + +func NewVirtualWANsClientWithBaseURI(sdkApi sdkEnv.Api) (*VirtualWANsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "virtualwans", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating VirtualWANsClient: %+v", err) + } + + return &VirtualWANsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/constants.go b/resource-manager/network/2024-01-01/virtualwans/constants.go new file mode 100644 index 00000000000..f620ae04a84 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/constants.go @@ -0,0 +1,2382 @@ +package virtualwans + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AuthenticationMethod string + +const ( + AuthenticationMethodEAPMSCHAPvTwo AuthenticationMethod = "EAPMSCHAPv2" + AuthenticationMethodEAPTLS AuthenticationMethod = "EAPTLS" +) + +func PossibleValuesForAuthenticationMethod() []string { + return []string{ + string(AuthenticationMethodEAPMSCHAPvTwo), + string(AuthenticationMethodEAPTLS), + } +} + +func (s *AuthenticationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseAuthenticationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseAuthenticationMethod(input string) (*AuthenticationMethod, error) { + vals := map[string]AuthenticationMethod{ + "eapmschapv2": AuthenticationMethodEAPMSCHAPvTwo, + "eaptls": AuthenticationMethodEAPTLS, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := AuthenticationMethod(input) + return &out, nil +} + +type DdosSettingsProtectionMode string + +const ( + DdosSettingsProtectionModeDisabled DdosSettingsProtectionMode = "Disabled" + DdosSettingsProtectionModeEnabled DdosSettingsProtectionMode = "Enabled" + DdosSettingsProtectionModeVirtualNetworkInherited DdosSettingsProtectionMode = "VirtualNetworkInherited" +) + +func PossibleValuesForDdosSettingsProtectionMode() []string { + return []string{ + string(DdosSettingsProtectionModeDisabled), + string(DdosSettingsProtectionModeEnabled), + string(DdosSettingsProtectionModeVirtualNetworkInherited), + } +} + +func (s *DdosSettingsProtectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDdosSettingsProtectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDdosSettingsProtectionMode(input string) (*DdosSettingsProtectionMode, error) { + vals := map[string]DdosSettingsProtectionMode{ + "disabled": DdosSettingsProtectionModeDisabled, + "enabled": DdosSettingsProtectionModeEnabled, + "virtualnetworkinherited": DdosSettingsProtectionModeVirtualNetworkInherited, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DdosSettingsProtectionMode(input) + return &out, nil +} + +type DeleteOptions string + +const ( + DeleteOptionsDelete DeleteOptions = "Delete" + DeleteOptionsDetach DeleteOptions = "Detach" +) + +func PossibleValuesForDeleteOptions() []string { + return []string{ + string(DeleteOptionsDelete), + string(DeleteOptionsDetach), + } +} + +func (s *DeleteOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteOptions(input string) (*DeleteOptions, error) { + vals := map[string]DeleteOptions{ + "delete": DeleteOptionsDelete, + "detach": DeleteOptionsDetach, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteOptions(input) + return &out, nil +} + +type DhGroup string + +const ( + DhGroupDHGroupOne DhGroup = "DHGroup1" + DhGroupDHGroupOneFour DhGroup = "DHGroup14" + DhGroupDHGroupTwo DhGroup = "DHGroup2" + DhGroupDHGroupTwoFour DhGroup = "DHGroup24" + DhGroupDHGroupTwoZeroFourEight DhGroup = "DHGroup2048" + DhGroupECPThreeEightFour DhGroup = "ECP384" + DhGroupECPTwoFiveSix DhGroup = "ECP256" + DhGroupNone DhGroup = "None" +) + +func PossibleValuesForDhGroup() []string { + return []string{ + string(DhGroupDHGroupOne), + string(DhGroupDHGroupOneFour), + string(DhGroupDHGroupTwo), + string(DhGroupDHGroupTwoFour), + string(DhGroupDHGroupTwoZeroFourEight), + string(DhGroupECPThreeEightFour), + string(DhGroupECPTwoFiveSix), + string(DhGroupNone), + } +} + +func (s *DhGroup) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDhGroup(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDhGroup(input string) (*DhGroup, error) { + vals := map[string]DhGroup{ + "dhgroup1": DhGroupDHGroupOne, + "dhgroup14": DhGroupDHGroupOneFour, + "dhgroup2": DhGroupDHGroupTwo, + "dhgroup24": DhGroupDHGroupTwoFour, + "dhgroup2048": DhGroupDHGroupTwoZeroFourEight, + "ecp384": DhGroupECPThreeEightFour, + "ecp256": DhGroupECPTwoFiveSix, + "none": DhGroupNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DhGroup(input) + return &out, nil +} + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelInterfaceType string + +const ( + GatewayLoadBalancerTunnelInterfaceTypeExternal GatewayLoadBalancerTunnelInterfaceType = "External" + GatewayLoadBalancerTunnelInterfaceTypeInternal GatewayLoadBalancerTunnelInterfaceType = "Internal" + GatewayLoadBalancerTunnelInterfaceTypeNone GatewayLoadBalancerTunnelInterfaceType = "None" +) + +func PossibleValuesForGatewayLoadBalancerTunnelInterfaceType() []string { + return []string{ + string(GatewayLoadBalancerTunnelInterfaceTypeExternal), + string(GatewayLoadBalancerTunnelInterfaceTypeInternal), + string(GatewayLoadBalancerTunnelInterfaceTypeNone), + } +} + +func (s *GatewayLoadBalancerTunnelInterfaceType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelInterfaceType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelInterfaceType(input string) (*GatewayLoadBalancerTunnelInterfaceType, error) { + vals := map[string]GatewayLoadBalancerTunnelInterfaceType{ + "external": GatewayLoadBalancerTunnelInterfaceTypeExternal, + "internal": GatewayLoadBalancerTunnelInterfaceTypeInternal, + "none": GatewayLoadBalancerTunnelInterfaceTypeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelInterfaceType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelProtocol string + +const ( + GatewayLoadBalancerTunnelProtocolNative GatewayLoadBalancerTunnelProtocol = "Native" + GatewayLoadBalancerTunnelProtocolNone GatewayLoadBalancerTunnelProtocol = "None" + GatewayLoadBalancerTunnelProtocolVXLAN GatewayLoadBalancerTunnelProtocol = "VXLAN" +) + +func PossibleValuesForGatewayLoadBalancerTunnelProtocol() []string { + return []string{ + string(GatewayLoadBalancerTunnelProtocolNative), + string(GatewayLoadBalancerTunnelProtocolNone), + string(GatewayLoadBalancerTunnelProtocolVXLAN), + } +} + +func (s *GatewayLoadBalancerTunnelProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelProtocol(input string) (*GatewayLoadBalancerTunnelProtocol, error) { + vals := map[string]GatewayLoadBalancerTunnelProtocol{ + "native": GatewayLoadBalancerTunnelProtocolNative, + "none": GatewayLoadBalancerTunnelProtocolNone, + "vxlan": GatewayLoadBalancerTunnelProtocolVXLAN, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelProtocol(input) + return &out, nil +} + +type HubBgpConnectionStatus string + +const ( + HubBgpConnectionStatusConnected HubBgpConnectionStatus = "Connected" + HubBgpConnectionStatusConnecting HubBgpConnectionStatus = "Connecting" + HubBgpConnectionStatusNotConnected HubBgpConnectionStatus = "NotConnected" + HubBgpConnectionStatusUnknown HubBgpConnectionStatus = "Unknown" +) + +func PossibleValuesForHubBgpConnectionStatus() []string { + return []string{ + string(HubBgpConnectionStatusConnected), + string(HubBgpConnectionStatusConnecting), + string(HubBgpConnectionStatusNotConnected), + string(HubBgpConnectionStatusUnknown), + } +} + +func (s *HubBgpConnectionStatus) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseHubBgpConnectionStatus(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseHubBgpConnectionStatus(input string) (*HubBgpConnectionStatus, error) { + vals := map[string]HubBgpConnectionStatus{ + "connected": HubBgpConnectionStatusConnected, + "connecting": HubBgpConnectionStatusConnecting, + "notconnected": HubBgpConnectionStatusNotConnected, + "unknown": HubBgpConnectionStatusUnknown, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := HubBgpConnectionStatus(input) + return &out, nil +} + +type HubRoutingPreference string + +const ( + HubRoutingPreferenceASPath HubRoutingPreference = "ASPath" + HubRoutingPreferenceExpressRoute HubRoutingPreference = "ExpressRoute" + HubRoutingPreferenceVpnGateway HubRoutingPreference = "VpnGateway" +) + +func PossibleValuesForHubRoutingPreference() []string { + return []string{ + string(HubRoutingPreferenceASPath), + string(HubRoutingPreferenceExpressRoute), + string(HubRoutingPreferenceVpnGateway), + } +} + +func (s *HubRoutingPreference) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseHubRoutingPreference(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseHubRoutingPreference(input string) (*HubRoutingPreference, error) { + vals := map[string]HubRoutingPreference{ + "aspath": HubRoutingPreferenceASPath, + "expressroute": HubRoutingPreferenceExpressRoute, + "vpngateway": HubRoutingPreferenceVpnGateway, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := HubRoutingPreference(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} + +type IPsecEncryption string + +const ( + IPsecEncryptionAESOneNineTwo IPsecEncryption = "AES192" + IPsecEncryptionAESOneTwoEight IPsecEncryption = "AES128" + IPsecEncryptionAESTwoFiveSix IPsecEncryption = "AES256" + IPsecEncryptionDES IPsecEncryption = "DES" + IPsecEncryptionDESThree IPsecEncryption = "DES3" + IPsecEncryptionGCMAESOneNineTwo IPsecEncryption = "GCMAES192" + IPsecEncryptionGCMAESOneTwoEight IPsecEncryption = "GCMAES128" + IPsecEncryptionGCMAESTwoFiveSix IPsecEncryption = "GCMAES256" + IPsecEncryptionNone IPsecEncryption = "None" +) + +func PossibleValuesForIPsecEncryption() []string { + return []string{ + string(IPsecEncryptionAESOneNineTwo), + string(IPsecEncryptionAESOneTwoEight), + string(IPsecEncryptionAESTwoFiveSix), + string(IPsecEncryptionDES), + string(IPsecEncryptionDESThree), + string(IPsecEncryptionGCMAESOneNineTwo), + string(IPsecEncryptionGCMAESOneTwoEight), + string(IPsecEncryptionGCMAESTwoFiveSix), + string(IPsecEncryptionNone), + } +} + +func (s *IPsecEncryption) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPsecEncryption(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPsecEncryption(input string) (*IPsecEncryption, error) { + vals := map[string]IPsecEncryption{ + "aes192": IPsecEncryptionAESOneNineTwo, + "aes128": IPsecEncryptionAESOneTwoEight, + "aes256": IPsecEncryptionAESTwoFiveSix, + "des": IPsecEncryptionDES, + "des3": IPsecEncryptionDESThree, + "gcmaes192": IPsecEncryptionGCMAESOneNineTwo, + "gcmaes128": IPsecEncryptionGCMAESOneTwoEight, + "gcmaes256": IPsecEncryptionGCMAESTwoFiveSix, + "none": IPsecEncryptionNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPsecEncryption(input) + return &out, nil +} + +type IPsecIntegrity string + +const ( + IPsecIntegrityGCMAESOneNineTwo IPsecIntegrity = "GCMAES192" + IPsecIntegrityGCMAESOneTwoEight IPsecIntegrity = "GCMAES128" + IPsecIntegrityGCMAESTwoFiveSix IPsecIntegrity = "GCMAES256" + IPsecIntegrityMDFive IPsecIntegrity = "MD5" + IPsecIntegritySHAOne IPsecIntegrity = "SHA1" + IPsecIntegritySHATwoFiveSix IPsecIntegrity = "SHA256" +) + +func PossibleValuesForIPsecIntegrity() []string { + return []string{ + string(IPsecIntegrityGCMAESOneNineTwo), + string(IPsecIntegrityGCMAESOneTwoEight), + string(IPsecIntegrityGCMAESTwoFiveSix), + string(IPsecIntegrityMDFive), + string(IPsecIntegritySHAOne), + string(IPsecIntegritySHATwoFiveSix), + } +} + +func (s *IPsecIntegrity) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPsecIntegrity(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPsecIntegrity(input string) (*IPsecIntegrity, error) { + vals := map[string]IPsecIntegrity{ + "gcmaes192": IPsecIntegrityGCMAESOneNineTwo, + "gcmaes128": IPsecIntegrityGCMAESOneTwoEight, + "gcmaes256": IPsecIntegrityGCMAESTwoFiveSix, + "md5": IPsecIntegrityMDFive, + "sha1": IPsecIntegritySHAOne, + "sha256": IPsecIntegritySHATwoFiveSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPsecIntegrity(input) + return &out, nil +} + +type IkeEncryption string + +const ( + IkeEncryptionAESOneNineTwo IkeEncryption = "AES192" + IkeEncryptionAESOneTwoEight IkeEncryption = "AES128" + IkeEncryptionAESTwoFiveSix IkeEncryption = "AES256" + IkeEncryptionDES IkeEncryption = "DES" + IkeEncryptionDESThree IkeEncryption = "DES3" + IkeEncryptionGCMAESOneTwoEight IkeEncryption = "GCMAES128" + IkeEncryptionGCMAESTwoFiveSix IkeEncryption = "GCMAES256" +) + +func PossibleValuesForIkeEncryption() []string { + return []string{ + string(IkeEncryptionAESOneNineTwo), + string(IkeEncryptionAESOneTwoEight), + string(IkeEncryptionAESTwoFiveSix), + string(IkeEncryptionDES), + string(IkeEncryptionDESThree), + string(IkeEncryptionGCMAESOneTwoEight), + string(IkeEncryptionGCMAESTwoFiveSix), + } +} + +func (s *IkeEncryption) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIkeEncryption(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIkeEncryption(input string) (*IkeEncryption, error) { + vals := map[string]IkeEncryption{ + "aes192": IkeEncryptionAESOneNineTwo, + "aes128": IkeEncryptionAESOneTwoEight, + "aes256": IkeEncryptionAESTwoFiveSix, + "des": IkeEncryptionDES, + "des3": IkeEncryptionDESThree, + "gcmaes128": IkeEncryptionGCMAESOneTwoEight, + "gcmaes256": IkeEncryptionGCMAESTwoFiveSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IkeEncryption(input) + return &out, nil +} + +type IkeIntegrity string + +const ( + IkeIntegrityGCMAESOneTwoEight IkeIntegrity = "GCMAES128" + IkeIntegrityGCMAESTwoFiveSix IkeIntegrity = "GCMAES256" + IkeIntegrityMDFive IkeIntegrity = "MD5" + IkeIntegritySHAOne IkeIntegrity = "SHA1" + IkeIntegritySHAThreeEightFour IkeIntegrity = "SHA384" + IkeIntegritySHATwoFiveSix IkeIntegrity = "SHA256" +) + +func PossibleValuesForIkeIntegrity() []string { + return []string{ + string(IkeIntegrityGCMAESOneTwoEight), + string(IkeIntegrityGCMAESTwoFiveSix), + string(IkeIntegrityMDFive), + string(IkeIntegritySHAOne), + string(IkeIntegritySHAThreeEightFour), + string(IkeIntegritySHATwoFiveSix), + } +} + +func (s *IkeIntegrity) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIkeIntegrity(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIkeIntegrity(input string) (*IkeIntegrity, error) { + vals := map[string]IkeIntegrity{ + "gcmaes128": IkeIntegrityGCMAESOneTwoEight, + "gcmaes256": IkeIntegrityGCMAESTwoFiveSix, + "md5": IkeIntegrityMDFive, + "sha1": IkeIntegritySHAOne, + "sha384": IkeIntegritySHAThreeEightFour, + "sha256": IkeIntegritySHATwoFiveSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IkeIntegrity(input) + return &out, nil +} + +type LoadBalancerBackendAddressAdminState string + +const ( + LoadBalancerBackendAddressAdminStateDown LoadBalancerBackendAddressAdminState = "Down" + LoadBalancerBackendAddressAdminStateNone LoadBalancerBackendAddressAdminState = "None" + LoadBalancerBackendAddressAdminStateUp LoadBalancerBackendAddressAdminState = "Up" +) + +func PossibleValuesForLoadBalancerBackendAddressAdminState() []string { + return []string{ + string(LoadBalancerBackendAddressAdminStateDown), + string(LoadBalancerBackendAddressAdminStateNone), + string(LoadBalancerBackendAddressAdminStateUp), + } +} + +func (s *LoadBalancerBackendAddressAdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerBackendAddressAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerBackendAddressAdminState(input string) (*LoadBalancerBackendAddressAdminState, error) { + vals := map[string]LoadBalancerBackendAddressAdminState{ + "down": LoadBalancerBackendAddressAdminStateDown, + "none": LoadBalancerBackendAddressAdminStateNone, + "up": LoadBalancerBackendAddressAdminStateUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerBackendAddressAdminState(input) + return &out, nil +} + +type NatGatewaySkuName string + +const ( + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +func PossibleValuesForNatGatewaySkuName() []string { + return []string{ + string(NatGatewaySkuNameStandard), + } +} + +func (s *NatGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNatGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNatGatewaySkuName(input string) (*NatGatewaySkuName, error) { + vals := map[string]NatGatewaySkuName{ + "standard": NatGatewaySkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NatGatewaySkuName(input) + return &out, nil +} + +type NetworkInterfaceAuxiliaryMode string + +const ( + NetworkInterfaceAuxiliaryModeAcceleratedConnections NetworkInterfaceAuxiliaryMode = "AcceleratedConnections" + NetworkInterfaceAuxiliaryModeFloating NetworkInterfaceAuxiliaryMode = "Floating" + NetworkInterfaceAuxiliaryModeMaxConnections NetworkInterfaceAuxiliaryMode = "MaxConnections" + NetworkInterfaceAuxiliaryModeNone NetworkInterfaceAuxiliaryMode = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliaryMode() []string { + return []string{ + string(NetworkInterfaceAuxiliaryModeAcceleratedConnections), + string(NetworkInterfaceAuxiliaryModeFloating), + string(NetworkInterfaceAuxiliaryModeMaxConnections), + string(NetworkInterfaceAuxiliaryModeNone), + } +} + +func (s *NetworkInterfaceAuxiliaryMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliaryMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliaryMode(input string) (*NetworkInterfaceAuxiliaryMode, error) { + vals := map[string]NetworkInterfaceAuxiliaryMode{ + "acceleratedconnections": NetworkInterfaceAuxiliaryModeAcceleratedConnections, + "floating": NetworkInterfaceAuxiliaryModeFloating, + "maxconnections": NetworkInterfaceAuxiliaryModeMaxConnections, + "none": NetworkInterfaceAuxiliaryModeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliaryMode(input) + return &out, nil +} + +type NetworkInterfaceAuxiliarySku string + +const ( + NetworkInterfaceAuxiliarySkuAEight NetworkInterfaceAuxiliarySku = "A8" + NetworkInterfaceAuxiliarySkuAFour NetworkInterfaceAuxiliarySku = "A4" + NetworkInterfaceAuxiliarySkuAOne NetworkInterfaceAuxiliarySku = "A1" + NetworkInterfaceAuxiliarySkuATwo NetworkInterfaceAuxiliarySku = "A2" + NetworkInterfaceAuxiliarySkuNone NetworkInterfaceAuxiliarySku = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliarySku() []string { + return []string{ + string(NetworkInterfaceAuxiliarySkuAEight), + string(NetworkInterfaceAuxiliarySkuAFour), + string(NetworkInterfaceAuxiliarySkuAOne), + string(NetworkInterfaceAuxiliarySkuATwo), + string(NetworkInterfaceAuxiliarySkuNone), + } +} + +func (s *NetworkInterfaceAuxiliarySku) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliarySku(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliarySku(input string) (*NetworkInterfaceAuxiliarySku, error) { + vals := map[string]NetworkInterfaceAuxiliarySku{ + "a8": NetworkInterfaceAuxiliarySkuAEight, + "a4": NetworkInterfaceAuxiliarySkuAFour, + "a1": NetworkInterfaceAuxiliarySkuAOne, + "a2": NetworkInterfaceAuxiliarySkuATwo, + "none": NetworkInterfaceAuxiliarySkuNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliarySku(input) + return &out, nil +} + +type NetworkInterfaceMigrationPhase string + +const ( + NetworkInterfaceMigrationPhaseAbort NetworkInterfaceMigrationPhase = "Abort" + NetworkInterfaceMigrationPhaseCommit NetworkInterfaceMigrationPhase = "Commit" + NetworkInterfaceMigrationPhaseCommitted NetworkInterfaceMigrationPhase = "Committed" + NetworkInterfaceMigrationPhaseNone NetworkInterfaceMigrationPhase = "None" + NetworkInterfaceMigrationPhasePrepare NetworkInterfaceMigrationPhase = "Prepare" +) + +func PossibleValuesForNetworkInterfaceMigrationPhase() []string { + return []string{ + string(NetworkInterfaceMigrationPhaseAbort), + string(NetworkInterfaceMigrationPhaseCommit), + string(NetworkInterfaceMigrationPhaseCommitted), + string(NetworkInterfaceMigrationPhaseNone), + string(NetworkInterfaceMigrationPhasePrepare), + } +} + +func (s *NetworkInterfaceMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceMigrationPhase(input string) (*NetworkInterfaceMigrationPhase, error) { + vals := map[string]NetworkInterfaceMigrationPhase{ + "abort": NetworkInterfaceMigrationPhaseAbort, + "commit": NetworkInterfaceMigrationPhaseCommit, + "committed": NetworkInterfaceMigrationPhaseCommitted, + "none": NetworkInterfaceMigrationPhaseNone, + "prepare": NetworkInterfaceMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceMigrationPhase(input) + return &out, nil +} + +type NetworkInterfaceNicType string + +const ( + NetworkInterfaceNicTypeElastic NetworkInterfaceNicType = "Elastic" + NetworkInterfaceNicTypeStandard NetworkInterfaceNicType = "Standard" +) + +func PossibleValuesForNetworkInterfaceNicType() []string { + return []string{ + string(NetworkInterfaceNicTypeElastic), + string(NetworkInterfaceNicTypeStandard), + } +} + +func (s *NetworkInterfaceNicType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceNicType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceNicType(input string) (*NetworkInterfaceNicType, error) { + vals := map[string]NetworkInterfaceNicType{ + "elastic": NetworkInterfaceNicTypeElastic, + "standard": NetworkInterfaceNicTypeStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceNicType(input) + return &out, nil +} + +type NextStep string + +const ( + NextStepContinue NextStep = "Continue" + NextStepTerminate NextStep = "Terminate" + NextStepUnknown NextStep = "Unknown" +) + +func PossibleValuesForNextStep() []string { + return []string{ + string(NextStepContinue), + string(NextStepTerminate), + string(NextStepUnknown), + } +} + +func (s *NextStep) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNextStep(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNextStep(input string) (*NextStep, error) { + vals := map[string]NextStep{ + "continue": NextStepContinue, + "terminate": NextStepTerminate, + "unknown": NextStepUnknown, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NextStep(input) + return &out, nil +} + +type OfficeTrafficCategory string + +const ( + OfficeTrafficCategoryAll OfficeTrafficCategory = "All" + OfficeTrafficCategoryNone OfficeTrafficCategory = "None" + OfficeTrafficCategoryOptimize OfficeTrafficCategory = "Optimize" + OfficeTrafficCategoryOptimizeAndAllow OfficeTrafficCategory = "OptimizeAndAllow" +) + +func PossibleValuesForOfficeTrafficCategory() []string { + return []string{ + string(OfficeTrafficCategoryAll), + string(OfficeTrafficCategoryNone), + string(OfficeTrafficCategoryOptimize), + string(OfficeTrafficCategoryOptimizeAndAllow), + } +} + +func (s *OfficeTrafficCategory) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseOfficeTrafficCategory(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseOfficeTrafficCategory(input string) (*OfficeTrafficCategory, error) { + vals := map[string]OfficeTrafficCategory{ + "all": OfficeTrafficCategoryAll, + "none": OfficeTrafficCategoryNone, + "optimize": OfficeTrafficCategoryOptimize, + "optimizeandallow": OfficeTrafficCategoryOptimizeAndAllow, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := OfficeTrafficCategory(input) + return &out, nil +} + +type PfsGroup string + +const ( + PfsGroupECPThreeEightFour PfsGroup = "ECP384" + PfsGroupECPTwoFiveSix PfsGroup = "ECP256" + PfsGroupNone PfsGroup = "None" + PfsGroupPFSMM PfsGroup = "PFSMM" + PfsGroupPFSOne PfsGroup = "PFS1" + PfsGroupPFSOneFour PfsGroup = "PFS14" + PfsGroupPFSTwo PfsGroup = "PFS2" + PfsGroupPFSTwoFour PfsGroup = "PFS24" + PfsGroupPFSTwoZeroFourEight PfsGroup = "PFS2048" +) + +func PossibleValuesForPfsGroup() []string { + return []string{ + string(PfsGroupECPThreeEightFour), + string(PfsGroupECPTwoFiveSix), + string(PfsGroupNone), + string(PfsGroupPFSMM), + string(PfsGroupPFSOne), + string(PfsGroupPFSOneFour), + string(PfsGroupPFSTwo), + string(PfsGroupPFSTwoFour), + string(PfsGroupPFSTwoZeroFourEight), + } +} + +func (s *PfsGroup) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePfsGroup(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePfsGroup(input string) (*PfsGroup, error) { + vals := map[string]PfsGroup{ + "ecp384": PfsGroupECPThreeEightFour, + "ecp256": PfsGroupECPTwoFiveSix, + "none": PfsGroupNone, + "pfsmm": PfsGroupPFSMM, + "pfs1": PfsGroupPFSOne, + "pfs14": PfsGroupPFSOneFour, + "pfs2": PfsGroupPFSTwo, + "pfs24": PfsGroupPFSTwoFour, + "pfs2048": PfsGroupPFSTwoZeroFourEight, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PfsGroup(input) + return &out, nil +} + +type PreferredRoutingGateway string + +const ( + PreferredRoutingGatewayExpressRoute PreferredRoutingGateway = "ExpressRoute" + PreferredRoutingGatewayNone PreferredRoutingGateway = "None" + PreferredRoutingGatewayVpnGateway PreferredRoutingGateway = "VpnGateway" +) + +func PossibleValuesForPreferredRoutingGateway() []string { + return []string{ + string(PreferredRoutingGatewayExpressRoute), + string(PreferredRoutingGatewayNone), + string(PreferredRoutingGatewayVpnGateway), + } +} + +func (s *PreferredRoutingGateway) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePreferredRoutingGateway(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePreferredRoutingGateway(input string) (*PreferredRoutingGateway, error) { + vals := map[string]PreferredRoutingGateway{ + "expressroute": PreferredRoutingGatewayExpressRoute, + "none": PreferredRoutingGatewayNone, + "vpngateway": PreferredRoutingGatewayVpnGateway, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PreferredRoutingGateway(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type PublicIPAddressDnsSettingsDomainNameLabelScope string + +const ( + PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "NoReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "ResourceGroupReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "SubscriptionReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "TenantReuse" +) + +func PossibleValuesForPublicIPAddressDnsSettingsDomainNameLabelScope() []string { + return []string{ + string(PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse), + } +} + +func (s *PublicIPAddressDnsSettingsDomainNameLabelScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressDnsSettingsDomainNameLabelScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressDnsSettingsDomainNameLabelScope(input string) (*PublicIPAddressDnsSettingsDomainNameLabelScope, error) { + vals := map[string]PublicIPAddressDnsSettingsDomainNameLabelScope{ + "noreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse, + "resourcegroupreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse, + "subscriptionreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse, + "tenantreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressDnsSettingsDomainNameLabelScope(input) + return &out, nil +} + +type PublicIPAddressMigrationPhase string + +const ( + PublicIPAddressMigrationPhaseAbort PublicIPAddressMigrationPhase = "Abort" + PublicIPAddressMigrationPhaseCommit PublicIPAddressMigrationPhase = "Commit" + PublicIPAddressMigrationPhaseCommitted PublicIPAddressMigrationPhase = "Committed" + PublicIPAddressMigrationPhaseNone PublicIPAddressMigrationPhase = "None" + PublicIPAddressMigrationPhasePrepare PublicIPAddressMigrationPhase = "Prepare" +) + +func PossibleValuesForPublicIPAddressMigrationPhase() []string { + return []string{ + string(PublicIPAddressMigrationPhaseAbort), + string(PublicIPAddressMigrationPhaseCommit), + string(PublicIPAddressMigrationPhaseCommitted), + string(PublicIPAddressMigrationPhaseNone), + string(PublicIPAddressMigrationPhasePrepare), + } +} + +func (s *PublicIPAddressMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressMigrationPhase(input string) (*PublicIPAddressMigrationPhase, error) { + vals := map[string]PublicIPAddressMigrationPhase{ + "abort": PublicIPAddressMigrationPhaseAbort, + "commit": PublicIPAddressMigrationPhaseCommit, + "committed": PublicIPAddressMigrationPhaseCommitted, + "none": PublicIPAddressMigrationPhaseNone, + "prepare": PublicIPAddressMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressMigrationPhase(input) + return &out, nil +} + +type PublicIPAddressSkuName string + +const ( + PublicIPAddressSkuNameBasic PublicIPAddressSkuName = "Basic" + PublicIPAddressSkuNameStandard PublicIPAddressSkuName = "Standard" +) + +func PossibleValuesForPublicIPAddressSkuName() []string { + return []string{ + string(PublicIPAddressSkuNameBasic), + string(PublicIPAddressSkuNameStandard), + } +} + +func (s *PublicIPAddressSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuName(input string) (*PublicIPAddressSkuName, error) { + vals := map[string]PublicIPAddressSkuName{ + "basic": PublicIPAddressSkuNameBasic, + "standard": PublicIPAddressSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuName(input) + return &out, nil +} + +type PublicIPAddressSkuTier string + +const ( + PublicIPAddressSkuTierGlobal PublicIPAddressSkuTier = "Global" + PublicIPAddressSkuTierRegional PublicIPAddressSkuTier = "Regional" +) + +func PossibleValuesForPublicIPAddressSkuTier() []string { + return []string{ + string(PublicIPAddressSkuTierGlobal), + string(PublicIPAddressSkuTierRegional), + } +} + +func (s *PublicIPAddressSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuTier(input string) (*PublicIPAddressSkuTier, error) { + vals := map[string]PublicIPAddressSkuTier{ + "global": PublicIPAddressSkuTierGlobal, + "regional": PublicIPAddressSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuTier(input) + return &out, nil +} + +type RouteMapActionType string + +const ( + RouteMapActionTypeAdd RouteMapActionType = "Add" + RouteMapActionTypeDrop RouteMapActionType = "Drop" + RouteMapActionTypeRemove RouteMapActionType = "Remove" + RouteMapActionTypeReplace RouteMapActionType = "Replace" + RouteMapActionTypeUnknown RouteMapActionType = "Unknown" +) + +func PossibleValuesForRouteMapActionType() []string { + return []string{ + string(RouteMapActionTypeAdd), + string(RouteMapActionTypeDrop), + string(RouteMapActionTypeRemove), + string(RouteMapActionTypeReplace), + string(RouteMapActionTypeUnknown), + } +} + +func (s *RouteMapActionType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteMapActionType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteMapActionType(input string) (*RouteMapActionType, error) { + vals := map[string]RouteMapActionType{ + "add": RouteMapActionTypeAdd, + "drop": RouteMapActionTypeDrop, + "remove": RouteMapActionTypeRemove, + "replace": RouteMapActionTypeReplace, + "unknown": RouteMapActionTypeUnknown, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteMapActionType(input) + return &out, nil +} + +type RouteMapMatchCondition string + +const ( + RouteMapMatchConditionContains RouteMapMatchCondition = "Contains" + RouteMapMatchConditionEquals RouteMapMatchCondition = "Equals" + RouteMapMatchConditionNotContains RouteMapMatchCondition = "NotContains" + RouteMapMatchConditionNotEquals RouteMapMatchCondition = "NotEquals" + RouteMapMatchConditionUnknown RouteMapMatchCondition = "Unknown" +) + +func PossibleValuesForRouteMapMatchCondition() []string { + return []string{ + string(RouteMapMatchConditionContains), + string(RouteMapMatchConditionEquals), + string(RouteMapMatchConditionNotContains), + string(RouteMapMatchConditionNotEquals), + string(RouteMapMatchConditionUnknown), + } +} + +func (s *RouteMapMatchCondition) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteMapMatchCondition(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteMapMatchCondition(input string) (*RouteMapMatchCondition, error) { + vals := map[string]RouteMapMatchCondition{ + "contains": RouteMapMatchConditionContains, + "equals": RouteMapMatchConditionEquals, + "notcontains": RouteMapMatchConditionNotContains, + "notequals": RouteMapMatchConditionNotEquals, + "unknown": RouteMapMatchConditionUnknown, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteMapMatchCondition(input) + return &out, nil +} + +type RouteNextHopType string + +const ( + RouteNextHopTypeInternet RouteNextHopType = "Internet" + RouteNextHopTypeNone RouteNextHopType = "None" + RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" + RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" + RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" +) + +func PossibleValuesForRouteNextHopType() []string { + return []string{ + string(RouteNextHopTypeInternet), + string(RouteNextHopTypeNone), + string(RouteNextHopTypeVirtualAppliance), + string(RouteNextHopTypeVirtualNetworkGateway), + string(RouteNextHopTypeVnetLocal), + } +} + +func (s *RouteNextHopType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteNextHopType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteNextHopType(input string) (*RouteNextHopType, error) { + vals := map[string]RouteNextHopType{ + "internet": RouteNextHopTypeInternet, + "none": RouteNextHopTypeNone, + "virtualappliance": RouteNextHopTypeVirtualAppliance, + "virtualnetworkgateway": RouteNextHopTypeVirtualNetworkGateway, + "vnetlocal": RouteNextHopTypeVnetLocal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteNextHopType(input) + return &out, nil +} + +type RoutingState string + +const ( + RoutingStateFailed RoutingState = "Failed" + RoutingStateNone RoutingState = "None" + RoutingStateProvisioned RoutingState = "Provisioned" + RoutingStateProvisioning RoutingState = "Provisioning" +) + +func PossibleValuesForRoutingState() []string { + return []string{ + string(RoutingStateFailed), + string(RoutingStateNone), + string(RoutingStateProvisioned), + string(RoutingStateProvisioning), + } +} + +func (s *RoutingState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRoutingState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRoutingState(input string) (*RoutingState, error) { + vals := map[string]RoutingState{ + "failed": RoutingStateFailed, + "none": RoutingStateNone, + "provisioned": RoutingStateProvisioned, + "provisioning": RoutingStateProvisioning, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RoutingState(input) + return &out, nil +} + +type SecurityRuleAccess string + +const ( + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +func PossibleValuesForSecurityRuleAccess() []string { + return []string{ + string(SecurityRuleAccessAllow), + string(SecurityRuleAccessDeny), + } +} + +func (s *SecurityRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleAccess(input string) (*SecurityRuleAccess, error) { + vals := map[string]SecurityRuleAccess{ + "allow": SecurityRuleAccessAllow, + "deny": SecurityRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleAccess(input) + return &out, nil +} + +type SecurityRuleDirection string + +const ( + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityRuleDirection() []string { + return []string{ + string(SecurityRuleDirectionInbound), + string(SecurityRuleDirectionOutbound), + } +} + +func (s *SecurityRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleDirection(input string) (*SecurityRuleDirection, error) { + vals := map[string]SecurityRuleDirection{ + "inbound": SecurityRuleDirectionInbound, + "outbound": SecurityRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleDirection(input) + return &out, nil +} + +type SecurityRuleProtocol string + +const ( + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + SecurityRuleProtocolAny SecurityRuleProtocol = "*" + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + SecurityRuleProtocolTcp SecurityRuleProtocol = "Tcp" + SecurityRuleProtocolUdp SecurityRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityRuleProtocol() []string { + return []string{ + string(SecurityRuleProtocolAh), + string(SecurityRuleProtocolAny), + string(SecurityRuleProtocolEsp), + string(SecurityRuleProtocolIcmp), + string(SecurityRuleProtocolTcp), + string(SecurityRuleProtocolUdp), + } +} + +func (s *SecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleProtocol(input string) (*SecurityRuleProtocol, error) { + vals := map[string]SecurityRuleProtocol{ + "ah": SecurityRuleProtocolAh, + "*": SecurityRuleProtocolAny, + "esp": SecurityRuleProtocolEsp, + "icmp": SecurityRuleProtocolIcmp, + "tcp": SecurityRuleProtocolTcp, + "udp": SecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleProtocol(input) + return &out, nil +} + +type SharingScope string + +const ( + SharingScopeDelegatedServices SharingScope = "DelegatedServices" + SharingScopeTenant SharingScope = "Tenant" +) + +func PossibleValuesForSharingScope() []string { + return []string{ + string(SharingScopeDelegatedServices), + string(SharingScopeTenant), + } +} + +func (s *SharingScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSharingScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSharingScope(input string) (*SharingScope, error) { + vals := map[string]SharingScope{ + "delegatedservices": SharingScopeDelegatedServices, + "tenant": SharingScopeTenant, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SharingScope(input) + return &out, nil +} + +type SyncMode string + +const ( + SyncModeAutomatic SyncMode = "Automatic" + SyncModeManual SyncMode = "Manual" +) + +func PossibleValuesForSyncMode() []string { + return []string{ + string(SyncModeAutomatic), + string(SyncModeManual), + } +} + +func (s *SyncMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSyncMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSyncMode(input string) (*SyncMode, error) { + vals := map[string]SyncMode{ + "automatic": SyncModeAutomatic, + "manual": SyncModeManual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SyncMode(input) + return &out, nil +} + +type TransportProtocol string + +const ( + TransportProtocolAll TransportProtocol = "All" + TransportProtocolTcp TransportProtocol = "Tcp" + TransportProtocolUdp TransportProtocol = "Udp" +) + +func PossibleValuesForTransportProtocol() []string { + return []string{ + string(TransportProtocolAll), + string(TransportProtocolTcp), + string(TransportProtocolUdp), + } +} + +func (s *TransportProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseTransportProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseTransportProtocol(input string) (*TransportProtocol, error) { + vals := map[string]TransportProtocol{ + "all": TransportProtocolAll, + "tcp": TransportProtocolTcp, + "udp": TransportProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := TransportProtocol(input) + return &out, nil +} + +type VirtualNetworkGatewayConnectionProtocol string + +const ( + VirtualNetworkGatewayConnectionProtocolIKEvOne VirtualNetworkGatewayConnectionProtocol = "IKEv1" + VirtualNetworkGatewayConnectionProtocolIKEvTwo VirtualNetworkGatewayConnectionProtocol = "IKEv2" +) + +func PossibleValuesForVirtualNetworkGatewayConnectionProtocol() []string { + return []string{ + string(VirtualNetworkGatewayConnectionProtocolIKEvOne), + string(VirtualNetworkGatewayConnectionProtocolIKEvTwo), + } +} + +func (s *VirtualNetworkGatewayConnectionProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkGatewayConnectionProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkGatewayConnectionProtocol(input string) (*VirtualNetworkGatewayConnectionProtocol, error) { + vals := map[string]VirtualNetworkGatewayConnectionProtocol{ + "ikev1": VirtualNetworkGatewayConnectionProtocolIKEvOne, + "ikev2": VirtualNetworkGatewayConnectionProtocolIKEvTwo, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkGatewayConnectionProtocol(input) + return &out, nil +} + +type VirtualNetworkPrivateEndpointNetworkPolicies string + +const ( + VirtualNetworkPrivateEndpointNetworkPoliciesDisabled VirtualNetworkPrivateEndpointNetworkPolicies = "Disabled" + VirtualNetworkPrivateEndpointNetworkPoliciesEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "Enabled" + VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "NetworkSecurityGroupEnabled" + VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "RouteTableEnabled" +) + +func PossibleValuesForVirtualNetworkPrivateEndpointNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateEndpointNetworkPoliciesDisabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled), + } +} + +func (s *VirtualNetworkPrivateEndpointNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateEndpointNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateEndpointNetworkPolicies(input string) (*VirtualNetworkPrivateEndpointNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateEndpointNetworkPolicies{ + "disabled": VirtualNetworkPrivateEndpointNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateEndpointNetworkPoliciesEnabled, + "networksecuritygroupenabled": VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled, + "routetableenabled": VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateEndpointNetworkPolicies(input) + return &out, nil +} + +type VirtualNetworkPrivateLinkServiceNetworkPolicies string + +const ( + VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Disabled" + VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Enabled" +) + +func PossibleValuesForVirtualNetworkPrivateLinkServiceNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled), + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled), + } +} + +func (s *VirtualNetworkPrivateLinkServiceNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateLinkServiceNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateLinkServiceNetworkPolicies(input string) (*VirtualNetworkPrivateLinkServiceNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateLinkServiceNetworkPolicies{ + "disabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateLinkServiceNetworkPolicies(input) + return &out, nil +} + +type VirtualWanSecurityProviderType string + +const ( + VirtualWanSecurityProviderTypeExternal VirtualWanSecurityProviderType = "External" + VirtualWanSecurityProviderTypeNative VirtualWanSecurityProviderType = "Native" +) + +func PossibleValuesForVirtualWanSecurityProviderType() []string { + return []string{ + string(VirtualWanSecurityProviderTypeExternal), + string(VirtualWanSecurityProviderTypeNative), + } +} + +func (s *VirtualWanSecurityProviderType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualWanSecurityProviderType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualWanSecurityProviderType(input string) (*VirtualWanSecurityProviderType, error) { + vals := map[string]VirtualWanSecurityProviderType{ + "external": VirtualWanSecurityProviderTypeExternal, + "native": VirtualWanSecurityProviderTypeNative, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualWanSecurityProviderType(input) + return &out, nil +} + +type VnetLocalRouteOverrideCriteria string + +const ( + VnetLocalRouteOverrideCriteriaContains VnetLocalRouteOverrideCriteria = "Contains" + VnetLocalRouteOverrideCriteriaEqual VnetLocalRouteOverrideCriteria = "Equal" +) + +func PossibleValuesForVnetLocalRouteOverrideCriteria() []string { + return []string{ + string(VnetLocalRouteOverrideCriteriaContains), + string(VnetLocalRouteOverrideCriteriaEqual), + } +} + +func (s *VnetLocalRouteOverrideCriteria) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVnetLocalRouteOverrideCriteria(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVnetLocalRouteOverrideCriteria(input string) (*VnetLocalRouteOverrideCriteria, error) { + vals := map[string]VnetLocalRouteOverrideCriteria{ + "contains": VnetLocalRouteOverrideCriteriaContains, + "equal": VnetLocalRouteOverrideCriteriaEqual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VnetLocalRouteOverrideCriteria(input) + return &out, nil +} + +type VpnAuthenticationType string + +const ( + VpnAuthenticationTypeAAD VpnAuthenticationType = "AAD" + VpnAuthenticationTypeCertificate VpnAuthenticationType = "Certificate" + VpnAuthenticationTypeRadius VpnAuthenticationType = "Radius" +) + +func PossibleValuesForVpnAuthenticationType() []string { + return []string{ + string(VpnAuthenticationTypeAAD), + string(VpnAuthenticationTypeCertificate), + string(VpnAuthenticationTypeRadius), + } +} + +func (s *VpnAuthenticationType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnAuthenticationType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnAuthenticationType(input string) (*VpnAuthenticationType, error) { + vals := map[string]VpnAuthenticationType{ + "aad": VpnAuthenticationTypeAAD, + "certificate": VpnAuthenticationTypeCertificate, + "radius": VpnAuthenticationTypeRadius, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnAuthenticationType(input) + return &out, nil +} + +type VpnConnectionStatus string + +const ( + VpnConnectionStatusConnected VpnConnectionStatus = "Connected" + VpnConnectionStatusConnecting VpnConnectionStatus = "Connecting" + VpnConnectionStatusNotConnected VpnConnectionStatus = "NotConnected" + VpnConnectionStatusUnknown VpnConnectionStatus = "Unknown" +) + +func PossibleValuesForVpnConnectionStatus() []string { + return []string{ + string(VpnConnectionStatusConnected), + string(VpnConnectionStatusConnecting), + string(VpnConnectionStatusNotConnected), + string(VpnConnectionStatusUnknown), + } +} + +func (s *VpnConnectionStatus) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnConnectionStatus(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnConnectionStatus(input string) (*VpnConnectionStatus, error) { + vals := map[string]VpnConnectionStatus{ + "connected": VpnConnectionStatusConnected, + "connecting": VpnConnectionStatusConnecting, + "notconnected": VpnConnectionStatusNotConnected, + "unknown": VpnConnectionStatusUnknown, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnConnectionStatus(input) + return &out, nil +} + +type VpnGatewayTunnelingProtocol string + +const ( + VpnGatewayTunnelingProtocolIkeVTwo VpnGatewayTunnelingProtocol = "IkeV2" + VpnGatewayTunnelingProtocolOpenVPN VpnGatewayTunnelingProtocol = "OpenVPN" +) + +func PossibleValuesForVpnGatewayTunnelingProtocol() []string { + return []string{ + string(VpnGatewayTunnelingProtocolIkeVTwo), + string(VpnGatewayTunnelingProtocolOpenVPN), + } +} + +func (s *VpnGatewayTunnelingProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnGatewayTunnelingProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnGatewayTunnelingProtocol(input string) (*VpnGatewayTunnelingProtocol, error) { + vals := map[string]VpnGatewayTunnelingProtocol{ + "ikev2": VpnGatewayTunnelingProtocolIkeVTwo, + "openvpn": VpnGatewayTunnelingProtocolOpenVPN, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnGatewayTunnelingProtocol(input) + return &out, nil +} + +type VpnLinkConnectionMode string + +const ( + VpnLinkConnectionModeDefault VpnLinkConnectionMode = "Default" + VpnLinkConnectionModeInitiatorOnly VpnLinkConnectionMode = "InitiatorOnly" + VpnLinkConnectionModeResponderOnly VpnLinkConnectionMode = "ResponderOnly" +) + +func PossibleValuesForVpnLinkConnectionMode() []string { + return []string{ + string(VpnLinkConnectionModeDefault), + string(VpnLinkConnectionModeInitiatorOnly), + string(VpnLinkConnectionModeResponderOnly), + } +} + +func (s *VpnLinkConnectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnLinkConnectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnLinkConnectionMode(input string) (*VpnLinkConnectionMode, error) { + vals := map[string]VpnLinkConnectionMode{ + "default": VpnLinkConnectionModeDefault, + "initiatoronly": VpnLinkConnectionModeInitiatorOnly, + "responderonly": VpnLinkConnectionModeResponderOnly, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnLinkConnectionMode(input) + return &out, nil +} + +type VpnNatRuleMode string + +const ( + VpnNatRuleModeEgressSnat VpnNatRuleMode = "EgressSnat" + VpnNatRuleModeIngressSnat VpnNatRuleMode = "IngressSnat" +) + +func PossibleValuesForVpnNatRuleMode() []string { + return []string{ + string(VpnNatRuleModeEgressSnat), + string(VpnNatRuleModeIngressSnat), + } +} + +func (s *VpnNatRuleMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnNatRuleMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnNatRuleMode(input string) (*VpnNatRuleMode, error) { + vals := map[string]VpnNatRuleMode{ + "egresssnat": VpnNatRuleModeEgressSnat, + "ingresssnat": VpnNatRuleModeIngressSnat, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnNatRuleMode(input) + return &out, nil +} + +type VpnNatRuleType string + +const ( + VpnNatRuleTypeDynamic VpnNatRuleType = "Dynamic" + VpnNatRuleTypeStatic VpnNatRuleType = "Static" +) + +func PossibleValuesForVpnNatRuleType() []string { + return []string{ + string(VpnNatRuleTypeDynamic), + string(VpnNatRuleTypeStatic), + } +} + +func (s *VpnNatRuleType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnNatRuleType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnNatRuleType(input string) (*VpnNatRuleType, error) { + vals := map[string]VpnNatRuleType{ + "dynamic": VpnNatRuleTypeDynamic, + "static": VpnNatRuleTypeStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnNatRuleType(input) + return &out, nil +} + +type VpnPolicyMemberAttributeType string + +const ( + VpnPolicyMemberAttributeTypeAADGroupId VpnPolicyMemberAttributeType = "AADGroupId" + VpnPolicyMemberAttributeTypeCertificateGroupId VpnPolicyMemberAttributeType = "CertificateGroupId" + VpnPolicyMemberAttributeTypeRadiusAzureGroupId VpnPolicyMemberAttributeType = "RadiusAzureGroupId" +) + +func PossibleValuesForVpnPolicyMemberAttributeType() []string { + return []string{ + string(VpnPolicyMemberAttributeTypeAADGroupId), + string(VpnPolicyMemberAttributeTypeCertificateGroupId), + string(VpnPolicyMemberAttributeTypeRadiusAzureGroupId), + } +} + +func (s *VpnPolicyMemberAttributeType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnPolicyMemberAttributeType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnPolicyMemberAttributeType(input string) (*VpnPolicyMemberAttributeType, error) { + vals := map[string]VpnPolicyMemberAttributeType{ + "aadgroupid": VpnPolicyMemberAttributeTypeAADGroupId, + "certificategroupid": VpnPolicyMemberAttributeTypeCertificateGroupId, + "radiusazuregroupid": VpnPolicyMemberAttributeTypeRadiusAzureGroupId, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnPolicyMemberAttributeType(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_configurationpolicygroup.go b/resource-manager/network/2024-01-01/virtualwans/id_configurationpolicygroup.go new file mode 100644 index 00000000000..7ebd0347f4d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_configurationpolicygroup.go @@ -0,0 +1,139 @@ +package virtualwans + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ConfigurationPolicyGroupId{}) +} + +var _ resourceids.ResourceId = &ConfigurationPolicyGroupId{} + +// ConfigurationPolicyGroupId is a struct representing the Resource ID for a Configuration Policy Group +type ConfigurationPolicyGroupId struct { + SubscriptionId string + ResourceGroupName string + VpnServerConfigurationName string + ConfigurationPolicyGroupName string +} + +// NewConfigurationPolicyGroupID returns a new ConfigurationPolicyGroupId struct +func NewConfigurationPolicyGroupID(subscriptionId string, resourceGroupName string, vpnServerConfigurationName string, configurationPolicyGroupName string) ConfigurationPolicyGroupId { + return ConfigurationPolicyGroupId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VpnServerConfigurationName: vpnServerConfigurationName, + ConfigurationPolicyGroupName: configurationPolicyGroupName, + } +} + +// ParseConfigurationPolicyGroupID parses 'input' into a ConfigurationPolicyGroupId +func ParseConfigurationPolicyGroupID(input string) (*ConfigurationPolicyGroupId, error) { + parser := resourceids.NewParserFromResourceIdType(&ConfigurationPolicyGroupId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ConfigurationPolicyGroupId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseConfigurationPolicyGroupIDInsensitively parses 'input' case-insensitively into a ConfigurationPolicyGroupId +// note: this method should only be used for API response data and not user input +func ParseConfigurationPolicyGroupIDInsensitively(input string) (*ConfigurationPolicyGroupId, error) { + parser := resourceids.NewParserFromResourceIdType(&ConfigurationPolicyGroupId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ConfigurationPolicyGroupId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ConfigurationPolicyGroupId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VpnServerConfigurationName, ok = input.Parsed["vpnServerConfigurationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "vpnServerConfigurationName", input) + } + + if id.ConfigurationPolicyGroupName, ok = input.Parsed["configurationPolicyGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "configurationPolicyGroupName", input) + } + + return nil +} + +// ValidateConfigurationPolicyGroupID checks that 'input' can be parsed as a Configuration Policy Group ID +func ValidateConfigurationPolicyGroupID(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 := ParseConfigurationPolicyGroupID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Configuration Policy Group ID +func (id ConfigurationPolicyGroupId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/vpnServerConfigurations/%s/configurationPolicyGroups/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VpnServerConfigurationName, id.ConfigurationPolicyGroupName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Configuration Policy Group ID +func (id ConfigurationPolicyGroupId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVpnServerConfigurations", "vpnServerConfigurations", "vpnServerConfigurations"), + resourceids.UserSpecifiedSegment("vpnServerConfigurationName", "vpnServerConfigurationValue"), + resourceids.StaticSegment("staticConfigurationPolicyGroups", "configurationPolicyGroups", "configurationPolicyGroups"), + resourceids.UserSpecifiedSegment("configurationPolicyGroupName", "configurationPolicyGroupValue"), + } +} + +// String returns a human-readable description of this Configuration Policy Group ID +func (id ConfigurationPolicyGroupId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Vpn Server Configuration Name: %q", id.VpnServerConfigurationName), + fmt.Sprintf("Configuration Policy Group Name: %q", id.ConfigurationPolicyGroupName), + } + return fmt.Sprintf("Configuration Policy Group (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_configurationpolicygroup_test.go b/resource-manager/network/2024-01-01/virtualwans/id_configurationpolicygroup_test.go new file mode 100644 index 00000000000..c49bcdb713d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_configurationpolicygroup_test.go @@ -0,0 +1,327 @@ +package virtualwans + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ConfigurationPolicyGroupId{} + +func TestNewConfigurationPolicyGroupID(t *testing.T) { + id := NewConfigurationPolicyGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnServerConfigurationValue", "configurationPolicyGroupValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VpnServerConfigurationName != "vpnServerConfigurationValue" { + t.Fatalf("Expected %q but got %q for Segment 'VpnServerConfigurationName'", id.VpnServerConfigurationName, "vpnServerConfigurationValue") + } + + if id.ConfigurationPolicyGroupName != "configurationPolicyGroupValue" { + t.Fatalf("Expected %q but got %q for Segment 'ConfigurationPolicyGroupName'", id.ConfigurationPolicyGroupName, "configurationPolicyGroupValue") + } +} + +func TestFormatConfigurationPolicyGroupID(t *testing.T) { + actual := NewConfigurationPolicyGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnServerConfigurationValue", "configurationPolicyGroupValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations/vpnServerConfigurationValue/configurationPolicyGroups/configurationPolicyGroupValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseConfigurationPolicyGroupID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ConfigurationPolicyGroupId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations/vpnServerConfigurationValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations/vpnServerConfigurationValue/configurationPolicyGroups", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations/vpnServerConfigurationValue/configurationPolicyGroups/configurationPolicyGroupValue", + Expected: &ConfigurationPolicyGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VpnServerConfigurationName: "vpnServerConfigurationValue", + ConfigurationPolicyGroupName: "configurationPolicyGroupValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations/vpnServerConfigurationValue/configurationPolicyGroups/configurationPolicyGroupValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseConfigurationPolicyGroupID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VpnServerConfigurationName != v.Expected.VpnServerConfigurationName { + t.Fatalf("Expected %q but got %q for VpnServerConfigurationName", v.Expected.VpnServerConfigurationName, actual.VpnServerConfigurationName) + } + + if actual.ConfigurationPolicyGroupName != v.Expected.ConfigurationPolicyGroupName { + t.Fatalf("Expected %q but got %q for ConfigurationPolicyGroupName", v.Expected.ConfigurationPolicyGroupName, actual.ConfigurationPolicyGroupName) + } + + } +} + +func TestParseConfigurationPolicyGroupIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ConfigurationPolicyGroupId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnSeRvErCoNfIgUrAtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations/vpnServerConfigurationValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnSeRvErCoNfIgUrAtIoNs/vPnSeRvErCoNfIgUrAtIoNvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations/vpnServerConfigurationValue/configurationPolicyGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnSeRvErCoNfIgUrAtIoNs/vPnSeRvErCoNfIgUrAtIoNvAlUe/cOnFiGuRaTiOnPoLiCyGrOuPs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations/vpnServerConfigurationValue/configurationPolicyGroups/configurationPolicyGroupValue", + Expected: &ConfigurationPolicyGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VpnServerConfigurationName: "vpnServerConfigurationValue", + ConfigurationPolicyGroupName: "configurationPolicyGroupValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations/vpnServerConfigurationValue/configurationPolicyGroups/configurationPolicyGroupValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnSeRvErCoNfIgUrAtIoNs/vPnSeRvErCoNfIgUrAtIoNvAlUe/cOnFiGuRaTiOnPoLiCyGrOuPs/cOnFiGuRaTiOnPoLiCyGrOuPvAlUe", + Expected: &ConfigurationPolicyGroupId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VpnServerConfigurationName: "vPnSeRvErCoNfIgUrAtIoNvAlUe", + ConfigurationPolicyGroupName: "cOnFiGuRaTiOnPoLiCyGrOuPvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnSeRvErCoNfIgUrAtIoNs/vPnSeRvErCoNfIgUrAtIoNvAlUe/cOnFiGuRaTiOnPoLiCyGrOuPs/cOnFiGuRaTiOnPoLiCyGrOuPvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseConfigurationPolicyGroupIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VpnServerConfigurationName != v.Expected.VpnServerConfigurationName { + t.Fatalf("Expected %q but got %q for VpnServerConfigurationName", v.Expected.VpnServerConfigurationName, actual.VpnServerConfigurationName) + } + + if actual.ConfigurationPolicyGroupName != v.Expected.ConfigurationPolicyGroupName { + t.Fatalf("Expected %q but got %q for ConfigurationPolicyGroupName", v.Expected.ConfigurationPolicyGroupName, actual.ConfigurationPolicyGroupName) + } + + } +} + +func TestSegmentsForConfigurationPolicyGroupId(t *testing.T) { + segments := ConfigurationPolicyGroupId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ConfigurationPolicyGroupId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_hubroutetable.go b/resource-manager/network/2024-01-01/virtualwans/id_hubroutetable.go new file mode 100644 index 00000000000..46e51d4c426 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_hubroutetable.go @@ -0,0 +1,139 @@ +package virtualwans + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&HubRouteTableId{}) +} + +var _ resourceids.ResourceId = &HubRouteTableId{} + +// HubRouteTableId is a struct representing the Resource ID for a Hub Route Table +type HubRouteTableId struct { + SubscriptionId string + ResourceGroupName string + VirtualHubName string + HubRouteTableName string +} + +// NewHubRouteTableID returns a new HubRouteTableId struct +func NewHubRouteTableID(subscriptionId string, resourceGroupName string, virtualHubName string, hubRouteTableName string) HubRouteTableId { + return HubRouteTableId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VirtualHubName: virtualHubName, + HubRouteTableName: hubRouteTableName, + } +} + +// ParseHubRouteTableID parses 'input' into a HubRouteTableId +func ParseHubRouteTableID(input string) (*HubRouteTableId, error) { + parser := resourceids.NewParserFromResourceIdType(&HubRouteTableId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := HubRouteTableId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseHubRouteTableIDInsensitively parses 'input' case-insensitively into a HubRouteTableId +// note: this method should only be used for API response data and not user input +func ParseHubRouteTableIDInsensitively(input string) (*HubRouteTableId, error) { + parser := resourceids.NewParserFromResourceIdType(&HubRouteTableId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := HubRouteTableId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *HubRouteTableId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VirtualHubName, ok = input.Parsed["virtualHubName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "virtualHubName", input) + } + + if id.HubRouteTableName, ok = input.Parsed["hubRouteTableName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "hubRouteTableName", input) + } + + return nil +} + +// ValidateHubRouteTableID checks that 'input' can be parsed as a Hub Route Table ID +func ValidateHubRouteTableID(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 := ParseHubRouteTableID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Hub Route Table ID +func (id HubRouteTableId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/virtualHubs/%s/hubRouteTables/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VirtualHubName, id.HubRouteTableName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Hub Route Table ID +func (id HubRouteTableId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVirtualHubs", "virtualHubs", "virtualHubs"), + resourceids.UserSpecifiedSegment("virtualHubName", "virtualHubValue"), + resourceids.StaticSegment("staticHubRouteTables", "hubRouteTables", "hubRouteTables"), + resourceids.UserSpecifiedSegment("hubRouteTableName", "hubRouteTableValue"), + } +} + +// String returns a human-readable description of this Hub Route Table ID +func (id HubRouteTableId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Virtual Hub Name: %q", id.VirtualHubName), + fmt.Sprintf("Hub Route Table Name: %q", id.HubRouteTableName), + } + return fmt.Sprintf("Hub Route Table (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_hubroutetable_test.go b/resource-manager/network/2024-01-01/virtualwans/id_hubroutetable_test.go new file mode 100644 index 00000000000..8b064838b6b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_hubroutetable_test.go @@ -0,0 +1,327 @@ +package virtualwans + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &HubRouteTableId{} + +func TestNewHubRouteTableID(t *testing.T) { + id := NewHubRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "hubRouteTableValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VirtualHubName != "virtualHubValue" { + t.Fatalf("Expected %q but got %q for Segment 'VirtualHubName'", id.VirtualHubName, "virtualHubValue") + } + + if id.HubRouteTableName != "hubRouteTableValue" { + t.Fatalf("Expected %q but got %q for Segment 'HubRouteTableName'", id.HubRouteTableName, "hubRouteTableValue") + } +} + +func TestFormatHubRouteTableID(t *testing.T) { + actual := NewHubRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "hubRouteTableValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/hubRouteTables/hubRouteTableValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseHubRouteTableID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *HubRouteTableId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/hubRouteTables", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/hubRouteTables/hubRouteTableValue", + Expected: &HubRouteTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualHubName: "virtualHubValue", + HubRouteTableName: "hubRouteTableValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/hubRouteTables/hubRouteTableValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseHubRouteTableID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualHubName != v.Expected.VirtualHubName { + t.Fatalf("Expected %q but got %q for VirtualHubName", v.Expected.VirtualHubName, actual.VirtualHubName) + } + + if actual.HubRouteTableName != v.Expected.HubRouteTableName { + t.Fatalf("Expected %q but got %q for HubRouteTableName", v.Expected.HubRouteTableName, actual.HubRouteTableName) + } + + } +} + +func TestParseHubRouteTableIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *HubRouteTableId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs/vIrTuAlHuBvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/hubRouteTables", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs/vIrTuAlHuBvAlUe/hUbRoUtEtAbLeS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/hubRouteTables/hubRouteTableValue", + Expected: &HubRouteTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualHubName: "virtualHubValue", + HubRouteTableName: "hubRouteTableValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/hubRouteTables/hubRouteTableValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs/vIrTuAlHuBvAlUe/hUbRoUtEtAbLeS/hUbRoUtEtAbLeVaLuE", + Expected: &HubRouteTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VirtualHubName: "vIrTuAlHuBvAlUe", + HubRouteTableName: "hUbRoUtEtAbLeVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs/vIrTuAlHuBvAlUe/hUbRoUtEtAbLeS/hUbRoUtEtAbLeVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseHubRouteTableIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualHubName != v.Expected.VirtualHubName { + t.Fatalf("Expected %q but got %q for VirtualHubName", v.Expected.VirtualHubName, actual.VirtualHubName) + } + + if actual.HubRouteTableName != v.Expected.HubRouteTableName { + t.Fatalf("Expected %q but got %q for HubRouteTableName", v.Expected.HubRouteTableName, actual.HubRouteTableName) + } + + } +} + +func TestSegmentsForHubRouteTableId(t *testing.T) { + segments := HubRouteTableId{}.Segments() + if len(segments) == 0 { + t.Fatalf("HubRouteTableId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_hubvirtualnetworkconnection.go b/resource-manager/network/2024-01-01/virtualwans/id_hubvirtualnetworkconnection.go new file mode 100644 index 00000000000..92e4c4c7d5d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_hubvirtualnetworkconnection.go @@ -0,0 +1,139 @@ +package virtualwans + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&HubVirtualNetworkConnectionId{}) +} + +var _ resourceids.ResourceId = &HubVirtualNetworkConnectionId{} + +// HubVirtualNetworkConnectionId is a struct representing the Resource ID for a Hub Virtual Network Connection +type HubVirtualNetworkConnectionId struct { + SubscriptionId string + ResourceGroupName string + VirtualHubName string + HubVirtualNetworkConnectionName string +} + +// NewHubVirtualNetworkConnectionID returns a new HubVirtualNetworkConnectionId struct +func NewHubVirtualNetworkConnectionID(subscriptionId string, resourceGroupName string, virtualHubName string, hubVirtualNetworkConnectionName string) HubVirtualNetworkConnectionId { + return HubVirtualNetworkConnectionId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VirtualHubName: virtualHubName, + HubVirtualNetworkConnectionName: hubVirtualNetworkConnectionName, + } +} + +// ParseHubVirtualNetworkConnectionID parses 'input' into a HubVirtualNetworkConnectionId +func ParseHubVirtualNetworkConnectionID(input string) (*HubVirtualNetworkConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&HubVirtualNetworkConnectionId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := HubVirtualNetworkConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseHubVirtualNetworkConnectionIDInsensitively parses 'input' case-insensitively into a HubVirtualNetworkConnectionId +// note: this method should only be used for API response data and not user input +func ParseHubVirtualNetworkConnectionIDInsensitively(input string) (*HubVirtualNetworkConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&HubVirtualNetworkConnectionId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := HubVirtualNetworkConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *HubVirtualNetworkConnectionId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VirtualHubName, ok = input.Parsed["virtualHubName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "virtualHubName", input) + } + + if id.HubVirtualNetworkConnectionName, ok = input.Parsed["hubVirtualNetworkConnectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "hubVirtualNetworkConnectionName", input) + } + + return nil +} + +// ValidateHubVirtualNetworkConnectionID checks that 'input' can be parsed as a Hub Virtual Network Connection ID +func ValidateHubVirtualNetworkConnectionID(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 := ParseHubVirtualNetworkConnectionID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Hub Virtual Network Connection ID +func (id HubVirtualNetworkConnectionId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/virtualHubs/%s/hubVirtualNetworkConnections/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VirtualHubName, id.HubVirtualNetworkConnectionName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Hub Virtual Network Connection ID +func (id HubVirtualNetworkConnectionId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVirtualHubs", "virtualHubs", "virtualHubs"), + resourceids.UserSpecifiedSegment("virtualHubName", "virtualHubValue"), + resourceids.StaticSegment("staticHubVirtualNetworkConnections", "hubVirtualNetworkConnections", "hubVirtualNetworkConnections"), + resourceids.UserSpecifiedSegment("hubVirtualNetworkConnectionName", "hubVirtualNetworkConnectionValue"), + } +} + +// String returns a human-readable description of this Hub Virtual Network Connection ID +func (id HubVirtualNetworkConnectionId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Virtual Hub Name: %q", id.VirtualHubName), + fmt.Sprintf("Hub Virtual Network Connection Name: %q", id.HubVirtualNetworkConnectionName), + } + return fmt.Sprintf("Hub Virtual Network Connection (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_hubvirtualnetworkconnection_test.go b/resource-manager/network/2024-01-01/virtualwans/id_hubvirtualnetworkconnection_test.go new file mode 100644 index 00000000000..96ef8d339b4 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_hubvirtualnetworkconnection_test.go @@ -0,0 +1,327 @@ +package virtualwans + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &HubVirtualNetworkConnectionId{} + +func TestNewHubVirtualNetworkConnectionID(t *testing.T) { + id := NewHubVirtualNetworkConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "hubVirtualNetworkConnectionValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VirtualHubName != "virtualHubValue" { + t.Fatalf("Expected %q but got %q for Segment 'VirtualHubName'", id.VirtualHubName, "virtualHubValue") + } + + if id.HubVirtualNetworkConnectionName != "hubVirtualNetworkConnectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'HubVirtualNetworkConnectionName'", id.HubVirtualNetworkConnectionName, "hubVirtualNetworkConnectionValue") + } +} + +func TestFormatHubVirtualNetworkConnectionID(t *testing.T) { + actual := NewHubVirtualNetworkConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "hubVirtualNetworkConnectionValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/hubVirtualNetworkConnections/hubVirtualNetworkConnectionValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseHubVirtualNetworkConnectionID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *HubVirtualNetworkConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/hubVirtualNetworkConnections", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/hubVirtualNetworkConnections/hubVirtualNetworkConnectionValue", + Expected: &HubVirtualNetworkConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualHubName: "virtualHubValue", + HubVirtualNetworkConnectionName: "hubVirtualNetworkConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/hubVirtualNetworkConnections/hubVirtualNetworkConnectionValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseHubVirtualNetworkConnectionID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualHubName != v.Expected.VirtualHubName { + t.Fatalf("Expected %q but got %q for VirtualHubName", v.Expected.VirtualHubName, actual.VirtualHubName) + } + + if actual.HubVirtualNetworkConnectionName != v.Expected.HubVirtualNetworkConnectionName { + t.Fatalf("Expected %q but got %q for HubVirtualNetworkConnectionName", v.Expected.HubVirtualNetworkConnectionName, actual.HubVirtualNetworkConnectionName) + } + + } +} + +func TestParseHubVirtualNetworkConnectionIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *HubVirtualNetworkConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs/vIrTuAlHuBvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/hubVirtualNetworkConnections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs/vIrTuAlHuBvAlUe/hUbViRtUaLnEtWoRkCoNnEcTiOnS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/hubVirtualNetworkConnections/hubVirtualNetworkConnectionValue", + Expected: &HubVirtualNetworkConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualHubName: "virtualHubValue", + HubVirtualNetworkConnectionName: "hubVirtualNetworkConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/hubVirtualNetworkConnections/hubVirtualNetworkConnectionValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs/vIrTuAlHuBvAlUe/hUbViRtUaLnEtWoRkCoNnEcTiOnS/hUbViRtUaLnEtWoRkCoNnEcTiOnVaLuE", + Expected: &HubVirtualNetworkConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VirtualHubName: "vIrTuAlHuBvAlUe", + HubVirtualNetworkConnectionName: "hUbViRtUaLnEtWoRkCoNnEcTiOnVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs/vIrTuAlHuBvAlUe/hUbViRtUaLnEtWoRkCoNnEcTiOnS/hUbViRtUaLnEtWoRkCoNnEcTiOnVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseHubVirtualNetworkConnectionIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualHubName != v.Expected.VirtualHubName { + t.Fatalf("Expected %q but got %q for VirtualHubName", v.Expected.VirtualHubName, actual.VirtualHubName) + } + + if actual.HubVirtualNetworkConnectionName != v.Expected.HubVirtualNetworkConnectionName { + t.Fatalf("Expected %q but got %q for HubVirtualNetworkConnectionName", v.Expected.HubVirtualNetworkConnectionName, actual.HubVirtualNetworkConnectionName) + } + + } +} + +func TestSegmentsForHubVirtualNetworkConnectionId(t *testing.T) { + segments := HubVirtualNetworkConnectionId{}.Segments() + if len(segments) == 0 { + t.Fatalf("HubVirtualNetworkConnectionId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_natrule.go b/resource-manager/network/2024-01-01/virtualwans/id_natrule.go new file mode 100644 index 00000000000..f2dca44d7fa --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_natrule.go @@ -0,0 +1,139 @@ +package virtualwans + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NatRuleId{}) +} + +var _ resourceids.ResourceId = &NatRuleId{} + +// NatRuleId is a struct representing the Resource ID for a Nat Rule +type NatRuleId struct { + SubscriptionId string + ResourceGroupName string + VpnGatewayName string + NatRuleName string +} + +// NewNatRuleID returns a new NatRuleId struct +func NewNatRuleID(subscriptionId string, resourceGroupName string, vpnGatewayName string, natRuleName string) NatRuleId { + return NatRuleId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VpnGatewayName: vpnGatewayName, + NatRuleName: natRuleName, + } +} + +// ParseNatRuleID parses 'input' into a NatRuleId +func ParseNatRuleID(input string) (*NatRuleId, error) { + parser := resourceids.NewParserFromResourceIdType(&NatRuleId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NatRuleId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNatRuleIDInsensitively parses 'input' case-insensitively into a NatRuleId +// note: this method should only be used for API response data and not user input +func ParseNatRuleIDInsensitively(input string) (*NatRuleId, error) { + parser := resourceids.NewParserFromResourceIdType(&NatRuleId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NatRuleId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NatRuleId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VpnGatewayName, ok = input.Parsed["vpnGatewayName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "vpnGatewayName", input) + } + + if id.NatRuleName, ok = input.Parsed["natRuleName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "natRuleName", input) + } + + return nil +} + +// ValidateNatRuleID checks that 'input' can be parsed as a Nat Rule ID +func ValidateNatRuleID(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 := ParseNatRuleID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Nat Rule ID +func (id NatRuleId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/vpnGateways/%s/natRules/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VpnGatewayName, id.NatRuleName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Nat Rule ID +func (id NatRuleId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVpnGateways", "vpnGateways", "vpnGateways"), + resourceids.UserSpecifiedSegment("vpnGatewayName", "vpnGatewayValue"), + resourceids.StaticSegment("staticNatRules", "natRules", "natRules"), + resourceids.UserSpecifiedSegment("natRuleName", "natRuleValue"), + } +} + +// String returns a human-readable description of this Nat Rule ID +func (id NatRuleId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Vpn Gateway Name: %q", id.VpnGatewayName), + fmt.Sprintf("Nat Rule Name: %q", id.NatRuleName), + } + return fmt.Sprintf("Nat Rule (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_natrule_test.go b/resource-manager/network/2024-01-01/virtualwans/id_natrule_test.go new file mode 100644 index 00000000000..b690124379e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_natrule_test.go @@ -0,0 +1,327 @@ +package virtualwans + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NatRuleId{} + +func TestNewNatRuleID(t *testing.T) { + id := NewNatRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue", "natRuleValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VpnGatewayName != "vpnGatewayValue" { + t.Fatalf("Expected %q but got %q for Segment 'VpnGatewayName'", id.VpnGatewayName, "vpnGatewayValue") + } + + if id.NatRuleName != "natRuleValue" { + t.Fatalf("Expected %q but got %q for Segment 'NatRuleName'", id.NatRuleName, "natRuleValue") + } +} + +func TestFormatNatRuleID(t *testing.T) { + actual := NewNatRuleID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue", "natRuleValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/natRules/natRuleValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNatRuleID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NatRuleId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/natRules", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/natRules/natRuleValue", + Expected: &NatRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VpnGatewayName: "vpnGatewayValue", + NatRuleName: "natRuleValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/natRules/natRuleValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNatRuleID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VpnGatewayName != v.Expected.VpnGatewayName { + t.Fatalf("Expected %q but got %q for VpnGatewayName", v.Expected.VpnGatewayName, actual.VpnGatewayName) + } + + if actual.NatRuleName != v.Expected.NatRuleName { + t.Fatalf("Expected %q but got %q for NatRuleName", v.Expected.NatRuleName, actual.NatRuleName) + } + + } +} + +func TestParseNatRuleIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NatRuleId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs/vPnGaTeWaYvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/natRules", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs/vPnGaTeWaYvAlUe/nAtRuLeS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/natRules/natRuleValue", + Expected: &NatRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VpnGatewayName: "vpnGatewayValue", + NatRuleName: "natRuleValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/natRules/natRuleValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs/vPnGaTeWaYvAlUe/nAtRuLeS/nAtRuLeVaLuE", + Expected: &NatRuleId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VpnGatewayName: "vPnGaTeWaYvAlUe", + NatRuleName: "nAtRuLeVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs/vPnGaTeWaYvAlUe/nAtRuLeS/nAtRuLeVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNatRuleIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VpnGatewayName != v.Expected.VpnGatewayName { + t.Fatalf("Expected %q but got %q for VpnGatewayName", v.Expected.VpnGatewayName, actual.VpnGatewayName) + } + + if actual.NatRuleName != v.Expected.NatRuleName { + t.Fatalf("Expected %q but got %q for NatRuleName", v.Expected.NatRuleName, actual.NatRuleName) + } + + } +} + +func TestSegmentsForNatRuleId(t *testing.T) { + segments := NatRuleId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NatRuleId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_networkvirtualappliance.go b/resource-manager/network/2024-01-01/virtualwans/id_networkvirtualappliance.go new file mode 100644 index 00000000000..2dc156a927c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_networkvirtualappliance.go @@ -0,0 +1,130 @@ +package virtualwans + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NetworkVirtualApplianceId{}) +} + +var _ resourceids.ResourceId = &NetworkVirtualApplianceId{} + +// NetworkVirtualApplianceId is a struct representing the Resource ID for a Network Virtual Appliance +type NetworkVirtualApplianceId struct { + SubscriptionId string + ResourceGroupName string + NetworkVirtualApplianceName string +} + +// NewNetworkVirtualApplianceID returns a new NetworkVirtualApplianceId struct +func NewNetworkVirtualApplianceID(subscriptionId string, resourceGroupName string, networkVirtualApplianceName string) NetworkVirtualApplianceId { + return NetworkVirtualApplianceId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkVirtualApplianceName: networkVirtualApplianceName, + } +} + +// ParseNetworkVirtualApplianceID parses 'input' into a NetworkVirtualApplianceId +func ParseNetworkVirtualApplianceID(input string) (*NetworkVirtualApplianceId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkVirtualApplianceId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkVirtualApplianceId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNetworkVirtualApplianceIDInsensitively parses 'input' case-insensitively into a NetworkVirtualApplianceId +// note: this method should only be used for API response data and not user input +func ParseNetworkVirtualApplianceIDInsensitively(input string) (*NetworkVirtualApplianceId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkVirtualApplianceId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkVirtualApplianceId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NetworkVirtualApplianceId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkVirtualApplianceName, ok = input.Parsed["networkVirtualApplianceName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkVirtualApplianceName", input) + } + + return nil +} + +// ValidateNetworkVirtualApplianceID checks that 'input' can be parsed as a Network Virtual Appliance ID +func ValidateNetworkVirtualApplianceID(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 := ParseNetworkVirtualApplianceID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Network Virtual Appliance ID +func (id NetworkVirtualApplianceId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkVirtualAppliances/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkVirtualApplianceName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Network Virtual Appliance ID +func (id NetworkVirtualApplianceId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkVirtualAppliances", "networkVirtualAppliances", "networkVirtualAppliances"), + resourceids.UserSpecifiedSegment("networkVirtualApplianceName", "networkVirtualApplianceValue"), + } +} + +// String returns a human-readable description of this Network Virtual Appliance ID +func (id NetworkVirtualApplianceId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Virtual Appliance Name: %q", id.NetworkVirtualApplianceName), + } + return fmt.Sprintf("Network Virtual Appliance (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_networkvirtualappliance_test.go b/resource-manager/network/2024-01-01/virtualwans/id_networkvirtualappliance_test.go new file mode 100644 index 00000000000..bc012720867 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_networkvirtualappliance_test.go @@ -0,0 +1,282 @@ +package virtualwans + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NetworkVirtualApplianceId{} + +func TestNewNetworkVirtualApplianceID(t *testing.T) { + id := NewNetworkVirtualApplianceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkVirtualApplianceName != "networkVirtualApplianceValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkVirtualApplianceName'", id.NetworkVirtualApplianceName, "networkVirtualApplianceValue") + } +} + +func TestFormatNetworkVirtualApplianceID(t *testing.T) { + actual := NewNetworkVirtualApplianceID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNetworkVirtualApplianceID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkVirtualApplianceId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue", + Expected: &NetworkVirtualApplianceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkVirtualApplianceName: "networkVirtualApplianceValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkVirtualApplianceID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkVirtualApplianceName != v.Expected.NetworkVirtualApplianceName { + t.Fatalf("Expected %q but got %q for NetworkVirtualApplianceName", v.Expected.NetworkVirtualApplianceName, actual.NetworkVirtualApplianceName) + } + + } +} + +func TestParseNetworkVirtualApplianceIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkVirtualApplianceId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue", + Expected: &NetworkVirtualApplianceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkVirtualApplianceName: "networkVirtualApplianceValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS/nEtWoRkViRtUaLaPpLiAnCeVaLuE", + Expected: &NetworkVirtualApplianceId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkVirtualApplianceName: "nEtWoRkViRtUaLaPpLiAnCeVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS/nEtWoRkViRtUaLaPpLiAnCeVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkVirtualApplianceIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkVirtualApplianceName != v.Expected.NetworkVirtualApplianceName { + t.Fatalf("Expected %q but got %q for NetworkVirtualApplianceName", v.Expected.NetworkVirtualApplianceName, actual.NetworkVirtualApplianceName) + } + + } +} + +func TestSegmentsForNetworkVirtualApplianceId(t *testing.T) { + segments := NetworkVirtualApplianceId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NetworkVirtualApplianceId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_networkvirtualapplianceconnection.go b/resource-manager/network/2024-01-01/virtualwans/id_networkvirtualapplianceconnection.go new file mode 100644 index 00000000000..d39f2a000d0 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_networkvirtualapplianceconnection.go @@ -0,0 +1,139 @@ +package virtualwans + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&NetworkVirtualApplianceConnectionId{}) +} + +var _ resourceids.ResourceId = &NetworkVirtualApplianceConnectionId{} + +// NetworkVirtualApplianceConnectionId is a struct representing the Resource ID for a Network Virtual Appliance Connection +type NetworkVirtualApplianceConnectionId struct { + SubscriptionId string + ResourceGroupName string + NetworkVirtualApplianceName string + NetworkVirtualApplianceConnectionName string +} + +// NewNetworkVirtualApplianceConnectionID returns a new NetworkVirtualApplianceConnectionId struct +func NewNetworkVirtualApplianceConnectionID(subscriptionId string, resourceGroupName string, networkVirtualApplianceName string, networkVirtualApplianceConnectionName string) NetworkVirtualApplianceConnectionId { + return NetworkVirtualApplianceConnectionId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + NetworkVirtualApplianceName: networkVirtualApplianceName, + NetworkVirtualApplianceConnectionName: networkVirtualApplianceConnectionName, + } +} + +// ParseNetworkVirtualApplianceConnectionID parses 'input' into a NetworkVirtualApplianceConnectionId +func ParseNetworkVirtualApplianceConnectionID(input string) (*NetworkVirtualApplianceConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkVirtualApplianceConnectionId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkVirtualApplianceConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseNetworkVirtualApplianceConnectionIDInsensitively parses 'input' case-insensitively into a NetworkVirtualApplianceConnectionId +// note: this method should only be used for API response data and not user input +func ParseNetworkVirtualApplianceConnectionIDInsensitively(input string) (*NetworkVirtualApplianceConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&NetworkVirtualApplianceConnectionId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := NetworkVirtualApplianceConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *NetworkVirtualApplianceConnectionId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.NetworkVirtualApplianceName, ok = input.Parsed["networkVirtualApplianceName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkVirtualApplianceName", input) + } + + if id.NetworkVirtualApplianceConnectionName, ok = input.Parsed["networkVirtualApplianceConnectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "networkVirtualApplianceConnectionName", input) + } + + return nil +} + +// ValidateNetworkVirtualApplianceConnectionID checks that 'input' can be parsed as a Network Virtual Appliance Connection ID +func ValidateNetworkVirtualApplianceConnectionID(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 := ParseNetworkVirtualApplianceConnectionID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Network Virtual Appliance Connection ID +func (id NetworkVirtualApplianceConnectionId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/networkVirtualAppliances/%s/networkVirtualApplianceConnections/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.NetworkVirtualApplianceName, id.NetworkVirtualApplianceConnectionName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Network Virtual Appliance Connection ID +func (id NetworkVirtualApplianceConnectionId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticNetworkVirtualAppliances", "networkVirtualAppliances", "networkVirtualAppliances"), + resourceids.UserSpecifiedSegment("networkVirtualApplianceName", "networkVirtualApplianceValue"), + resourceids.StaticSegment("staticNetworkVirtualApplianceConnections", "networkVirtualApplianceConnections", "networkVirtualApplianceConnections"), + resourceids.UserSpecifiedSegment("networkVirtualApplianceConnectionName", "networkVirtualApplianceConnectionValue"), + } +} + +// String returns a human-readable description of this Network Virtual Appliance Connection ID +func (id NetworkVirtualApplianceConnectionId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Network Virtual Appliance Name: %q", id.NetworkVirtualApplianceName), + fmt.Sprintf("Network Virtual Appliance Connection Name: %q", id.NetworkVirtualApplianceConnectionName), + } + return fmt.Sprintf("Network Virtual Appliance Connection (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_networkvirtualapplianceconnection_test.go b/resource-manager/network/2024-01-01/virtualwans/id_networkvirtualapplianceconnection_test.go new file mode 100644 index 00000000000..2064eae07fd --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_networkvirtualapplianceconnection_test.go @@ -0,0 +1,327 @@ +package virtualwans + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &NetworkVirtualApplianceConnectionId{} + +func TestNewNetworkVirtualApplianceConnectionID(t *testing.T) { + id := NewNetworkVirtualApplianceConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue", "networkVirtualApplianceConnectionValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.NetworkVirtualApplianceName != "networkVirtualApplianceValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkVirtualApplianceName'", id.NetworkVirtualApplianceName, "networkVirtualApplianceValue") + } + + if id.NetworkVirtualApplianceConnectionName != "networkVirtualApplianceConnectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'NetworkVirtualApplianceConnectionName'", id.NetworkVirtualApplianceConnectionName, "networkVirtualApplianceConnectionValue") + } +} + +func TestFormatNetworkVirtualApplianceConnectionID(t *testing.T) { + actual := NewNetworkVirtualApplianceConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "networkVirtualApplianceValue", "networkVirtualApplianceConnectionValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/networkVirtualApplianceConnections/networkVirtualApplianceConnectionValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseNetworkVirtualApplianceConnectionID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkVirtualApplianceConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/networkVirtualApplianceConnections", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/networkVirtualApplianceConnections/networkVirtualApplianceConnectionValue", + Expected: &NetworkVirtualApplianceConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkVirtualApplianceName: "networkVirtualApplianceValue", + NetworkVirtualApplianceConnectionName: "networkVirtualApplianceConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/networkVirtualApplianceConnections/networkVirtualApplianceConnectionValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkVirtualApplianceConnectionID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkVirtualApplianceName != v.Expected.NetworkVirtualApplianceName { + t.Fatalf("Expected %q but got %q for NetworkVirtualApplianceName", v.Expected.NetworkVirtualApplianceName, actual.NetworkVirtualApplianceName) + } + + if actual.NetworkVirtualApplianceConnectionName != v.Expected.NetworkVirtualApplianceConnectionName { + t.Fatalf("Expected %q but got %q for NetworkVirtualApplianceConnectionName", v.Expected.NetworkVirtualApplianceConnectionName, actual.NetworkVirtualApplianceConnectionName) + } + + } +} + +func TestParseNetworkVirtualApplianceConnectionIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *NetworkVirtualApplianceConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS/nEtWoRkViRtUaLaPpLiAnCeVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/networkVirtualApplianceConnections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS/nEtWoRkViRtUaLaPpLiAnCeVaLuE/nEtWoRkViRtUaLaPpLiAnCeCoNnEcTiOnS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/networkVirtualApplianceConnections/networkVirtualApplianceConnectionValue", + Expected: &NetworkVirtualApplianceConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + NetworkVirtualApplianceName: "networkVirtualApplianceValue", + NetworkVirtualApplianceConnectionName: "networkVirtualApplianceConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/networkVirtualAppliances/networkVirtualApplianceValue/networkVirtualApplianceConnections/networkVirtualApplianceConnectionValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS/nEtWoRkViRtUaLaPpLiAnCeVaLuE/nEtWoRkViRtUaLaPpLiAnCeCoNnEcTiOnS/nEtWoRkViRtUaLaPpLiAnCeCoNnEcTiOnVaLuE", + Expected: &NetworkVirtualApplianceConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + NetworkVirtualApplianceName: "nEtWoRkViRtUaLaPpLiAnCeVaLuE", + NetworkVirtualApplianceConnectionName: "nEtWoRkViRtUaLaPpLiAnCeCoNnEcTiOnVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/nEtWoRkViRtUaLaPpLiAnCeS/nEtWoRkViRtUaLaPpLiAnCeVaLuE/nEtWoRkViRtUaLaPpLiAnCeCoNnEcTiOnS/nEtWoRkViRtUaLaPpLiAnCeCoNnEcTiOnVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseNetworkVirtualApplianceConnectionIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.NetworkVirtualApplianceName != v.Expected.NetworkVirtualApplianceName { + t.Fatalf("Expected %q but got %q for NetworkVirtualApplianceName", v.Expected.NetworkVirtualApplianceName, actual.NetworkVirtualApplianceName) + } + + if actual.NetworkVirtualApplianceConnectionName != v.Expected.NetworkVirtualApplianceConnectionName { + t.Fatalf("Expected %q but got %q for NetworkVirtualApplianceConnectionName", v.Expected.NetworkVirtualApplianceConnectionName, actual.NetworkVirtualApplianceConnectionName) + } + + } +} + +func TestSegmentsForNetworkVirtualApplianceConnectionId(t *testing.T) { + segments := NetworkVirtualApplianceConnectionId{}.Segments() + if len(segments) == 0 { + t.Fatalf("NetworkVirtualApplianceConnectionId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_routemap.go b/resource-manager/network/2024-01-01/virtualwans/id_routemap.go new file mode 100644 index 00000000000..c95aeaafbfd --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_routemap.go @@ -0,0 +1,139 @@ +package virtualwans + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&RouteMapId{}) +} + +var _ resourceids.ResourceId = &RouteMapId{} + +// RouteMapId is a struct representing the Resource ID for a Route Map +type RouteMapId struct { + SubscriptionId string + ResourceGroupName string + VirtualHubName string + RouteMapName string +} + +// NewRouteMapID returns a new RouteMapId struct +func NewRouteMapID(subscriptionId string, resourceGroupName string, virtualHubName string, routeMapName string) RouteMapId { + return RouteMapId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VirtualHubName: virtualHubName, + RouteMapName: routeMapName, + } +} + +// ParseRouteMapID parses 'input' into a RouteMapId +func ParseRouteMapID(input string) (*RouteMapId, error) { + parser := resourceids.NewParserFromResourceIdType(&RouteMapId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RouteMapId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseRouteMapIDInsensitively parses 'input' case-insensitively into a RouteMapId +// note: this method should only be used for API response data and not user input +func ParseRouteMapIDInsensitively(input string) (*RouteMapId, error) { + parser := resourceids.NewParserFromResourceIdType(&RouteMapId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RouteMapId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *RouteMapId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VirtualHubName, ok = input.Parsed["virtualHubName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "virtualHubName", input) + } + + if id.RouteMapName, ok = input.Parsed["routeMapName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "routeMapName", input) + } + + return nil +} + +// ValidateRouteMapID checks that 'input' can be parsed as a Route Map ID +func ValidateRouteMapID(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 := ParseRouteMapID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Route Map ID +func (id RouteMapId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/virtualHubs/%s/routeMaps/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VirtualHubName, id.RouteMapName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Route Map ID +func (id RouteMapId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVirtualHubs", "virtualHubs", "virtualHubs"), + resourceids.UserSpecifiedSegment("virtualHubName", "virtualHubValue"), + resourceids.StaticSegment("staticRouteMaps", "routeMaps", "routeMaps"), + resourceids.UserSpecifiedSegment("routeMapName", "routeMapValue"), + } +} + +// String returns a human-readable description of this Route Map ID +func (id RouteMapId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Virtual Hub Name: %q", id.VirtualHubName), + fmt.Sprintf("Route Map Name: %q", id.RouteMapName), + } + return fmt.Sprintf("Route Map (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_routemap_test.go b/resource-manager/network/2024-01-01/virtualwans/id_routemap_test.go new file mode 100644 index 00000000000..b0661e538c3 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_routemap_test.go @@ -0,0 +1,327 @@ +package virtualwans + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &RouteMapId{} + +func TestNewRouteMapID(t *testing.T) { + id := NewRouteMapID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "routeMapValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VirtualHubName != "virtualHubValue" { + t.Fatalf("Expected %q but got %q for Segment 'VirtualHubName'", id.VirtualHubName, "virtualHubValue") + } + + if id.RouteMapName != "routeMapValue" { + t.Fatalf("Expected %q but got %q for Segment 'RouteMapName'", id.RouteMapName, "routeMapValue") + } +} + +func TestFormatRouteMapID(t *testing.T) { + actual := NewRouteMapID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "routeMapValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/routeMaps/routeMapValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseRouteMapID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RouteMapId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/routeMaps", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/routeMaps/routeMapValue", + Expected: &RouteMapId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualHubName: "virtualHubValue", + RouteMapName: "routeMapValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/routeMaps/routeMapValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRouteMapID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualHubName != v.Expected.VirtualHubName { + t.Fatalf("Expected %q but got %q for VirtualHubName", v.Expected.VirtualHubName, actual.VirtualHubName) + } + + if actual.RouteMapName != v.Expected.RouteMapName { + t.Fatalf("Expected %q but got %q for RouteMapName", v.Expected.RouteMapName, actual.RouteMapName) + } + + } +} + +func TestParseRouteMapIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RouteMapId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs/vIrTuAlHuBvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/routeMaps", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs/vIrTuAlHuBvAlUe/rOuTeMaPs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/routeMaps/routeMapValue", + Expected: &RouteMapId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualHubName: "virtualHubValue", + RouteMapName: "routeMapValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/routeMaps/routeMapValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs/vIrTuAlHuBvAlUe/rOuTeMaPs/rOuTeMaPvAlUe", + Expected: &RouteMapId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VirtualHubName: "vIrTuAlHuBvAlUe", + RouteMapName: "rOuTeMaPvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs/vIrTuAlHuBvAlUe/rOuTeMaPs/rOuTeMaPvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRouteMapIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualHubName != v.Expected.VirtualHubName { + t.Fatalf("Expected %q but got %q for VirtualHubName", v.Expected.VirtualHubName, actual.VirtualHubName) + } + + if actual.RouteMapName != v.Expected.RouteMapName { + t.Fatalf("Expected %q but got %q for RouteMapName", v.Expected.RouteMapName, actual.RouteMapName) + } + + } +} + +func TestSegmentsForRouteMapId(t *testing.T) { + segments := RouteMapId{}.Segments() + if len(segments) == 0 { + t.Fatalf("RouteMapId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_routingintent.go b/resource-manager/network/2024-01-01/virtualwans/id_routingintent.go new file mode 100644 index 00000000000..de16e7a3861 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_routingintent.go @@ -0,0 +1,139 @@ +package virtualwans + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&RoutingIntentId{}) +} + +var _ resourceids.ResourceId = &RoutingIntentId{} + +// RoutingIntentId is a struct representing the Resource ID for a Routing Intent +type RoutingIntentId struct { + SubscriptionId string + ResourceGroupName string + VirtualHubName string + RoutingIntentName string +} + +// NewRoutingIntentID returns a new RoutingIntentId struct +func NewRoutingIntentID(subscriptionId string, resourceGroupName string, virtualHubName string, routingIntentName string) RoutingIntentId { + return RoutingIntentId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VirtualHubName: virtualHubName, + RoutingIntentName: routingIntentName, + } +} + +// ParseRoutingIntentID parses 'input' into a RoutingIntentId +func ParseRoutingIntentID(input string) (*RoutingIntentId, error) { + parser := resourceids.NewParserFromResourceIdType(&RoutingIntentId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RoutingIntentId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseRoutingIntentIDInsensitively parses 'input' case-insensitively into a RoutingIntentId +// note: this method should only be used for API response data and not user input +func ParseRoutingIntentIDInsensitively(input string) (*RoutingIntentId, error) { + parser := resourceids.NewParserFromResourceIdType(&RoutingIntentId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := RoutingIntentId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *RoutingIntentId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VirtualHubName, ok = input.Parsed["virtualHubName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "virtualHubName", input) + } + + if id.RoutingIntentName, ok = input.Parsed["routingIntentName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "routingIntentName", input) + } + + return nil +} + +// ValidateRoutingIntentID checks that 'input' can be parsed as a Routing Intent ID +func ValidateRoutingIntentID(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 := ParseRoutingIntentID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Routing Intent ID +func (id RoutingIntentId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/virtualHubs/%s/routingIntent/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VirtualHubName, id.RoutingIntentName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Routing Intent ID +func (id RoutingIntentId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVirtualHubs", "virtualHubs", "virtualHubs"), + resourceids.UserSpecifiedSegment("virtualHubName", "virtualHubValue"), + resourceids.StaticSegment("staticRoutingIntent", "routingIntent", "routingIntent"), + resourceids.UserSpecifiedSegment("routingIntentName", "routingIntentValue"), + } +} + +// String returns a human-readable description of this Routing Intent ID +func (id RoutingIntentId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Virtual Hub Name: %q", id.VirtualHubName), + fmt.Sprintf("Routing Intent Name: %q", id.RoutingIntentName), + } + return fmt.Sprintf("Routing Intent (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_routingintent_test.go b/resource-manager/network/2024-01-01/virtualwans/id_routingintent_test.go new file mode 100644 index 00000000000..a8c7a11ca58 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_routingintent_test.go @@ -0,0 +1,327 @@ +package virtualwans + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &RoutingIntentId{} + +func TestNewRoutingIntentID(t *testing.T) { + id := NewRoutingIntentID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "routingIntentValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VirtualHubName != "virtualHubValue" { + t.Fatalf("Expected %q but got %q for Segment 'VirtualHubName'", id.VirtualHubName, "virtualHubValue") + } + + if id.RoutingIntentName != "routingIntentValue" { + t.Fatalf("Expected %q but got %q for Segment 'RoutingIntentName'", id.RoutingIntentName, "routingIntentValue") + } +} + +func TestFormatRoutingIntentID(t *testing.T) { + actual := NewRoutingIntentID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "routingIntentValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/routingIntent/routingIntentValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseRoutingIntentID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RoutingIntentId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/routingIntent", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/routingIntent/routingIntentValue", + Expected: &RoutingIntentId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualHubName: "virtualHubValue", + RoutingIntentName: "routingIntentValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/routingIntent/routingIntentValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRoutingIntentID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualHubName != v.Expected.VirtualHubName { + t.Fatalf("Expected %q but got %q for VirtualHubName", v.Expected.VirtualHubName, actual.VirtualHubName) + } + + if actual.RoutingIntentName != v.Expected.RoutingIntentName { + t.Fatalf("Expected %q but got %q for RoutingIntentName", v.Expected.RoutingIntentName, actual.RoutingIntentName) + } + + } +} + +func TestParseRoutingIntentIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *RoutingIntentId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs/vIrTuAlHuBvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/routingIntent", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs/vIrTuAlHuBvAlUe/rOuTiNgInTeNt", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/routingIntent/routingIntentValue", + Expected: &RoutingIntentId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualHubName: "virtualHubValue", + RoutingIntentName: "routingIntentValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/routingIntent/routingIntentValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs/vIrTuAlHuBvAlUe/rOuTiNgInTeNt/rOuTiNgInTeNtVaLuE", + Expected: &RoutingIntentId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VirtualHubName: "vIrTuAlHuBvAlUe", + RoutingIntentName: "rOuTiNgInTeNtVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs/vIrTuAlHuBvAlUe/rOuTiNgInTeNt/rOuTiNgInTeNtVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseRoutingIntentIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualHubName != v.Expected.VirtualHubName { + t.Fatalf("Expected %q but got %q for VirtualHubName", v.Expected.VirtualHubName, actual.VirtualHubName) + } + + if actual.RoutingIntentName != v.Expected.RoutingIntentName { + t.Fatalf("Expected %q but got %q for RoutingIntentName", v.Expected.RoutingIntentName, actual.RoutingIntentName) + } + + } +} + +func TestSegmentsForRoutingIntentId(t *testing.T) { + segments := RoutingIntentId{}.Segments() + if len(segments) == 0 { + t.Fatalf("RoutingIntentId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_virtualhub.go b/resource-manager/network/2024-01-01/virtualwans/id_virtualhub.go new file mode 100644 index 00000000000..ec4a18686e5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_virtualhub.go @@ -0,0 +1,130 @@ +package virtualwans + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&VirtualHubId{}) +} + +var _ resourceids.ResourceId = &VirtualHubId{} + +// VirtualHubId is a struct representing the Resource ID for a Virtual Hub +type VirtualHubId struct { + SubscriptionId string + ResourceGroupName string + VirtualHubName string +} + +// NewVirtualHubID returns a new VirtualHubId struct +func NewVirtualHubID(subscriptionId string, resourceGroupName string, virtualHubName string) VirtualHubId { + return VirtualHubId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VirtualHubName: virtualHubName, + } +} + +// ParseVirtualHubID parses 'input' into a VirtualHubId +func ParseVirtualHubID(input string) (*VirtualHubId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualHubId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualHubId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseVirtualHubIDInsensitively parses 'input' case-insensitively into a VirtualHubId +// note: this method should only be used for API response data and not user input +func ParseVirtualHubIDInsensitively(input string) (*VirtualHubId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualHubId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualHubId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *VirtualHubId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VirtualHubName, ok = input.Parsed["virtualHubName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "virtualHubName", input) + } + + return nil +} + +// ValidateVirtualHubID checks that 'input' can be parsed as a Virtual Hub ID +func ValidateVirtualHubID(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 := ParseVirtualHubID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Virtual Hub ID +func (id VirtualHubId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/virtualHubs/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VirtualHubName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Virtual Hub ID +func (id VirtualHubId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVirtualHubs", "virtualHubs", "virtualHubs"), + resourceids.UserSpecifiedSegment("virtualHubName", "virtualHubValue"), + } +} + +// String returns a human-readable description of this Virtual Hub ID +func (id VirtualHubId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Virtual Hub Name: %q", id.VirtualHubName), + } + return fmt.Sprintf("Virtual Hub (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_virtualhub_test.go b/resource-manager/network/2024-01-01/virtualwans/id_virtualhub_test.go new file mode 100644 index 00000000000..2ac9a8ca472 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_virtualhub_test.go @@ -0,0 +1,282 @@ +package virtualwans + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &VirtualHubId{} + +func TestNewVirtualHubID(t *testing.T) { + id := NewVirtualHubID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VirtualHubName != "virtualHubValue" { + t.Fatalf("Expected %q but got %q for Segment 'VirtualHubName'", id.VirtualHubName, "virtualHubValue") + } +} + +func TestFormatVirtualHubID(t *testing.T) { + actual := NewVirtualHubID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseVirtualHubID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualHubId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue", + Expected: &VirtualHubId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualHubName: "virtualHubValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualHubID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualHubName != v.Expected.VirtualHubName { + t.Fatalf("Expected %q but got %q for VirtualHubName", v.Expected.VirtualHubName, actual.VirtualHubName) + } + + } +} + +func TestParseVirtualHubIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualHubId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue", + Expected: &VirtualHubId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualHubName: "virtualHubValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs/vIrTuAlHuBvAlUe", + Expected: &VirtualHubId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VirtualHubName: "vIrTuAlHuBvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs/vIrTuAlHuBvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualHubIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualHubName != v.Expected.VirtualHubName { + t.Fatalf("Expected %q but got %q for VirtualHubName", v.Expected.VirtualHubName, actual.VirtualHubName) + } + + } +} + +func TestSegmentsForVirtualHubId(t *testing.T) { + segments := VirtualHubId{}.Segments() + if len(segments) == 0 { + t.Fatalf("VirtualHubId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_virtualhubroutetable.go b/resource-manager/network/2024-01-01/virtualwans/id_virtualhubroutetable.go new file mode 100644 index 00000000000..b2cd55910b3 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_virtualhubroutetable.go @@ -0,0 +1,139 @@ +package virtualwans + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&VirtualHubRouteTableId{}) +} + +var _ resourceids.ResourceId = &VirtualHubRouteTableId{} + +// VirtualHubRouteTableId is a struct representing the Resource ID for a Virtual Hub Route Table +type VirtualHubRouteTableId struct { + SubscriptionId string + ResourceGroupName string + VirtualHubName string + RouteTableName string +} + +// NewVirtualHubRouteTableID returns a new VirtualHubRouteTableId struct +func NewVirtualHubRouteTableID(subscriptionId string, resourceGroupName string, virtualHubName string, routeTableName string) VirtualHubRouteTableId { + return VirtualHubRouteTableId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VirtualHubName: virtualHubName, + RouteTableName: routeTableName, + } +} + +// ParseVirtualHubRouteTableID parses 'input' into a VirtualHubRouteTableId +func ParseVirtualHubRouteTableID(input string) (*VirtualHubRouteTableId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualHubRouteTableId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualHubRouteTableId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseVirtualHubRouteTableIDInsensitively parses 'input' case-insensitively into a VirtualHubRouteTableId +// note: this method should only be used for API response data and not user input +func ParseVirtualHubRouteTableIDInsensitively(input string) (*VirtualHubRouteTableId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualHubRouteTableId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualHubRouteTableId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *VirtualHubRouteTableId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VirtualHubName, ok = input.Parsed["virtualHubName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "virtualHubName", input) + } + + if id.RouteTableName, ok = input.Parsed["routeTableName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "routeTableName", input) + } + + return nil +} + +// ValidateVirtualHubRouteTableID checks that 'input' can be parsed as a Virtual Hub Route Table ID +func ValidateVirtualHubRouteTableID(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 := ParseVirtualHubRouteTableID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Virtual Hub Route Table ID +func (id VirtualHubRouteTableId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/virtualHubs/%s/routeTables/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VirtualHubName, id.RouteTableName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Virtual Hub Route Table ID +func (id VirtualHubRouteTableId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVirtualHubs", "virtualHubs", "virtualHubs"), + resourceids.UserSpecifiedSegment("virtualHubName", "virtualHubValue"), + resourceids.StaticSegment("staticRouteTables", "routeTables", "routeTables"), + resourceids.UserSpecifiedSegment("routeTableName", "routeTableValue"), + } +} + +// String returns a human-readable description of this Virtual Hub Route Table ID +func (id VirtualHubRouteTableId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Virtual Hub Name: %q", id.VirtualHubName), + fmt.Sprintf("Route Table Name: %q", id.RouteTableName), + } + return fmt.Sprintf("Virtual Hub Route Table (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_virtualhubroutetable_test.go b/resource-manager/network/2024-01-01/virtualwans/id_virtualhubroutetable_test.go new file mode 100644 index 00000000000..ea31b766b38 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_virtualhubroutetable_test.go @@ -0,0 +1,327 @@ +package virtualwans + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &VirtualHubRouteTableId{} + +func TestNewVirtualHubRouteTableID(t *testing.T) { + id := NewVirtualHubRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "routeTableValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VirtualHubName != "virtualHubValue" { + t.Fatalf("Expected %q but got %q for Segment 'VirtualHubName'", id.VirtualHubName, "virtualHubValue") + } + + if id.RouteTableName != "routeTableValue" { + t.Fatalf("Expected %q but got %q for Segment 'RouteTableName'", id.RouteTableName, "routeTableValue") + } +} + +func TestFormatVirtualHubRouteTableID(t *testing.T) { + actual := NewVirtualHubRouteTableID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualHubValue", "routeTableValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/routeTables/routeTableValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseVirtualHubRouteTableID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualHubRouteTableId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/routeTables", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/routeTables/routeTableValue", + Expected: &VirtualHubRouteTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualHubName: "virtualHubValue", + RouteTableName: "routeTableValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/routeTables/routeTableValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualHubRouteTableID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualHubName != v.Expected.VirtualHubName { + t.Fatalf("Expected %q but got %q for VirtualHubName", v.Expected.VirtualHubName, actual.VirtualHubName) + } + + if actual.RouteTableName != v.Expected.RouteTableName { + t.Fatalf("Expected %q but got %q for RouteTableName", v.Expected.RouteTableName, actual.RouteTableName) + } + + } +} + +func TestParseVirtualHubRouteTableIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualHubRouteTableId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs/vIrTuAlHuBvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/routeTables", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs/vIrTuAlHuBvAlUe/rOuTeTaBlEs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/routeTables/routeTableValue", + Expected: &VirtualHubRouteTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualHubName: "virtualHubValue", + RouteTableName: "routeTableValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualHubs/virtualHubValue/routeTables/routeTableValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs/vIrTuAlHuBvAlUe/rOuTeTaBlEs/rOuTeTaBlEvAlUe", + Expected: &VirtualHubRouteTableId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VirtualHubName: "vIrTuAlHuBvAlUe", + RouteTableName: "rOuTeTaBlEvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlHuBs/vIrTuAlHuBvAlUe/rOuTeTaBlEs/rOuTeTaBlEvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualHubRouteTableIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualHubName != v.Expected.VirtualHubName { + t.Fatalf("Expected %q but got %q for VirtualHubName", v.Expected.VirtualHubName, actual.VirtualHubName) + } + + if actual.RouteTableName != v.Expected.RouteTableName { + t.Fatalf("Expected %q but got %q for RouteTableName", v.Expected.RouteTableName, actual.RouteTableName) + } + + } +} + +func TestSegmentsForVirtualHubRouteTableId(t *testing.T) { + segments := VirtualHubRouteTableId{}.Segments() + if len(segments) == 0 { + t.Fatalf("VirtualHubRouteTableId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_virtualwan.go b/resource-manager/network/2024-01-01/virtualwans/id_virtualwan.go new file mode 100644 index 00000000000..e8489bfa13e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_virtualwan.go @@ -0,0 +1,130 @@ +package virtualwans + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&VirtualWANId{}) +} + +var _ resourceids.ResourceId = &VirtualWANId{} + +// VirtualWANId is a struct representing the Resource ID for a Virtual W A N +type VirtualWANId struct { + SubscriptionId string + ResourceGroupName string + VirtualWanName string +} + +// NewVirtualWANID returns a new VirtualWANId struct +func NewVirtualWANID(subscriptionId string, resourceGroupName string, virtualWanName string) VirtualWANId { + return VirtualWANId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VirtualWanName: virtualWanName, + } +} + +// ParseVirtualWANID parses 'input' into a VirtualWANId +func ParseVirtualWANID(input string) (*VirtualWANId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualWANId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualWANId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseVirtualWANIDInsensitively parses 'input' case-insensitively into a VirtualWANId +// note: this method should only be used for API response data and not user input +func ParseVirtualWANIDInsensitively(input string) (*VirtualWANId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualWANId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualWANId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *VirtualWANId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VirtualWanName, ok = input.Parsed["virtualWanName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "virtualWanName", input) + } + + return nil +} + +// ValidateVirtualWANID checks that 'input' can be parsed as a Virtual W A N ID +func ValidateVirtualWANID(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 := ParseVirtualWANID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Virtual W A N ID +func (id VirtualWANId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/virtualWans/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VirtualWanName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Virtual W A N ID +func (id VirtualWANId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVirtualWans", "virtualWans", "virtualWans"), + resourceids.UserSpecifiedSegment("virtualWanName", "virtualWanValue"), + } +} + +// String returns a human-readable description of this Virtual W A N ID +func (id VirtualWANId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Virtual Wan Name: %q", id.VirtualWanName), + } + return fmt.Sprintf("Virtual W A N (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_virtualwan_test.go b/resource-manager/network/2024-01-01/virtualwans/id_virtualwan_test.go new file mode 100644 index 00000000000..7a315c1c373 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_virtualwan_test.go @@ -0,0 +1,282 @@ +package virtualwans + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &VirtualWANId{} + +func TestNewVirtualWANID(t *testing.T) { + id := NewVirtualWANID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualWanValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VirtualWanName != "virtualWanValue" { + t.Fatalf("Expected %q but got %q for Segment 'VirtualWanName'", id.VirtualWanName, "virtualWanValue") + } +} + +func TestFormatVirtualWANID(t *testing.T) { + actual := NewVirtualWANID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualWanValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualWans/virtualWanValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseVirtualWANID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualWANId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualWans", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualWans/virtualWanValue", + Expected: &VirtualWANId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualWanName: "virtualWanValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualWans/virtualWanValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualWANID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualWanName != v.Expected.VirtualWanName { + t.Fatalf("Expected %q but got %q for VirtualWanName", v.Expected.VirtualWanName, actual.VirtualWanName) + } + + } +} + +func TestParseVirtualWANIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualWANId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualWans", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlWaNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualWans/virtualWanValue", + Expected: &VirtualWANId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualWanName: "virtualWanValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/virtualWans/virtualWanValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlWaNs/vIrTuAlWaNvAlUe", + Expected: &VirtualWANId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VirtualWanName: "vIrTuAlWaNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vIrTuAlWaNs/vIrTuAlWaNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualWANIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualWanName != v.Expected.VirtualWanName { + t.Fatalf("Expected %q but got %q for VirtualWanName", v.Expected.VirtualWanName, actual.VirtualWanName) + } + + } +} + +func TestSegmentsForVirtualWANId(t *testing.T) { + segments := VirtualWANId{}.Segments() + if len(segments) == 0 { + t.Fatalf("VirtualWANId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_vpngateway.go b/resource-manager/network/2024-01-01/virtualwans/id_vpngateway.go new file mode 100644 index 00000000000..6889f4d78bc --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_vpngateway.go @@ -0,0 +1,130 @@ +package virtualwans + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&VpnGatewayId{}) +} + +var _ resourceids.ResourceId = &VpnGatewayId{} + +// VpnGatewayId is a struct representing the Resource ID for a Vpn Gateway +type VpnGatewayId struct { + SubscriptionId string + ResourceGroupName string + VpnGatewayName string +} + +// NewVpnGatewayID returns a new VpnGatewayId struct +func NewVpnGatewayID(subscriptionId string, resourceGroupName string, vpnGatewayName string) VpnGatewayId { + return VpnGatewayId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VpnGatewayName: vpnGatewayName, + } +} + +// ParseVpnGatewayID parses 'input' into a VpnGatewayId +func ParseVpnGatewayID(input string) (*VpnGatewayId, error) { + parser := resourceids.NewParserFromResourceIdType(&VpnGatewayId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VpnGatewayId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseVpnGatewayIDInsensitively parses 'input' case-insensitively into a VpnGatewayId +// note: this method should only be used for API response data and not user input +func ParseVpnGatewayIDInsensitively(input string) (*VpnGatewayId, error) { + parser := resourceids.NewParserFromResourceIdType(&VpnGatewayId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VpnGatewayId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *VpnGatewayId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VpnGatewayName, ok = input.Parsed["vpnGatewayName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "vpnGatewayName", input) + } + + return nil +} + +// ValidateVpnGatewayID checks that 'input' can be parsed as a Vpn Gateway ID +func ValidateVpnGatewayID(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 := ParseVpnGatewayID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Vpn Gateway ID +func (id VpnGatewayId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/vpnGateways/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VpnGatewayName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Vpn Gateway ID +func (id VpnGatewayId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVpnGateways", "vpnGateways", "vpnGateways"), + resourceids.UserSpecifiedSegment("vpnGatewayName", "vpnGatewayValue"), + } +} + +// String returns a human-readable description of this Vpn Gateway ID +func (id VpnGatewayId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Vpn Gateway Name: %q", id.VpnGatewayName), + } + return fmt.Sprintf("Vpn Gateway (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_vpngateway_test.go b/resource-manager/network/2024-01-01/virtualwans/id_vpngateway_test.go new file mode 100644 index 00000000000..23428469e83 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_vpngateway_test.go @@ -0,0 +1,282 @@ +package virtualwans + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &VpnGatewayId{} + +func TestNewVpnGatewayID(t *testing.T) { + id := NewVpnGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VpnGatewayName != "vpnGatewayValue" { + t.Fatalf("Expected %q but got %q for Segment 'VpnGatewayName'", id.VpnGatewayName, "vpnGatewayValue") + } +} + +func TestFormatVpnGatewayID(t *testing.T) { + actual := NewVpnGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseVpnGatewayID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VpnGatewayId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue", + Expected: &VpnGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VpnGatewayName: "vpnGatewayValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVpnGatewayID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VpnGatewayName != v.Expected.VpnGatewayName { + t.Fatalf("Expected %q but got %q for VpnGatewayName", v.Expected.VpnGatewayName, actual.VpnGatewayName) + } + + } +} + +func TestParseVpnGatewayIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VpnGatewayId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue", + Expected: &VpnGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VpnGatewayName: "vpnGatewayValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs/vPnGaTeWaYvAlUe", + Expected: &VpnGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VpnGatewayName: "vPnGaTeWaYvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs/vPnGaTeWaYvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVpnGatewayIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VpnGatewayName != v.Expected.VpnGatewayName { + t.Fatalf("Expected %q but got %q for VpnGatewayName", v.Expected.VpnGatewayName, actual.VpnGatewayName) + } + + } +} + +func TestSegmentsForVpnGatewayId(t *testing.T) { + segments := VpnGatewayId{}.Segments() + if len(segments) == 0 { + t.Fatalf("VpnGatewayId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_vpnlinkconnection.go b/resource-manager/network/2024-01-01/virtualwans/id_vpnlinkconnection.go new file mode 100644 index 00000000000..b40c9d3b7be --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_vpnlinkconnection.go @@ -0,0 +1,148 @@ +package virtualwans + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&VpnLinkConnectionId{}) +} + +var _ resourceids.ResourceId = &VpnLinkConnectionId{} + +// VpnLinkConnectionId is a struct representing the Resource ID for a Vpn Link Connection +type VpnLinkConnectionId struct { + SubscriptionId string + ResourceGroupName string + VpnGatewayName string + VpnConnectionName string + VpnLinkConnectionName string +} + +// NewVpnLinkConnectionID returns a new VpnLinkConnectionId struct +func NewVpnLinkConnectionID(subscriptionId string, resourceGroupName string, vpnGatewayName string, vpnConnectionName string, vpnLinkConnectionName string) VpnLinkConnectionId { + return VpnLinkConnectionId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VpnGatewayName: vpnGatewayName, + VpnConnectionName: vpnConnectionName, + VpnLinkConnectionName: vpnLinkConnectionName, + } +} + +// ParseVpnLinkConnectionID parses 'input' into a VpnLinkConnectionId +func ParseVpnLinkConnectionID(input string) (*VpnLinkConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&VpnLinkConnectionId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VpnLinkConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseVpnLinkConnectionIDInsensitively parses 'input' case-insensitively into a VpnLinkConnectionId +// note: this method should only be used for API response data and not user input +func ParseVpnLinkConnectionIDInsensitively(input string) (*VpnLinkConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&VpnLinkConnectionId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VpnLinkConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *VpnLinkConnectionId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VpnGatewayName, ok = input.Parsed["vpnGatewayName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "vpnGatewayName", input) + } + + if id.VpnConnectionName, ok = input.Parsed["vpnConnectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "vpnConnectionName", input) + } + + if id.VpnLinkConnectionName, ok = input.Parsed["vpnLinkConnectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "vpnLinkConnectionName", input) + } + + return nil +} + +// ValidateVpnLinkConnectionID checks that 'input' can be parsed as a Vpn Link Connection ID +func ValidateVpnLinkConnectionID(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 := ParseVpnLinkConnectionID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Vpn Link Connection ID +func (id VpnLinkConnectionId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/vpnGateways/%s/vpnConnections/%s/vpnLinkConnections/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VpnGatewayName, id.VpnConnectionName, id.VpnLinkConnectionName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Vpn Link Connection ID +func (id VpnLinkConnectionId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVpnGateways", "vpnGateways", "vpnGateways"), + resourceids.UserSpecifiedSegment("vpnGatewayName", "vpnGatewayValue"), + resourceids.StaticSegment("staticVpnConnections", "vpnConnections", "vpnConnections"), + resourceids.UserSpecifiedSegment("vpnConnectionName", "vpnConnectionValue"), + resourceids.StaticSegment("staticVpnLinkConnections", "vpnLinkConnections", "vpnLinkConnections"), + resourceids.UserSpecifiedSegment("vpnLinkConnectionName", "vpnLinkConnectionValue"), + } +} + +// String returns a human-readable description of this Vpn Link Connection ID +func (id VpnLinkConnectionId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Vpn Gateway Name: %q", id.VpnGatewayName), + fmt.Sprintf("Vpn Connection Name: %q", id.VpnConnectionName), + fmt.Sprintf("Vpn Link Connection Name: %q", id.VpnLinkConnectionName), + } + return fmt.Sprintf("Vpn Link Connection (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_vpnlinkconnection_test.go b/resource-manager/network/2024-01-01/virtualwans/id_vpnlinkconnection_test.go new file mode 100644 index 00000000000..1f3cece41e0 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_vpnlinkconnection_test.go @@ -0,0 +1,372 @@ +package virtualwans + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &VpnLinkConnectionId{} + +func TestNewVpnLinkConnectionID(t *testing.T) { + id := NewVpnLinkConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue", "vpnConnectionValue", "vpnLinkConnectionValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VpnGatewayName != "vpnGatewayValue" { + t.Fatalf("Expected %q but got %q for Segment 'VpnGatewayName'", id.VpnGatewayName, "vpnGatewayValue") + } + + if id.VpnConnectionName != "vpnConnectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'VpnConnectionName'", id.VpnConnectionName, "vpnConnectionValue") + } + + if id.VpnLinkConnectionName != "vpnLinkConnectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'VpnLinkConnectionName'", id.VpnLinkConnectionName, "vpnLinkConnectionValue") + } +} + +func TestFormatVpnLinkConnectionID(t *testing.T) { + actual := NewVpnLinkConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue", "vpnConnectionValue", "vpnLinkConnectionValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/vpnConnections/vpnConnectionValue/vpnLinkConnections/vpnLinkConnectionValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseVpnLinkConnectionID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VpnLinkConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/vpnConnections", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/vpnConnections/vpnConnectionValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/vpnConnections/vpnConnectionValue/vpnLinkConnections", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/vpnConnections/vpnConnectionValue/vpnLinkConnections/vpnLinkConnectionValue", + Expected: &VpnLinkConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VpnGatewayName: "vpnGatewayValue", + VpnConnectionName: "vpnConnectionValue", + VpnLinkConnectionName: "vpnLinkConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/vpnConnections/vpnConnectionValue/vpnLinkConnections/vpnLinkConnectionValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVpnLinkConnectionID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VpnGatewayName != v.Expected.VpnGatewayName { + t.Fatalf("Expected %q but got %q for VpnGatewayName", v.Expected.VpnGatewayName, actual.VpnGatewayName) + } + + if actual.VpnConnectionName != v.Expected.VpnConnectionName { + t.Fatalf("Expected %q but got %q for VpnConnectionName", v.Expected.VpnConnectionName, actual.VpnConnectionName) + } + + if actual.VpnLinkConnectionName != v.Expected.VpnLinkConnectionName { + t.Fatalf("Expected %q but got %q for VpnLinkConnectionName", v.Expected.VpnLinkConnectionName, actual.VpnLinkConnectionName) + } + + } +} + +func TestParseVpnLinkConnectionIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VpnLinkConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs/vPnGaTeWaYvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/vpnConnections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs/vPnGaTeWaYvAlUe/vPnCoNnEcTiOnS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/vpnConnections/vpnConnectionValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs/vPnGaTeWaYvAlUe/vPnCoNnEcTiOnS/vPnCoNnEcTiOnVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/vpnConnections/vpnConnectionValue/vpnLinkConnections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs/vPnGaTeWaYvAlUe/vPnCoNnEcTiOnS/vPnCoNnEcTiOnVaLuE/vPnLiNkCoNnEcTiOnS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/vpnConnections/vpnConnectionValue/vpnLinkConnections/vpnLinkConnectionValue", + Expected: &VpnLinkConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VpnGatewayName: "vpnGatewayValue", + VpnConnectionName: "vpnConnectionValue", + VpnLinkConnectionName: "vpnLinkConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/vpnConnections/vpnConnectionValue/vpnLinkConnections/vpnLinkConnectionValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs/vPnGaTeWaYvAlUe/vPnCoNnEcTiOnS/vPnCoNnEcTiOnVaLuE/vPnLiNkCoNnEcTiOnS/vPnLiNkCoNnEcTiOnVaLuE", + Expected: &VpnLinkConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VpnGatewayName: "vPnGaTeWaYvAlUe", + VpnConnectionName: "vPnCoNnEcTiOnVaLuE", + VpnLinkConnectionName: "vPnLiNkCoNnEcTiOnVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs/vPnGaTeWaYvAlUe/vPnCoNnEcTiOnS/vPnCoNnEcTiOnVaLuE/vPnLiNkCoNnEcTiOnS/vPnLiNkCoNnEcTiOnVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVpnLinkConnectionIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VpnGatewayName != v.Expected.VpnGatewayName { + t.Fatalf("Expected %q but got %q for VpnGatewayName", v.Expected.VpnGatewayName, actual.VpnGatewayName) + } + + if actual.VpnConnectionName != v.Expected.VpnConnectionName { + t.Fatalf("Expected %q but got %q for VpnConnectionName", v.Expected.VpnConnectionName, actual.VpnConnectionName) + } + + if actual.VpnLinkConnectionName != v.Expected.VpnLinkConnectionName { + t.Fatalf("Expected %q but got %q for VpnLinkConnectionName", v.Expected.VpnLinkConnectionName, actual.VpnLinkConnectionName) + } + + } +} + +func TestSegmentsForVpnLinkConnectionId(t *testing.T) { + segments := VpnLinkConnectionId{}.Segments() + if len(segments) == 0 { + t.Fatalf("VpnLinkConnectionId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_vpnserverconfiguration.go b/resource-manager/network/2024-01-01/virtualwans/id_vpnserverconfiguration.go new file mode 100644 index 00000000000..604356fc28f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_vpnserverconfiguration.go @@ -0,0 +1,130 @@ +package virtualwans + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&VpnServerConfigurationId{}) +} + +var _ resourceids.ResourceId = &VpnServerConfigurationId{} + +// VpnServerConfigurationId is a struct representing the Resource ID for a Vpn Server Configuration +type VpnServerConfigurationId struct { + SubscriptionId string + ResourceGroupName string + VpnServerConfigurationName string +} + +// NewVpnServerConfigurationID returns a new VpnServerConfigurationId struct +func NewVpnServerConfigurationID(subscriptionId string, resourceGroupName string, vpnServerConfigurationName string) VpnServerConfigurationId { + return VpnServerConfigurationId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VpnServerConfigurationName: vpnServerConfigurationName, + } +} + +// ParseVpnServerConfigurationID parses 'input' into a VpnServerConfigurationId +func ParseVpnServerConfigurationID(input string) (*VpnServerConfigurationId, error) { + parser := resourceids.NewParserFromResourceIdType(&VpnServerConfigurationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VpnServerConfigurationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseVpnServerConfigurationIDInsensitively parses 'input' case-insensitively into a VpnServerConfigurationId +// note: this method should only be used for API response data and not user input +func ParseVpnServerConfigurationIDInsensitively(input string) (*VpnServerConfigurationId, error) { + parser := resourceids.NewParserFromResourceIdType(&VpnServerConfigurationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VpnServerConfigurationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *VpnServerConfigurationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VpnServerConfigurationName, ok = input.Parsed["vpnServerConfigurationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "vpnServerConfigurationName", input) + } + + return nil +} + +// ValidateVpnServerConfigurationID checks that 'input' can be parsed as a Vpn Server Configuration ID +func ValidateVpnServerConfigurationID(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 := ParseVpnServerConfigurationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Vpn Server Configuration ID +func (id VpnServerConfigurationId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/vpnServerConfigurations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VpnServerConfigurationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Vpn Server Configuration ID +func (id VpnServerConfigurationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVpnServerConfigurations", "vpnServerConfigurations", "vpnServerConfigurations"), + resourceids.UserSpecifiedSegment("vpnServerConfigurationName", "vpnServerConfigurationValue"), + } +} + +// String returns a human-readable description of this Vpn Server Configuration ID +func (id VpnServerConfigurationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Vpn Server Configuration Name: %q", id.VpnServerConfigurationName), + } + return fmt.Sprintf("Vpn Server Configuration (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_vpnserverconfiguration_test.go b/resource-manager/network/2024-01-01/virtualwans/id_vpnserverconfiguration_test.go new file mode 100644 index 00000000000..6ac256477b7 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_vpnserverconfiguration_test.go @@ -0,0 +1,282 @@ +package virtualwans + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &VpnServerConfigurationId{} + +func TestNewVpnServerConfigurationID(t *testing.T) { + id := NewVpnServerConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnServerConfigurationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VpnServerConfigurationName != "vpnServerConfigurationValue" { + t.Fatalf("Expected %q but got %q for Segment 'VpnServerConfigurationName'", id.VpnServerConfigurationName, "vpnServerConfigurationValue") + } +} + +func TestFormatVpnServerConfigurationID(t *testing.T) { + actual := NewVpnServerConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnServerConfigurationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations/vpnServerConfigurationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseVpnServerConfigurationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VpnServerConfigurationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations/vpnServerConfigurationValue", + Expected: &VpnServerConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VpnServerConfigurationName: "vpnServerConfigurationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations/vpnServerConfigurationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVpnServerConfigurationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VpnServerConfigurationName != v.Expected.VpnServerConfigurationName { + t.Fatalf("Expected %q but got %q for VpnServerConfigurationName", v.Expected.VpnServerConfigurationName, actual.VpnServerConfigurationName) + } + + } +} + +func TestParseVpnServerConfigurationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VpnServerConfigurationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnSeRvErCoNfIgUrAtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations/vpnServerConfigurationValue", + Expected: &VpnServerConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VpnServerConfigurationName: "vpnServerConfigurationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations/vpnServerConfigurationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnSeRvErCoNfIgUrAtIoNs/vPnSeRvErCoNfIgUrAtIoNvAlUe", + Expected: &VpnServerConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VpnServerConfigurationName: "vPnSeRvErCoNfIgUrAtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnSeRvErCoNfIgUrAtIoNs/vPnSeRvErCoNfIgUrAtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVpnServerConfigurationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VpnServerConfigurationName != v.Expected.VpnServerConfigurationName { + t.Fatalf("Expected %q but got %q for VpnServerConfigurationName", v.Expected.VpnServerConfigurationName, actual.VpnServerConfigurationName) + } + + } +} + +func TestSegmentsForVpnServerConfigurationId(t *testing.T) { + segments := VpnServerConfigurationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("VpnServerConfigurationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_vpnsite.go b/resource-manager/network/2024-01-01/virtualwans/id_vpnsite.go new file mode 100644 index 00000000000..4e20baefd21 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_vpnsite.go @@ -0,0 +1,130 @@ +package virtualwans + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&VpnSiteId{}) +} + +var _ resourceids.ResourceId = &VpnSiteId{} + +// VpnSiteId is a struct representing the Resource ID for a Vpn Site +type VpnSiteId struct { + SubscriptionId string + ResourceGroupName string + VpnSiteName string +} + +// NewVpnSiteID returns a new VpnSiteId struct +func NewVpnSiteID(subscriptionId string, resourceGroupName string, vpnSiteName string) VpnSiteId { + return VpnSiteId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VpnSiteName: vpnSiteName, + } +} + +// ParseVpnSiteID parses 'input' into a VpnSiteId +func ParseVpnSiteID(input string) (*VpnSiteId, error) { + parser := resourceids.NewParserFromResourceIdType(&VpnSiteId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VpnSiteId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseVpnSiteIDInsensitively parses 'input' case-insensitively into a VpnSiteId +// note: this method should only be used for API response data and not user input +func ParseVpnSiteIDInsensitively(input string) (*VpnSiteId, error) { + parser := resourceids.NewParserFromResourceIdType(&VpnSiteId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VpnSiteId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *VpnSiteId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VpnSiteName, ok = input.Parsed["vpnSiteName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "vpnSiteName", input) + } + + return nil +} + +// ValidateVpnSiteID checks that 'input' can be parsed as a Vpn Site ID +func ValidateVpnSiteID(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 := ParseVpnSiteID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Vpn Site ID +func (id VpnSiteId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/vpnSites/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VpnSiteName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Vpn Site ID +func (id VpnSiteId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVpnSites", "vpnSites", "vpnSites"), + resourceids.UserSpecifiedSegment("vpnSiteName", "vpnSiteValue"), + } +} + +// String returns a human-readable description of this Vpn Site ID +func (id VpnSiteId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Vpn Site Name: %q", id.VpnSiteName), + } + return fmt.Sprintf("Vpn Site (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_vpnsite_test.go b/resource-manager/network/2024-01-01/virtualwans/id_vpnsite_test.go new file mode 100644 index 00000000000..22ab26df887 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_vpnsite_test.go @@ -0,0 +1,282 @@ +package virtualwans + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &VpnSiteId{} + +func TestNewVpnSiteID(t *testing.T) { + id := NewVpnSiteID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnSiteValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VpnSiteName != "vpnSiteValue" { + t.Fatalf("Expected %q but got %q for Segment 'VpnSiteName'", id.VpnSiteName, "vpnSiteValue") + } +} + +func TestFormatVpnSiteID(t *testing.T) { + actual := NewVpnSiteID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnSiteValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites/vpnSiteValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseVpnSiteID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VpnSiteId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites/vpnSiteValue", + Expected: &VpnSiteId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VpnSiteName: "vpnSiteValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites/vpnSiteValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVpnSiteID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VpnSiteName != v.Expected.VpnSiteName { + t.Fatalf("Expected %q but got %q for VpnSiteName", v.Expected.VpnSiteName, actual.VpnSiteName) + } + + } +} + +func TestParseVpnSiteIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VpnSiteId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnSiTeS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites/vpnSiteValue", + Expected: &VpnSiteId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VpnSiteName: "vpnSiteValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites/vpnSiteValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnSiTeS/vPnSiTeVaLuE", + Expected: &VpnSiteId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VpnSiteName: "vPnSiTeVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnSiTeS/vPnSiTeVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVpnSiteIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VpnSiteName != v.Expected.VpnSiteName { + t.Fatalf("Expected %q but got %q for VpnSiteName", v.Expected.VpnSiteName, actual.VpnSiteName) + } + + } +} + +func TestSegmentsForVpnSiteId(t *testing.T) { + segments := VpnSiteId{}.Segments() + if len(segments) == 0 { + t.Fatalf("VpnSiteId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_vpnsitelink.go b/resource-manager/network/2024-01-01/virtualwans/id_vpnsitelink.go new file mode 100644 index 00000000000..a0b1676b210 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_vpnsitelink.go @@ -0,0 +1,139 @@ +package virtualwans + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&VpnSiteLinkId{}) +} + +var _ resourceids.ResourceId = &VpnSiteLinkId{} + +// VpnSiteLinkId is a struct representing the Resource ID for a Vpn Site Link +type VpnSiteLinkId struct { + SubscriptionId string + ResourceGroupName string + VpnSiteName string + VpnSiteLinkName string +} + +// NewVpnSiteLinkID returns a new VpnSiteLinkId struct +func NewVpnSiteLinkID(subscriptionId string, resourceGroupName string, vpnSiteName string, vpnSiteLinkName string) VpnSiteLinkId { + return VpnSiteLinkId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VpnSiteName: vpnSiteName, + VpnSiteLinkName: vpnSiteLinkName, + } +} + +// ParseVpnSiteLinkID parses 'input' into a VpnSiteLinkId +func ParseVpnSiteLinkID(input string) (*VpnSiteLinkId, error) { + parser := resourceids.NewParserFromResourceIdType(&VpnSiteLinkId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VpnSiteLinkId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseVpnSiteLinkIDInsensitively parses 'input' case-insensitively into a VpnSiteLinkId +// note: this method should only be used for API response data and not user input +func ParseVpnSiteLinkIDInsensitively(input string) (*VpnSiteLinkId, error) { + parser := resourceids.NewParserFromResourceIdType(&VpnSiteLinkId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VpnSiteLinkId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *VpnSiteLinkId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VpnSiteName, ok = input.Parsed["vpnSiteName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "vpnSiteName", input) + } + + if id.VpnSiteLinkName, ok = input.Parsed["vpnSiteLinkName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "vpnSiteLinkName", input) + } + + return nil +} + +// ValidateVpnSiteLinkID checks that 'input' can be parsed as a Vpn Site Link ID +func ValidateVpnSiteLinkID(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 := ParseVpnSiteLinkID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Vpn Site Link ID +func (id VpnSiteLinkId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/vpnSites/%s/vpnSiteLinks/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VpnSiteName, id.VpnSiteLinkName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Vpn Site Link ID +func (id VpnSiteLinkId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVpnSites", "vpnSites", "vpnSites"), + resourceids.UserSpecifiedSegment("vpnSiteName", "vpnSiteValue"), + resourceids.StaticSegment("staticVpnSiteLinks", "vpnSiteLinks", "vpnSiteLinks"), + resourceids.UserSpecifiedSegment("vpnSiteLinkName", "vpnSiteLinkValue"), + } +} + +// String returns a human-readable description of this Vpn Site Link ID +func (id VpnSiteLinkId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Vpn Site Name: %q", id.VpnSiteName), + fmt.Sprintf("Vpn Site Link Name: %q", id.VpnSiteLinkName), + } + return fmt.Sprintf("Vpn Site Link (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/virtualwans/id_vpnsitelink_test.go b/resource-manager/network/2024-01-01/virtualwans/id_vpnsitelink_test.go new file mode 100644 index 00000000000..c774c31735b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/id_vpnsitelink_test.go @@ -0,0 +1,327 @@ +package virtualwans + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &VpnSiteLinkId{} + +func TestNewVpnSiteLinkID(t *testing.T) { + id := NewVpnSiteLinkID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnSiteValue", "vpnSiteLinkValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VpnSiteName != "vpnSiteValue" { + t.Fatalf("Expected %q but got %q for Segment 'VpnSiteName'", id.VpnSiteName, "vpnSiteValue") + } + + if id.VpnSiteLinkName != "vpnSiteLinkValue" { + t.Fatalf("Expected %q but got %q for Segment 'VpnSiteLinkName'", id.VpnSiteLinkName, "vpnSiteLinkValue") + } +} + +func TestFormatVpnSiteLinkID(t *testing.T) { + actual := NewVpnSiteLinkID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnSiteValue", "vpnSiteLinkValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites/vpnSiteValue/vpnSiteLinks/vpnSiteLinkValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseVpnSiteLinkID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VpnSiteLinkId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites/vpnSiteValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites/vpnSiteValue/vpnSiteLinks", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites/vpnSiteValue/vpnSiteLinks/vpnSiteLinkValue", + Expected: &VpnSiteLinkId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VpnSiteName: "vpnSiteValue", + VpnSiteLinkName: "vpnSiteLinkValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites/vpnSiteValue/vpnSiteLinks/vpnSiteLinkValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVpnSiteLinkID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VpnSiteName != v.Expected.VpnSiteName { + t.Fatalf("Expected %q but got %q for VpnSiteName", v.Expected.VpnSiteName, actual.VpnSiteName) + } + + if actual.VpnSiteLinkName != v.Expected.VpnSiteLinkName { + t.Fatalf("Expected %q but got %q for VpnSiteLinkName", v.Expected.VpnSiteLinkName, actual.VpnSiteLinkName) + } + + } +} + +func TestParseVpnSiteLinkIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VpnSiteLinkId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnSiTeS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites/vpnSiteValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnSiTeS/vPnSiTeVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites/vpnSiteValue/vpnSiteLinks", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnSiTeS/vPnSiTeVaLuE/vPnSiTeLiNkS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites/vpnSiteValue/vpnSiteLinks/vpnSiteLinkValue", + Expected: &VpnSiteLinkId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VpnSiteName: "vpnSiteValue", + VpnSiteLinkName: "vpnSiteLinkValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites/vpnSiteValue/vpnSiteLinks/vpnSiteLinkValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnSiTeS/vPnSiTeVaLuE/vPnSiTeLiNkS/vPnSiTeLiNkVaLuE", + Expected: &VpnSiteLinkId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VpnSiteName: "vPnSiTeVaLuE", + VpnSiteLinkName: "vPnSiTeLiNkVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnSiTeS/vPnSiTeVaLuE/vPnSiTeLiNkS/vPnSiTeLiNkVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVpnSiteLinkIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VpnSiteName != v.Expected.VpnSiteName { + t.Fatalf("Expected %q but got %q for VpnSiteName", v.Expected.VpnSiteName, actual.VpnSiteName) + } + + if actual.VpnSiteLinkName != v.Expected.VpnSiteLinkName { + t.Fatalf("Expected %q but got %q for VpnSiteLinkName", v.Expected.VpnSiteLinkName, actual.VpnSiteLinkName) + } + + } +} + +func TestSegmentsForVpnSiteLinkId(t *testing.T) { + segments := VpnSiteLinkId{}.Segments() + if len(segments) == 0 { + t.Fatalf("VpnSiteLinkId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_configurationpolicygroupscreateorupdate.go b/resource-manager/network/2024-01-01/virtualwans/method_configurationpolicygroupscreateorupdate.go new file mode 100644 index 00000000000..391d34a222a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_configurationpolicygroupscreateorupdate.go @@ -0,0 +1,75 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConfigurationPolicyGroupsCreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VpnServerConfigurationPolicyGroup +} + +// ConfigurationPolicyGroupsCreateOrUpdate ... +func (c VirtualWANsClient) ConfigurationPolicyGroupsCreateOrUpdate(ctx context.Context, id ConfigurationPolicyGroupId, input VpnServerConfigurationPolicyGroup) (result ConfigurationPolicyGroupsCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// ConfigurationPolicyGroupsCreateOrUpdateThenPoll performs ConfigurationPolicyGroupsCreateOrUpdate then polls until it's completed +func (c VirtualWANsClient) ConfigurationPolicyGroupsCreateOrUpdateThenPoll(ctx context.Context, id ConfigurationPolicyGroupId, input VpnServerConfigurationPolicyGroup) error { + result, err := c.ConfigurationPolicyGroupsCreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing ConfigurationPolicyGroupsCreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after ConfigurationPolicyGroupsCreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_configurationpolicygroupsdelete.go b/resource-manager/network/2024-01-01/virtualwans/method_configurationpolicygroupsdelete.go new file mode 100644 index 00000000000..faabc47e666 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_configurationpolicygroupsdelete.go @@ -0,0 +1,71 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConfigurationPolicyGroupsDeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// ConfigurationPolicyGroupsDelete ... +func (c VirtualWANsClient) ConfigurationPolicyGroupsDelete(ctx context.Context, id ConfigurationPolicyGroupId) (result ConfigurationPolicyGroupsDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// ConfigurationPolicyGroupsDeleteThenPoll performs ConfigurationPolicyGroupsDelete then polls until it's completed +func (c VirtualWANsClient) ConfigurationPolicyGroupsDeleteThenPoll(ctx context.Context, id ConfigurationPolicyGroupId) error { + result, err := c.ConfigurationPolicyGroupsDelete(ctx, id) + if err != nil { + return fmt.Errorf("performing ConfigurationPolicyGroupsDelete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after ConfigurationPolicyGroupsDelete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_configurationpolicygroupsget.go b/resource-manager/network/2024-01-01/virtualwans/method_configurationpolicygroupsget.go new file mode 100644 index 00000000000..491fc15d5b2 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_configurationpolicygroupsget.go @@ -0,0 +1,54 @@ +package virtualwans + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConfigurationPolicyGroupsGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VpnServerConfigurationPolicyGroup +} + +// ConfigurationPolicyGroupsGet ... +func (c VirtualWANsClient) ConfigurationPolicyGroupsGet(ctx context.Context, id ConfigurationPolicyGroupId) (result ConfigurationPolicyGroupsGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VpnServerConfigurationPolicyGroup + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_configurationpolicygroupslistbyvpnserverconfiguration.go b/resource-manager/network/2024-01-01/virtualwans/method_configurationpolicygroupslistbyvpnserverconfiguration.go new file mode 100644 index 00000000000..4d60c8f1419 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_configurationpolicygroupslistbyvpnserverconfiguration.go @@ -0,0 +1,92 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ConfigurationPolicyGroupsListByVpnServerConfigurationOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VpnServerConfigurationPolicyGroup +} + +type ConfigurationPolicyGroupsListByVpnServerConfigurationCompleteResult struct { + LatestHttpResponse *http.Response + Items []VpnServerConfigurationPolicyGroup +} + +// ConfigurationPolicyGroupsListByVpnServerConfiguration ... +func (c VirtualWANsClient) ConfigurationPolicyGroupsListByVpnServerConfiguration(ctx context.Context, id VpnServerConfigurationId) (result ConfigurationPolicyGroupsListByVpnServerConfigurationOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/configurationPolicyGroups", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VpnServerConfigurationPolicyGroup `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ConfigurationPolicyGroupsListByVpnServerConfigurationComplete retrieves all the results into a single object +func (c VirtualWANsClient) ConfigurationPolicyGroupsListByVpnServerConfigurationComplete(ctx context.Context, id VpnServerConfigurationId) (ConfigurationPolicyGroupsListByVpnServerConfigurationCompleteResult, error) { + return c.ConfigurationPolicyGroupsListByVpnServerConfigurationCompleteMatchingPredicate(ctx, id, VpnServerConfigurationPolicyGroupOperationPredicate{}) +} + +// ConfigurationPolicyGroupsListByVpnServerConfigurationCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) ConfigurationPolicyGroupsListByVpnServerConfigurationCompleteMatchingPredicate(ctx context.Context, id VpnServerConfigurationId, predicate VpnServerConfigurationPolicyGroupOperationPredicate) (result ConfigurationPolicyGroupsListByVpnServerConfigurationCompleteResult, err error) { + items := make([]VpnServerConfigurationPolicyGroup, 0) + + resp, err := c.ConfigurationPolicyGroupsListByVpnServerConfiguration(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ConfigurationPolicyGroupsListByVpnServerConfigurationCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_generatevirtualwanvpnserverconfigurationvpnprofile.go b/resource-manager/network/2024-01-01/virtualwans/method_generatevirtualwanvpnserverconfigurationvpnprofile.go new file mode 100644 index 00000000000..aed56fdab18 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_generatevirtualwanvpnserverconfigurationvpnprofile.go @@ -0,0 +1,75 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GeneratevirtualwanvpnserverconfigurationvpnprofileOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VpnProfileResponse +} + +// Generatevirtualwanvpnserverconfigurationvpnprofile ... +func (c VirtualWANsClient) Generatevirtualwanvpnserverconfigurationvpnprofile(ctx context.Context, id VirtualWANId, input VirtualWanVpnProfileParameters) (result GeneratevirtualwanvpnserverconfigurationvpnprofileOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/generateVpnProfile", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// GeneratevirtualwanvpnserverconfigurationvpnprofileThenPoll performs Generatevirtualwanvpnserverconfigurationvpnprofile then polls until it's completed +func (c VirtualWANsClient) GeneratevirtualwanvpnserverconfigurationvpnprofileThenPoll(ctx context.Context, id VirtualWANId, input VirtualWanVpnProfileParameters) error { + result, err := c.Generatevirtualwanvpnserverconfigurationvpnprofile(ctx, id, input) + if err != nil { + return fmt.Errorf("performing Generatevirtualwanvpnserverconfigurationvpnprofile: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Generatevirtualwanvpnserverconfigurationvpnprofile: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_hubroutetablescreateorupdate.go b/resource-manager/network/2024-01-01/virtualwans/method_hubroutetablescreateorupdate.go new file mode 100644 index 00000000000..58545e66cc2 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_hubroutetablescreateorupdate.go @@ -0,0 +1,75 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HubRouteTablesCreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *HubRouteTable +} + +// HubRouteTablesCreateOrUpdate ... +func (c VirtualWANsClient) HubRouteTablesCreateOrUpdate(ctx context.Context, id HubRouteTableId, input HubRouteTable) (result HubRouteTablesCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// HubRouteTablesCreateOrUpdateThenPoll performs HubRouteTablesCreateOrUpdate then polls until it's completed +func (c VirtualWANsClient) HubRouteTablesCreateOrUpdateThenPoll(ctx context.Context, id HubRouteTableId, input HubRouteTable) error { + result, err := c.HubRouteTablesCreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing HubRouteTablesCreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after HubRouteTablesCreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_hubroutetablesdelete.go b/resource-manager/network/2024-01-01/virtualwans/method_hubroutetablesdelete.go new file mode 100644 index 00000000000..e51f251c714 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_hubroutetablesdelete.go @@ -0,0 +1,71 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HubRouteTablesDeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// HubRouteTablesDelete ... +func (c VirtualWANsClient) HubRouteTablesDelete(ctx context.Context, id HubRouteTableId) (result HubRouteTablesDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// HubRouteTablesDeleteThenPoll performs HubRouteTablesDelete then polls until it's completed +func (c VirtualWANsClient) HubRouteTablesDeleteThenPoll(ctx context.Context, id HubRouteTableId) error { + result, err := c.HubRouteTablesDelete(ctx, id) + if err != nil { + return fmt.Errorf("performing HubRouteTablesDelete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after HubRouteTablesDelete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_hubroutetablesget.go b/resource-manager/network/2024-01-01/virtualwans/method_hubroutetablesget.go new file mode 100644 index 00000000000..36dc9467d46 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_hubroutetablesget.go @@ -0,0 +1,54 @@ +package virtualwans + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HubRouteTablesGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *HubRouteTable +} + +// HubRouteTablesGet ... +func (c VirtualWANsClient) HubRouteTablesGet(ctx context.Context, id HubRouteTableId) (result HubRouteTablesGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model HubRouteTable + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_hubroutetableslist.go b/resource-manager/network/2024-01-01/virtualwans/method_hubroutetableslist.go new file mode 100644 index 00000000000..e95318b1194 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_hubroutetableslist.go @@ -0,0 +1,92 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HubRouteTablesListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]HubRouteTable +} + +type HubRouteTablesListCompleteResult struct { + LatestHttpResponse *http.Response + Items []HubRouteTable +} + +// HubRouteTablesList ... +func (c VirtualWANsClient) HubRouteTablesList(ctx context.Context, id VirtualHubId) (result HubRouteTablesListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/hubRouteTables", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]HubRouteTable `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// HubRouteTablesListComplete retrieves all the results into a single object +func (c VirtualWANsClient) HubRouteTablesListComplete(ctx context.Context, id VirtualHubId) (HubRouteTablesListCompleteResult, error) { + return c.HubRouteTablesListCompleteMatchingPredicate(ctx, id, HubRouteTableOperationPredicate{}) +} + +// HubRouteTablesListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) HubRouteTablesListCompleteMatchingPredicate(ctx context.Context, id VirtualHubId, predicate HubRouteTableOperationPredicate) (result HubRouteTablesListCompleteResult, err error) { + items := make([]HubRouteTable, 0) + + resp, err := c.HubRouteTablesList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = HubRouteTablesListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_hubvirtualnetworkconnectionscreateorupdate.go b/resource-manager/network/2024-01-01/virtualwans/method_hubvirtualnetworkconnectionscreateorupdate.go new file mode 100644 index 00000000000..4353d1898c9 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_hubvirtualnetworkconnectionscreateorupdate.go @@ -0,0 +1,75 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HubVirtualNetworkConnectionsCreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *HubVirtualNetworkConnection +} + +// HubVirtualNetworkConnectionsCreateOrUpdate ... +func (c VirtualWANsClient) HubVirtualNetworkConnectionsCreateOrUpdate(ctx context.Context, id HubVirtualNetworkConnectionId, input HubVirtualNetworkConnection) (result HubVirtualNetworkConnectionsCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// HubVirtualNetworkConnectionsCreateOrUpdateThenPoll performs HubVirtualNetworkConnectionsCreateOrUpdate then polls until it's completed +func (c VirtualWANsClient) HubVirtualNetworkConnectionsCreateOrUpdateThenPoll(ctx context.Context, id HubVirtualNetworkConnectionId, input HubVirtualNetworkConnection) error { + result, err := c.HubVirtualNetworkConnectionsCreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing HubVirtualNetworkConnectionsCreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after HubVirtualNetworkConnectionsCreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_hubvirtualnetworkconnectionsdelete.go b/resource-manager/network/2024-01-01/virtualwans/method_hubvirtualnetworkconnectionsdelete.go new file mode 100644 index 00000000000..d26ec8f61b8 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_hubvirtualnetworkconnectionsdelete.go @@ -0,0 +1,71 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HubVirtualNetworkConnectionsDeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// HubVirtualNetworkConnectionsDelete ... +func (c VirtualWANsClient) HubVirtualNetworkConnectionsDelete(ctx context.Context, id HubVirtualNetworkConnectionId) (result HubVirtualNetworkConnectionsDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// HubVirtualNetworkConnectionsDeleteThenPoll performs HubVirtualNetworkConnectionsDelete then polls until it's completed +func (c VirtualWANsClient) HubVirtualNetworkConnectionsDeleteThenPoll(ctx context.Context, id HubVirtualNetworkConnectionId) error { + result, err := c.HubVirtualNetworkConnectionsDelete(ctx, id) + if err != nil { + return fmt.Errorf("performing HubVirtualNetworkConnectionsDelete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after HubVirtualNetworkConnectionsDelete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_hubvirtualnetworkconnectionsget.go b/resource-manager/network/2024-01-01/virtualwans/method_hubvirtualnetworkconnectionsget.go new file mode 100644 index 00000000000..852857adc59 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_hubvirtualnetworkconnectionsget.go @@ -0,0 +1,54 @@ +package virtualwans + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HubVirtualNetworkConnectionsGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *HubVirtualNetworkConnection +} + +// HubVirtualNetworkConnectionsGet ... +func (c VirtualWANsClient) HubVirtualNetworkConnectionsGet(ctx context.Context, id HubVirtualNetworkConnectionId) (result HubVirtualNetworkConnectionsGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model HubVirtualNetworkConnection + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_hubvirtualnetworkconnectionslist.go b/resource-manager/network/2024-01-01/virtualwans/method_hubvirtualnetworkconnectionslist.go new file mode 100644 index 00000000000..baf9dedf27b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_hubvirtualnetworkconnectionslist.go @@ -0,0 +1,92 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HubVirtualNetworkConnectionsListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]HubVirtualNetworkConnection +} + +type HubVirtualNetworkConnectionsListCompleteResult struct { + LatestHttpResponse *http.Response + Items []HubVirtualNetworkConnection +} + +// HubVirtualNetworkConnectionsList ... +func (c VirtualWANsClient) HubVirtualNetworkConnectionsList(ctx context.Context, id VirtualHubId) (result HubVirtualNetworkConnectionsListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/hubVirtualNetworkConnections", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]HubVirtualNetworkConnection `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// HubVirtualNetworkConnectionsListComplete retrieves all the results into a single object +func (c VirtualWANsClient) HubVirtualNetworkConnectionsListComplete(ctx context.Context, id VirtualHubId) (HubVirtualNetworkConnectionsListCompleteResult, error) { + return c.HubVirtualNetworkConnectionsListCompleteMatchingPredicate(ctx, id, HubVirtualNetworkConnectionOperationPredicate{}) +} + +// HubVirtualNetworkConnectionsListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) HubVirtualNetworkConnectionsListCompleteMatchingPredicate(ctx context.Context, id VirtualHubId, predicate HubVirtualNetworkConnectionOperationPredicate) (result HubVirtualNetworkConnectionsListCompleteResult, err error) { + items := make([]HubVirtualNetworkConnection, 0) + + resp, err := c.HubVirtualNetworkConnectionsList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = HubVirtualNetworkConnectionsListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_natrulescreateorupdate.go b/resource-manager/network/2024-01-01/virtualwans/method_natrulescreateorupdate.go new file mode 100644 index 00000000000..168ea42291c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_natrulescreateorupdate.go @@ -0,0 +1,75 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulesCreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VpnGatewayNatRule +} + +// NatRulesCreateOrUpdate ... +func (c VirtualWANsClient) NatRulesCreateOrUpdate(ctx context.Context, id NatRuleId, input VpnGatewayNatRule) (result NatRulesCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// NatRulesCreateOrUpdateThenPoll performs NatRulesCreateOrUpdate then polls until it's completed +func (c VirtualWANsClient) NatRulesCreateOrUpdateThenPoll(ctx context.Context, id NatRuleId, input VpnGatewayNatRule) error { + result, err := c.NatRulesCreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing NatRulesCreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after NatRulesCreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_natrulesdelete.go b/resource-manager/network/2024-01-01/virtualwans/method_natrulesdelete.go new file mode 100644 index 00000000000..6908f8fa7a2 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_natrulesdelete.go @@ -0,0 +1,71 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulesDeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// NatRulesDelete ... +func (c VirtualWANsClient) NatRulesDelete(ctx context.Context, id NatRuleId) (result NatRulesDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// NatRulesDeleteThenPoll performs NatRulesDelete then polls until it's completed +func (c VirtualWANsClient) NatRulesDeleteThenPoll(ctx context.Context, id NatRuleId) error { + result, err := c.NatRulesDelete(ctx, id) + if err != nil { + return fmt.Errorf("performing NatRulesDelete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after NatRulesDelete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_natrulesget.go b/resource-manager/network/2024-01-01/virtualwans/method_natrulesget.go new file mode 100644 index 00000000000..9ba7ca45bea --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_natrulesget.go @@ -0,0 +1,54 @@ +package virtualwans + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulesGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VpnGatewayNatRule +} + +// NatRulesGet ... +func (c VirtualWANsClient) NatRulesGet(ctx context.Context, id NatRuleId) (result NatRulesGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VpnGatewayNatRule + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_natruleslistbyvpngateway.go b/resource-manager/network/2024-01-01/virtualwans/method_natruleslistbyvpngateway.go new file mode 100644 index 00000000000..7c30bd1de6f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_natruleslistbyvpngateway.go @@ -0,0 +1,92 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulesListByVpnGatewayOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VpnGatewayNatRule +} + +type NatRulesListByVpnGatewayCompleteResult struct { + LatestHttpResponse *http.Response + Items []VpnGatewayNatRule +} + +// NatRulesListByVpnGateway ... +func (c VirtualWANsClient) NatRulesListByVpnGateway(ctx context.Context, id VpnGatewayId) (result NatRulesListByVpnGatewayOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/natRules", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VpnGatewayNatRule `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// NatRulesListByVpnGatewayComplete retrieves all the results into a single object +func (c VirtualWANsClient) NatRulesListByVpnGatewayComplete(ctx context.Context, id VpnGatewayId) (NatRulesListByVpnGatewayCompleteResult, error) { + return c.NatRulesListByVpnGatewayCompleteMatchingPredicate(ctx, id, VpnGatewayNatRuleOperationPredicate{}) +} + +// NatRulesListByVpnGatewayCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) NatRulesListByVpnGatewayCompleteMatchingPredicate(ctx context.Context, id VpnGatewayId, predicate VpnGatewayNatRuleOperationPredicate) (result NatRulesListByVpnGatewayCompleteResult, err error) { + items := make([]VpnGatewayNatRule, 0) + + resp, err := c.NatRulesListByVpnGateway(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = NatRulesListByVpnGatewayCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_networkvirtualapplianceconnectionscreateorupdate.go b/resource-manager/network/2024-01-01/virtualwans/method_networkvirtualapplianceconnectionscreateorupdate.go new file mode 100644 index 00000000000..1bcdfbdee15 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_networkvirtualapplianceconnectionscreateorupdate.go @@ -0,0 +1,75 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkVirtualApplianceConnectionsCreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *NetworkVirtualApplianceConnection +} + +// NetworkVirtualApplianceConnectionsCreateOrUpdate ... +func (c VirtualWANsClient) NetworkVirtualApplianceConnectionsCreateOrUpdate(ctx context.Context, id NetworkVirtualApplianceConnectionId, input NetworkVirtualApplianceConnection) (result NetworkVirtualApplianceConnectionsCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// NetworkVirtualApplianceConnectionsCreateOrUpdateThenPoll performs NetworkVirtualApplianceConnectionsCreateOrUpdate then polls until it's completed +func (c VirtualWANsClient) NetworkVirtualApplianceConnectionsCreateOrUpdateThenPoll(ctx context.Context, id NetworkVirtualApplianceConnectionId, input NetworkVirtualApplianceConnection) error { + result, err := c.NetworkVirtualApplianceConnectionsCreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing NetworkVirtualApplianceConnectionsCreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after NetworkVirtualApplianceConnectionsCreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_networkvirtualapplianceconnectionsdelete.go b/resource-manager/network/2024-01-01/virtualwans/method_networkvirtualapplianceconnectionsdelete.go new file mode 100644 index 00000000000..38492cbbb11 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_networkvirtualapplianceconnectionsdelete.go @@ -0,0 +1,71 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkVirtualApplianceConnectionsDeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// NetworkVirtualApplianceConnectionsDelete ... +func (c VirtualWANsClient) NetworkVirtualApplianceConnectionsDelete(ctx context.Context, id NetworkVirtualApplianceConnectionId) (result NetworkVirtualApplianceConnectionsDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// NetworkVirtualApplianceConnectionsDeleteThenPoll performs NetworkVirtualApplianceConnectionsDelete then polls until it's completed +func (c VirtualWANsClient) NetworkVirtualApplianceConnectionsDeleteThenPoll(ctx context.Context, id NetworkVirtualApplianceConnectionId) error { + result, err := c.NetworkVirtualApplianceConnectionsDelete(ctx, id) + if err != nil { + return fmt.Errorf("performing NetworkVirtualApplianceConnectionsDelete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after NetworkVirtualApplianceConnectionsDelete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_networkvirtualapplianceconnectionsget.go b/resource-manager/network/2024-01-01/virtualwans/method_networkvirtualapplianceconnectionsget.go new file mode 100644 index 00000000000..ed429bdb536 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_networkvirtualapplianceconnectionsget.go @@ -0,0 +1,54 @@ +package virtualwans + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkVirtualApplianceConnectionsGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *NetworkVirtualApplianceConnection +} + +// NetworkVirtualApplianceConnectionsGet ... +func (c VirtualWANsClient) NetworkVirtualApplianceConnectionsGet(ctx context.Context, id NetworkVirtualApplianceConnectionId) (result NetworkVirtualApplianceConnectionsGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model NetworkVirtualApplianceConnection + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_networkvirtualapplianceconnectionslist.go b/resource-manager/network/2024-01-01/virtualwans/method_networkvirtualapplianceconnectionslist.go new file mode 100644 index 00000000000..e3ef913c529 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_networkvirtualapplianceconnectionslist.go @@ -0,0 +1,92 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkVirtualApplianceConnectionsListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]NetworkVirtualApplianceConnection +} + +type NetworkVirtualApplianceConnectionsListCompleteResult struct { + LatestHttpResponse *http.Response + Items []NetworkVirtualApplianceConnection +} + +// NetworkVirtualApplianceConnectionsList ... +func (c VirtualWANsClient) NetworkVirtualApplianceConnectionsList(ctx context.Context, id NetworkVirtualApplianceId) (result NetworkVirtualApplianceConnectionsListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/networkVirtualApplianceConnections", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]NetworkVirtualApplianceConnection `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// NetworkVirtualApplianceConnectionsListComplete retrieves all the results into a single object +func (c VirtualWANsClient) NetworkVirtualApplianceConnectionsListComplete(ctx context.Context, id NetworkVirtualApplianceId) (NetworkVirtualApplianceConnectionsListCompleteResult, error) { + return c.NetworkVirtualApplianceConnectionsListCompleteMatchingPredicate(ctx, id, NetworkVirtualApplianceConnectionOperationPredicate{}) +} + +// NetworkVirtualApplianceConnectionsListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) NetworkVirtualApplianceConnectionsListCompleteMatchingPredicate(ctx context.Context, id NetworkVirtualApplianceId, predicate NetworkVirtualApplianceConnectionOperationPredicate) (result NetworkVirtualApplianceConnectionsListCompleteResult, err error) { + items := make([]NetworkVirtualApplianceConnection, 0) + + resp, err := c.NetworkVirtualApplianceConnectionsList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = NetworkVirtualApplianceConnectionsListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_p2svpngatewayscreateorupdate.go b/resource-manager/network/2024-01-01/virtualwans/method_p2svpngatewayscreateorupdate.go new file mode 100644 index 00000000000..664698b3088 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_p2svpngatewayscreateorupdate.go @@ -0,0 +1,76 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type P2sVpnGatewaysCreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *P2SVpnGateway +} + +// P2sVpnGatewaysCreateOrUpdate ... +func (c VirtualWANsClient) P2sVpnGatewaysCreateOrUpdate(ctx context.Context, id commonids.VirtualWANP2SVPNGatewayId, input P2SVpnGateway) (result P2sVpnGatewaysCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// P2sVpnGatewaysCreateOrUpdateThenPoll performs P2sVpnGatewaysCreateOrUpdate then polls until it's completed +func (c VirtualWANsClient) P2sVpnGatewaysCreateOrUpdateThenPoll(ctx context.Context, id commonids.VirtualWANP2SVPNGatewayId, input P2SVpnGateway) error { + result, err := c.P2sVpnGatewaysCreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing P2sVpnGatewaysCreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after P2sVpnGatewaysCreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_p2svpngatewaysdelete.go b/resource-manager/network/2024-01-01/virtualwans/method_p2svpngatewaysdelete.go new file mode 100644 index 00000000000..23ae30eaecd --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_p2svpngatewaysdelete.go @@ -0,0 +1,72 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type P2sVpnGatewaysDeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// P2sVpnGatewaysDelete ... +func (c VirtualWANsClient) P2sVpnGatewaysDelete(ctx context.Context, id commonids.VirtualWANP2SVPNGatewayId) (result P2sVpnGatewaysDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// P2sVpnGatewaysDeleteThenPoll performs P2sVpnGatewaysDelete then polls until it's completed +func (c VirtualWANsClient) P2sVpnGatewaysDeleteThenPoll(ctx context.Context, id commonids.VirtualWANP2SVPNGatewayId) error { + result, err := c.P2sVpnGatewaysDelete(ctx, id) + if err != nil { + return fmt.Errorf("performing P2sVpnGatewaysDelete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after P2sVpnGatewaysDelete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_p2svpngatewaysget.go b/resource-manager/network/2024-01-01/virtualwans/method_p2svpngatewaysget.go new file mode 100644 index 00000000000..804013badcc --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_p2svpngatewaysget.go @@ -0,0 +1,55 @@ +package virtualwans + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type P2sVpnGatewaysGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *P2SVpnGateway +} + +// P2sVpnGatewaysGet ... +func (c VirtualWANsClient) P2sVpnGatewaysGet(ctx context.Context, id commonids.VirtualWANP2SVPNGatewayId) (result P2sVpnGatewaysGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model P2SVpnGateway + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_p2svpngatewayslist.go b/resource-manager/network/2024-01-01/virtualwans/method_p2svpngatewayslist.go new file mode 100644 index 00000000000..fff4e439357 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_p2svpngatewayslist.go @@ -0,0 +1,93 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type P2sVpnGatewaysListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]P2SVpnGateway +} + +type P2sVpnGatewaysListCompleteResult struct { + LatestHttpResponse *http.Response + Items []P2SVpnGateway +} + +// P2sVpnGatewaysList ... +func (c VirtualWANsClient) P2sVpnGatewaysList(ctx context.Context, id commonids.SubscriptionId) (result P2sVpnGatewaysListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/p2sVpnGateways", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]P2SVpnGateway `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// P2sVpnGatewaysListComplete retrieves all the results into a single object +func (c VirtualWANsClient) P2sVpnGatewaysListComplete(ctx context.Context, id commonids.SubscriptionId) (P2sVpnGatewaysListCompleteResult, error) { + return c.P2sVpnGatewaysListCompleteMatchingPredicate(ctx, id, P2SVpnGatewayOperationPredicate{}) +} + +// P2sVpnGatewaysListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) P2sVpnGatewaysListCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate P2SVpnGatewayOperationPredicate) (result P2sVpnGatewaysListCompleteResult, err error) { + items := make([]P2SVpnGateway, 0) + + resp, err := c.P2sVpnGatewaysList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = P2sVpnGatewaysListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_p2svpngatewayslistbyresourcegroup.go b/resource-manager/network/2024-01-01/virtualwans/method_p2svpngatewayslistbyresourcegroup.go new file mode 100644 index 00000000000..0224c82328e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_p2svpngatewayslistbyresourcegroup.go @@ -0,0 +1,93 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type P2sVpnGatewaysListByResourceGroupOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]P2SVpnGateway +} + +type P2sVpnGatewaysListByResourceGroupCompleteResult struct { + LatestHttpResponse *http.Response + Items []P2SVpnGateway +} + +// P2sVpnGatewaysListByResourceGroup ... +func (c VirtualWANsClient) P2sVpnGatewaysListByResourceGroup(ctx context.Context, id commonids.ResourceGroupId) (result P2sVpnGatewaysListByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/p2sVpnGateways", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]P2SVpnGateway `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// P2sVpnGatewaysListByResourceGroupComplete retrieves all the results into a single object +func (c VirtualWANsClient) P2sVpnGatewaysListByResourceGroupComplete(ctx context.Context, id commonids.ResourceGroupId) (P2sVpnGatewaysListByResourceGroupCompleteResult, error) { + return c.P2sVpnGatewaysListByResourceGroupCompleteMatchingPredicate(ctx, id, P2SVpnGatewayOperationPredicate{}) +} + +// P2sVpnGatewaysListByResourceGroupCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) P2sVpnGatewaysListByResourceGroupCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate P2SVpnGatewayOperationPredicate) (result P2sVpnGatewaysListByResourceGroupCompleteResult, err error) { + items := make([]P2SVpnGateway, 0) + + resp, err := c.P2sVpnGatewaysListByResourceGroup(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = P2sVpnGatewaysListByResourceGroupCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_routemapscreateorupdate.go b/resource-manager/network/2024-01-01/virtualwans/method_routemapscreateorupdate.go new file mode 100644 index 00000000000..ffcf789da29 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_routemapscreateorupdate.go @@ -0,0 +1,75 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteMapsCreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *RouteMap +} + +// RouteMapsCreateOrUpdate ... +func (c VirtualWANsClient) RouteMapsCreateOrUpdate(ctx context.Context, id RouteMapId, input RouteMap) (result RouteMapsCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// RouteMapsCreateOrUpdateThenPoll performs RouteMapsCreateOrUpdate then polls until it's completed +func (c VirtualWANsClient) RouteMapsCreateOrUpdateThenPoll(ctx context.Context, id RouteMapId, input RouteMap) error { + result, err := c.RouteMapsCreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing RouteMapsCreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after RouteMapsCreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_routemapsdelete.go b/resource-manager/network/2024-01-01/virtualwans/method_routemapsdelete.go new file mode 100644 index 00000000000..f89977d5d94 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_routemapsdelete.go @@ -0,0 +1,71 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteMapsDeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// RouteMapsDelete ... +func (c VirtualWANsClient) RouteMapsDelete(ctx context.Context, id RouteMapId) (result RouteMapsDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// RouteMapsDeleteThenPoll performs RouteMapsDelete then polls until it's completed +func (c VirtualWANsClient) RouteMapsDeleteThenPoll(ctx context.Context, id RouteMapId) error { + result, err := c.RouteMapsDelete(ctx, id) + if err != nil { + return fmt.Errorf("performing RouteMapsDelete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after RouteMapsDelete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_routemapsget.go b/resource-manager/network/2024-01-01/virtualwans/method_routemapsget.go new file mode 100644 index 00000000000..925002f31e7 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_routemapsget.go @@ -0,0 +1,54 @@ +package virtualwans + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteMapsGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *RouteMap +} + +// RouteMapsGet ... +func (c VirtualWANsClient) RouteMapsGet(ctx context.Context, id RouteMapId) (result RouteMapsGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model RouteMap + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_routemapslist.go b/resource-manager/network/2024-01-01/virtualwans/method_routemapslist.go new file mode 100644 index 00000000000..3def8ca78d2 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_routemapslist.go @@ -0,0 +1,92 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteMapsListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]RouteMap +} + +type RouteMapsListCompleteResult struct { + LatestHttpResponse *http.Response + Items []RouteMap +} + +// RouteMapsList ... +func (c VirtualWANsClient) RouteMapsList(ctx context.Context, id VirtualHubId) (result RouteMapsListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/routeMaps", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]RouteMap `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// RouteMapsListComplete retrieves all the results into a single object +func (c VirtualWANsClient) RouteMapsListComplete(ctx context.Context, id VirtualHubId) (RouteMapsListCompleteResult, error) { + return c.RouteMapsListCompleteMatchingPredicate(ctx, id, RouteMapOperationPredicate{}) +} + +// RouteMapsListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) RouteMapsListCompleteMatchingPredicate(ctx context.Context, id VirtualHubId, predicate RouteMapOperationPredicate) (result RouteMapsListCompleteResult, err error) { + items := make([]RouteMap, 0) + + resp, err := c.RouteMapsList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = RouteMapsListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_routingintentcreateorupdate.go b/resource-manager/network/2024-01-01/virtualwans/method_routingintentcreateorupdate.go new file mode 100644 index 00000000000..58de7662435 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_routingintentcreateorupdate.go @@ -0,0 +1,75 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutingIntentCreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *RoutingIntent +} + +// RoutingIntentCreateOrUpdate ... +func (c VirtualWANsClient) RoutingIntentCreateOrUpdate(ctx context.Context, id RoutingIntentId, input RoutingIntent) (result RoutingIntentCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// RoutingIntentCreateOrUpdateThenPoll performs RoutingIntentCreateOrUpdate then polls until it's completed +func (c VirtualWANsClient) RoutingIntentCreateOrUpdateThenPoll(ctx context.Context, id RoutingIntentId, input RoutingIntent) error { + result, err := c.RoutingIntentCreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing RoutingIntentCreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after RoutingIntentCreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_routingintentdelete.go b/resource-manager/network/2024-01-01/virtualwans/method_routingintentdelete.go new file mode 100644 index 00000000000..dd481f41454 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_routingintentdelete.go @@ -0,0 +1,71 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutingIntentDeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// RoutingIntentDelete ... +func (c VirtualWANsClient) RoutingIntentDelete(ctx context.Context, id RoutingIntentId) (result RoutingIntentDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// RoutingIntentDeleteThenPoll performs RoutingIntentDelete then polls until it's completed +func (c VirtualWANsClient) RoutingIntentDeleteThenPoll(ctx context.Context, id RoutingIntentId) error { + result, err := c.RoutingIntentDelete(ctx, id) + if err != nil { + return fmt.Errorf("performing RoutingIntentDelete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after RoutingIntentDelete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_routingintentget.go b/resource-manager/network/2024-01-01/virtualwans/method_routingintentget.go new file mode 100644 index 00000000000..ae61d3b41b5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_routingintentget.go @@ -0,0 +1,54 @@ +package virtualwans + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutingIntentGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *RoutingIntent +} + +// RoutingIntentGet ... +func (c VirtualWANsClient) RoutingIntentGet(ctx context.Context, id RoutingIntentId) (result RoutingIntentGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model RoutingIntent + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_routingintentlist.go b/resource-manager/network/2024-01-01/virtualwans/method_routingintentlist.go new file mode 100644 index 00000000000..ef858aa2b50 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_routingintentlist.go @@ -0,0 +1,92 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutingIntentListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]RoutingIntent +} + +type RoutingIntentListCompleteResult struct { + LatestHttpResponse *http.Response + Items []RoutingIntent +} + +// RoutingIntentList ... +func (c VirtualWANsClient) RoutingIntentList(ctx context.Context, id VirtualHubId) (result RoutingIntentListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/routingIntent", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]RoutingIntent `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// RoutingIntentListComplete retrieves all the results into a single object +func (c VirtualWANsClient) RoutingIntentListComplete(ctx context.Context, id VirtualHubId) (RoutingIntentListCompleteResult, error) { + return c.RoutingIntentListCompleteMatchingPredicate(ctx, id, RoutingIntentOperationPredicate{}) +} + +// RoutingIntentListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) RoutingIntentListCompleteMatchingPredicate(ctx context.Context, id VirtualHubId, predicate RoutingIntentOperationPredicate) (result RoutingIntentListCompleteResult, err error) { + items := make([]RoutingIntent, 0) + + resp, err := c.RoutingIntentList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = RoutingIntentListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_supportedsecurityproviders.go b/resource-manager/network/2024-01-01/virtualwans/method_supportedsecurityproviders.go new file mode 100644 index 00000000000..616d9dd0cd4 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_supportedsecurityproviders.go @@ -0,0 +1,55 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SupportedSecurityProvidersOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VirtualWanSecurityProviders +} + +// SupportedSecurityProviders ... +func (c VirtualWANsClient) SupportedSecurityProviders(ctx context.Context, id VirtualWANId) (result SupportedSecurityProvidersOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/supportedSecurityProviders", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VirtualWanSecurityProviders + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_updatetags.go b/resource-manager/network/2024-01-01/virtualwans/method_updatetags.go new file mode 100644 index 00000000000..6115890e78c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_updatetags.go @@ -0,0 +1,58 @@ +package virtualwans + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VirtualWAN +} + +// UpdateTags ... +func (c VirtualWANsClient) UpdateTags(ctx context.Context, id VirtualWANId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VirtualWAN + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualhubbgpconnectioncreateorupdate.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubbgpconnectioncreateorupdate.go new file mode 100644 index 00000000000..3a42d5bcafd --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubbgpconnectioncreateorupdate.go @@ -0,0 +1,76 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubBgpConnectionCreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *BgpConnection +} + +// VirtualHubBgpConnectionCreateOrUpdate ... +func (c VirtualWANsClient) VirtualHubBgpConnectionCreateOrUpdate(ctx context.Context, id commonids.VirtualHubBGPConnectionId, input BgpConnection) (result VirtualHubBgpConnectionCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VirtualHubBgpConnectionCreateOrUpdateThenPoll performs VirtualHubBgpConnectionCreateOrUpdate then polls until it's completed +func (c VirtualWANsClient) VirtualHubBgpConnectionCreateOrUpdateThenPoll(ctx context.Context, id commonids.VirtualHubBGPConnectionId, input BgpConnection) error { + result, err := c.VirtualHubBgpConnectionCreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing VirtualHubBgpConnectionCreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VirtualHubBgpConnectionCreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualhubbgpconnectiondelete.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubbgpconnectiondelete.go new file mode 100644 index 00000000000..b8f353d5be6 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubbgpconnectiondelete.go @@ -0,0 +1,72 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubBgpConnectionDeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// VirtualHubBgpConnectionDelete ... +func (c VirtualWANsClient) VirtualHubBgpConnectionDelete(ctx context.Context, id commonids.VirtualHubBGPConnectionId) (result VirtualHubBgpConnectionDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VirtualHubBgpConnectionDeleteThenPoll performs VirtualHubBgpConnectionDelete then polls until it's completed +func (c VirtualWANsClient) VirtualHubBgpConnectionDeleteThenPoll(ctx context.Context, id commonids.VirtualHubBGPConnectionId) error { + result, err := c.VirtualHubBgpConnectionDelete(ctx, id) + if err != nil { + return fmt.Errorf("performing VirtualHubBgpConnectionDelete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VirtualHubBgpConnectionDelete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualhubbgpconnectionget.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubbgpconnectionget.go new file mode 100644 index 00000000000..525c6b3cabe --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubbgpconnectionget.go @@ -0,0 +1,55 @@ +package virtualwans + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubBgpConnectionGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *BgpConnection +} + +// VirtualHubBgpConnectionGet ... +func (c VirtualWANsClient) VirtualHubBgpConnectionGet(ctx context.Context, id commonids.VirtualHubBGPConnectionId) (result VirtualHubBgpConnectionGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model BgpConnection + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualhubbgpconnectionslist.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubbgpconnectionslist.go new file mode 100644 index 00000000000..c4b5ea29e18 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubbgpconnectionslist.go @@ -0,0 +1,92 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubBgpConnectionsListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]BgpConnection +} + +type VirtualHubBgpConnectionsListCompleteResult struct { + LatestHttpResponse *http.Response + Items []BgpConnection +} + +// VirtualHubBgpConnectionsList ... +func (c VirtualWANsClient) VirtualHubBgpConnectionsList(ctx context.Context, id VirtualHubId) (result VirtualHubBgpConnectionsListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/bgpConnections", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]BgpConnection `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// VirtualHubBgpConnectionsListComplete retrieves all the results into a single object +func (c VirtualWANsClient) VirtualHubBgpConnectionsListComplete(ctx context.Context, id VirtualHubId) (VirtualHubBgpConnectionsListCompleteResult, error) { + return c.VirtualHubBgpConnectionsListCompleteMatchingPredicate(ctx, id, BgpConnectionOperationPredicate{}) +} + +// VirtualHubBgpConnectionsListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) VirtualHubBgpConnectionsListCompleteMatchingPredicate(ctx context.Context, id VirtualHubId, predicate BgpConnectionOperationPredicate) (result VirtualHubBgpConnectionsListCompleteResult, err error) { + items := make([]BgpConnection, 0) + + resp, err := c.VirtualHubBgpConnectionsList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = VirtualHubBgpConnectionsListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualhubbgpconnectionslistadvertisedroutes.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubbgpconnectionslistadvertisedroutes.go new file mode 100644 index 00000000000..6c0c2308e2b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubbgpconnectionslistadvertisedroutes.go @@ -0,0 +1,72 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubBgpConnectionsListAdvertisedRoutesOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *map[string][]PeerRoute +} + +// VirtualHubBgpConnectionsListAdvertisedRoutes ... +func (c VirtualWANsClient) VirtualHubBgpConnectionsListAdvertisedRoutes(ctx context.Context, id commonids.VirtualHubBGPConnectionId) (result VirtualHubBgpConnectionsListAdvertisedRoutesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/advertisedRoutes", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VirtualHubBgpConnectionsListAdvertisedRoutesThenPoll performs VirtualHubBgpConnectionsListAdvertisedRoutes then polls until it's completed +func (c VirtualWANsClient) VirtualHubBgpConnectionsListAdvertisedRoutesThenPoll(ctx context.Context, id commonids.VirtualHubBGPConnectionId) error { + result, err := c.VirtualHubBgpConnectionsListAdvertisedRoutes(ctx, id) + if err != nil { + return fmt.Errorf("performing VirtualHubBgpConnectionsListAdvertisedRoutes: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VirtualHubBgpConnectionsListAdvertisedRoutes: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualhubbgpconnectionslistlearnedroutes.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubbgpconnectionslistlearnedroutes.go new file mode 100644 index 00000000000..4c6842802ef --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubbgpconnectionslistlearnedroutes.go @@ -0,0 +1,72 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubBgpConnectionsListLearnedRoutesOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *map[string][]PeerRoute +} + +// VirtualHubBgpConnectionsListLearnedRoutes ... +func (c VirtualWANsClient) VirtualHubBgpConnectionsListLearnedRoutes(ctx context.Context, id commonids.VirtualHubBGPConnectionId) (result VirtualHubBgpConnectionsListLearnedRoutesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/learnedRoutes", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VirtualHubBgpConnectionsListLearnedRoutesThenPoll performs VirtualHubBgpConnectionsListLearnedRoutes then polls until it's completed +func (c VirtualWANsClient) VirtualHubBgpConnectionsListLearnedRoutesThenPoll(ctx context.Context, id commonids.VirtualHubBGPConnectionId) error { + result, err := c.VirtualHubBgpConnectionsListLearnedRoutes(ctx, id) + if err != nil { + return fmt.Errorf("performing VirtualHubBgpConnectionsListLearnedRoutes: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VirtualHubBgpConnectionsListLearnedRoutes: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualhubipconfigurationcreateorupdate.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubipconfigurationcreateorupdate.go new file mode 100644 index 00000000000..dfb4925ba51 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubipconfigurationcreateorupdate.go @@ -0,0 +1,76 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubIPConfigurationCreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *HubIPConfiguration +} + +// VirtualHubIPConfigurationCreateOrUpdate ... +func (c VirtualWANsClient) VirtualHubIPConfigurationCreateOrUpdate(ctx context.Context, id commonids.VirtualHubIPConfigurationId, input HubIPConfiguration) (result VirtualHubIPConfigurationCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VirtualHubIPConfigurationCreateOrUpdateThenPoll performs VirtualHubIPConfigurationCreateOrUpdate then polls until it's completed +func (c VirtualWANsClient) VirtualHubIPConfigurationCreateOrUpdateThenPoll(ctx context.Context, id commonids.VirtualHubIPConfigurationId, input HubIPConfiguration) error { + result, err := c.VirtualHubIPConfigurationCreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing VirtualHubIPConfigurationCreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VirtualHubIPConfigurationCreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualhubipconfigurationdelete.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubipconfigurationdelete.go new file mode 100644 index 00000000000..36341aa33f7 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubipconfigurationdelete.go @@ -0,0 +1,72 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubIPConfigurationDeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// VirtualHubIPConfigurationDelete ... +func (c VirtualWANsClient) VirtualHubIPConfigurationDelete(ctx context.Context, id commonids.VirtualHubIPConfigurationId) (result VirtualHubIPConfigurationDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VirtualHubIPConfigurationDeleteThenPoll performs VirtualHubIPConfigurationDelete then polls until it's completed +func (c VirtualWANsClient) VirtualHubIPConfigurationDeleteThenPoll(ctx context.Context, id commonids.VirtualHubIPConfigurationId) error { + result, err := c.VirtualHubIPConfigurationDelete(ctx, id) + if err != nil { + return fmt.Errorf("performing VirtualHubIPConfigurationDelete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VirtualHubIPConfigurationDelete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualhubipconfigurationget.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubipconfigurationget.go new file mode 100644 index 00000000000..ca3c9a88dd3 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubipconfigurationget.go @@ -0,0 +1,55 @@ +package virtualwans + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubIPConfigurationGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *HubIPConfiguration +} + +// VirtualHubIPConfigurationGet ... +func (c VirtualWANsClient) VirtualHubIPConfigurationGet(ctx context.Context, id commonids.VirtualHubIPConfigurationId) (result VirtualHubIPConfigurationGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model HubIPConfiguration + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualhubipconfigurationlist.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubipconfigurationlist.go new file mode 100644 index 00000000000..c3fa2ae6e69 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubipconfigurationlist.go @@ -0,0 +1,92 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubIPConfigurationListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]HubIPConfiguration +} + +type VirtualHubIPConfigurationListCompleteResult struct { + LatestHttpResponse *http.Response + Items []HubIPConfiguration +} + +// VirtualHubIPConfigurationList ... +func (c VirtualWANsClient) VirtualHubIPConfigurationList(ctx context.Context, id VirtualHubId) (result VirtualHubIPConfigurationListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/ipConfigurations", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]HubIPConfiguration `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// VirtualHubIPConfigurationListComplete retrieves all the results into a single object +func (c VirtualWANsClient) VirtualHubIPConfigurationListComplete(ctx context.Context, id VirtualHubId) (VirtualHubIPConfigurationListCompleteResult, error) { + return c.VirtualHubIPConfigurationListCompleteMatchingPredicate(ctx, id, HubIPConfigurationOperationPredicate{}) +} + +// VirtualHubIPConfigurationListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) VirtualHubIPConfigurationListCompleteMatchingPredicate(ctx context.Context, id VirtualHubId, predicate HubIPConfigurationOperationPredicate) (result VirtualHubIPConfigurationListCompleteResult, err error) { + items := make([]HubIPConfiguration, 0) + + resp, err := c.VirtualHubIPConfigurationList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = VirtualHubIPConfigurationListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualhubroutetablev2screateorupdate.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubroutetablev2screateorupdate.go new file mode 100644 index 00000000000..b7e92feb6c7 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubroutetablev2screateorupdate.go @@ -0,0 +1,75 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubRouteTableV2sCreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VirtualHubRouteTableV2 +} + +// VirtualHubRouteTableV2sCreateOrUpdate ... +func (c VirtualWANsClient) VirtualHubRouteTableV2sCreateOrUpdate(ctx context.Context, id VirtualHubRouteTableId, input VirtualHubRouteTableV2) (result VirtualHubRouteTableV2sCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VirtualHubRouteTableV2sCreateOrUpdateThenPoll performs VirtualHubRouteTableV2sCreateOrUpdate then polls until it's completed +func (c VirtualWANsClient) VirtualHubRouteTableV2sCreateOrUpdateThenPoll(ctx context.Context, id VirtualHubRouteTableId, input VirtualHubRouteTableV2) error { + result, err := c.VirtualHubRouteTableV2sCreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing VirtualHubRouteTableV2sCreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VirtualHubRouteTableV2sCreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualhubroutetablev2sdelete.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubroutetablev2sdelete.go new file mode 100644 index 00000000000..91cc7babd28 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubroutetablev2sdelete.go @@ -0,0 +1,71 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubRouteTableV2sDeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// VirtualHubRouteTableV2sDelete ... +func (c VirtualWANsClient) VirtualHubRouteTableV2sDelete(ctx context.Context, id VirtualHubRouteTableId) (result VirtualHubRouteTableV2sDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VirtualHubRouteTableV2sDeleteThenPoll performs VirtualHubRouteTableV2sDelete then polls until it's completed +func (c VirtualWANsClient) VirtualHubRouteTableV2sDeleteThenPoll(ctx context.Context, id VirtualHubRouteTableId) error { + result, err := c.VirtualHubRouteTableV2sDelete(ctx, id) + if err != nil { + return fmt.Errorf("performing VirtualHubRouteTableV2sDelete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VirtualHubRouteTableV2sDelete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualhubroutetablev2sget.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubroutetablev2sget.go new file mode 100644 index 00000000000..7c542fcfe68 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubroutetablev2sget.go @@ -0,0 +1,54 @@ +package virtualwans + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubRouteTableV2sGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VirtualHubRouteTableV2 +} + +// VirtualHubRouteTableV2sGet ... +func (c VirtualWANsClient) VirtualHubRouteTableV2sGet(ctx context.Context, id VirtualHubRouteTableId) (result VirtualHubRouteTableV2sGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VirtualHubRouteTableV2 + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualhubroutetablev2slist.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubroutetablev2slist.go new file mode 100644 index 00000000000..1687bef7d4c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubroutetablev2slist.go @@ -0,0 +1,92 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubRouteTableV2sListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VirtualHubRouteTableV2 +} + +type VirtualHubRouteTableV2sListCompleteResult struct { + LatestHttpResponse *http.Response + Items []VirtualHubRouteTableV2 +} + +// VirtualHubRouteTableV2sList ... +func (c VirtualWANsClient) VirtualHubRouteTableV2sList(ctx context.Context, id VirtualHubId) (result VirtualHubRouteTableV2sListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/routeTables", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VirtualHubRouteTableV2 `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// VirtualHubRouteTableV2sListComplete retrieves all the results into a single object +func (c VirtualWANsClient) VirtualHubRouteTableV2sListComplete(ctx context.Context, id VirtualHubId) (VirtualHubRouteTableV2sListCompleteResult, error) { + return c.VirtualHubRouteTableV2sListCompleteMatchingPredicate(ctx, id, VirtualHubRouteTableV2OperationPredicate{}) +} + +// VirtualHubRouteTableV2sListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) VirtualHubRouteTableV2sListCompleteMatchingPredicate(ctx context.Context, id VirtualHubId, predicate VirtualHubRouteTableV2OperationPredicate) (result VirtualHubRouteTableV2sListCompleteResult, err error) { + items := make([]VirtualHubRouteTableV2, 0) + + resp, err := c.VirtualHubRouteTableV2sList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = VirtualHubRouteTableV2sListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualhubscreateorupdate.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubscreateorupdate.go new file mode 100644 index 00000000000..6b78901c93c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubscreateorupdate.go @@ -0,0 +1,75 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubsCreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VirtualHub +} + +// VirtualHubsCreateOrUpdate ... +func (c VirtualWANsClient) VirtualHubsCreateOrUpdate(ctx context.Context, id VirtualHubId, input VirtualHub) (result VirtualHubsCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VirtualHubsCreateOrUpdateThenPoll performs VirtualHubsCreateOrUpdate then polls until it's completed +func (c VirtualWANsClient) VirtualHubsCreateOrUpdateThenPoll(ctx context.Context, id VirtualHubId, input VirtualHub) error { + result, err := c.VirtualHubsCreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing VirtualHubsCreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VirtualHubsCreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualhubsdelete.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubsdelete.go new file mode 100644 index 00000000000..70eebb0a343 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubsdelete.go @@ -0,0 +1,71 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubsDeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// VirtualHubsDelete ... +func (c VirtualWANsClient) VirtualHubsDelete(ctx context.Context, id VirtualHubId) (result VirtualHubsDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VirtualHubsDeleteThenPoll performs VirtualHubsDelete then polls until it's completed +func (c VirtualWANsClient) VirtualHubsDeleteThenPoll(ctx context.Context, id VirtualHubId) error { + result, err := c.VirtualHubsDelete(ctx, id) + if err != nil { + return fmt.Errorf("performing VirtualHubsDelete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VirtualHubsDelete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualhubsget.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubsget.go new file mode 100644 index 00000000000..3f2e419720f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubsget.go @@ -0,0 +1,54 @@ +package virtualwans + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubsGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VirtualHub +} + +// VirtualHubsGet ... +func (c VirtualWANsClient) VirtualHubsGet(ctx context.Context, id VirtualHubId) (result VirtualHubsGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VirtualHub + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualhubsgeteffectivevirtualhubroutes.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubsgeteffectivevirtualhubroutes.go new file mode 100644 index 00000000000..1bbae403695 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubsgeteffectivevirtualhubroutes.go @@ -0,0 +1,75 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubsGetEffectiveVirtualHubRoutesOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VirtualHubEffectiveRouteList +} + +// VirtualHubsGetEffectiveVirtualHubRoutes ... +func (c VirtualWANsClient) VirtualHubsGetEffectiveVirtualHubRoutes(ctx context.Context, id VirtualHubId, input EffectiveRoutesParameters) (result VirtualHubsGetEffectiveVirtualHubRoutesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/effectiveRoutes", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VirtualHubsGetEffectiveVirtualHubRoutesThenPoll performs VirtualHubsGetEffectiveVirtualHubRoutes then polls until it's completed +func (c VirtualWANsClient) VirtualHubsGetEffectiveVirtualHubRoutesThenPoll(ctx context.Context, id VirtualHubId, input EffectiveRoutesParameters) error { + result, err := c.VirtualHubsGetEffectiveVirtualHubRoutes(ctx, id, input) + if err != nil { + return fmt.Errorf("performing VirtualHubsGetEffectiveVirtualHubRoutes: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VirtualHubsGetEffectiveVirtualHubRoutes: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualhubsgetinboundroutes.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubsgetinboundroutes.go new file mode 100644 index 00000000000..03114d0c238 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubsgetinboundroutes.go @@ -0,0 +1,75 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubsGetInboundRoutesOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *EffectiveRouteMapRouteList +} + +// VirtualHubsGetInboundRoutes ... +func (c VirtualWANsClient) VirtualHubsGetInboundRoutes(ctx context.Context, id VirtualHubId, input GetInboundRoutesParameters) (result VirtualHubsGetInboundRoutesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/inboundRoutes", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VirtualHubsGetInboundRoutesThenPoll performs VirtualHubsGetInboundRoutes then polls until it's completed +func (c VirtualWANsClient) VirtualHubsGetInboundRoutesThenPoll(ctx context.Context, id VirtualHubId, input GetInboundRoutesParameters) error { + result, err := c.VirtualHubsGetInboundRoutes(ctx, id, input) + if err != nil { + return fmt.Errorf("performing VirtualHubsGetInboundRoutes: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VirtualHubsGetInboundRoutes: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualhubsgetoutboundroutes.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubsgetoutboundroutes.go new file mode 100644 index 00000000000..9a715f99613 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubsgetoutboundroutes.go @@ -0,0 +1,75 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubsGetOutboundRoutesOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *EffectiveRouteMapRouteList +} + +// VirtualHubsGetOutboundRoutes ... +func (c VirtualWANsClient) VirtualHubsGetOutboundRoutes(ctx context.Context, id VirtualHubId, input GetOutboundRoutesParameters) (result VirtualHubsGetOutboundRoutesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/outboundRoutes", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VirtualHubsGetOutboundRoutesThenPoll performs VirtualHubsGetOutboundRoutes then polls until it's completed +func (c VirtualWANsClient) VirtualHubsGetOutboundRoutesThenPoll(ctx context.Context, id VirtualHubId, input GetOutboundRoutesParameters) error { + result, err := c.VirtualHubsGetOutboundRoutes(ctx, id, input) + if err != nil { + return fmt.Errorf("performing VirtualHubsGetOutboundRoutes: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VirtualHubsGetOutboundRoutes: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualhubslist.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubslist.go new file mode 100644 index 00000000000..49ab6fcec34 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubslist.go @@ -0,0 +1,93 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubsListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VirtualHub +} + +type VirtualHubsListCompleteResult struct { + LatestHttpResponse *http.Response + Items []VirtualHub +} + +// VirtualHubsList ... +func (c VirtualWANsClient) VirtualHubsList(ctx context.Context, id commonids.SubscriptionId) (result VirtualHubsListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/virtualHubs", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VirtualHub `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// VirtualHubsListComplete retrieves all the results into a single object +func (c VirtualWANsClient) VirtualHubsListComplete(ctx context.Context, id commonids.SubscriptionId) (VirtualHubsListCompleteResult, error) { + return c.VirtualHubsListCompleteMatchingPredicate(ctx, id, VirtualHubOperationPredicate{}) +} + +// VirtualHubsListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) VirtualHubsListCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate VirtualHubOperationPredicate) (result VirtualHubsListCompleteResult, err error) { + items := make([]VirtualHub, 0) + + resp, err := c.VirtualHubsList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = VirtualHubsListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualhubslistbyresourcegroup.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubslistbyresourcegroup.go new file mode 100644 index 00000000000..2eabf9bea70 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubslistbyresourcegroup.go @@ -0,0 +1,93 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubsListByResourceGroupOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VirtualHub +} + +type VirtualHubsListByResourceGroupCompleteResult struct { + LatestHttpResponse *http.Response + Items []VirtualHub +} + +// VirtualHubsListByResourceGroup ... +func (c VirtualWANsClient) VirtualHubsListByResourceGroup(ctx context.Context, id commonids.ResourceGroupId) (result VirtualHubsListByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/virtualHubs", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VirtualHub `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// VirtualHubsListByResourceGroupComplete retrieves all the results into a single object +func (c VirtualWANsClient) VirtualHubsListByResourceGroupComplete(ctx context.Context, id commonids.ResourceGroupId) (VirtualHubsListByResourceGroupCompleteResult, error) { + return c.VirtualHubsListByResourceGroupCompleteMatchingPredicate(ctx, id, VirtualHubOperationPredicate{}) +} + +// VirtualHubsListByResourceGroupCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) VirtualHubsListByResourceGroupCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate VirtualHubOperationPredicate) (result VirtualHubsListByResourceGroupCompleteResult, err error) { + items := make([]VirtualHub, 0) + + resp, err := c.VirtualHubsListByResourceGroup(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = VirtualHubsListByResourceGroupCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualhubsupdatetags.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubsupdatetags.go new file mode 100644 index 00000000000..be5399a4515 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualhubsupdatetags.go @@ -0,0 +1,58 @@ +package virtualwans + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubsUpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VirtualHub +} + +// VirtualHubsUpdateTags ... +func (c VirtualWANsClient) VirtualHubsUpdateTags(ctx context.Context, id VirtualHubId, input TagsObject) (result VirtualHubsUpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VirtualHub + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualwanscreateorupdate.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualwanscreateorupdate.go new file mode 100644 index 00000000000..310b768e4e5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualwanscreateorupdate.go @@ -0,0 +1,75 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualWansCreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VirtualWAN +} + +// VirtualWansCreateOrUpdate ... +func (c VirtualWANsClient) VirtualWansCreateOrUpdate(ctx context.Context, id VirtualWANId, input VirtualWAN) (result VirtualWansCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VirtualWansCreateOrUpdateThenPoll performs VirtualWansCreateOrUpdate then polls until it's completed +func (c VirtualWANsClient) VirtualWansCreateOrUpdateThenPoll(ctx context.Context, id VirtualWANId, input VirtualWAN) error { + result, err := c.VirtualWansCreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing VirtualWansCreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VirtualWansCreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualwansdelete.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualwansdelete.go new file mode 100644 index 00000000000..4ce708a8edd --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualwansdelete.go @@ -0,0 +1,71 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualWansDeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// VirtualWansDelete ... +func (c VirtualWANsClient) VirtualWansDelete(ctx context.Context, id VirtualWANId) (result VirtualWansDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VirtualWansDeleteThenPoll performs VirtualWansDelete then polls until it's completed +func (c VirtualWANsClient) VirtualWansDeleteThenPoll(ctx context.Context, id VirtualWANId) error { + result, err := c.VirtualWansDelete(ctx, id) + if err != nil { + return fmt.Errorf("performing VirtualWansDelete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VirtualWansDelete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualwansget.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualwansget.go new file mode 100644 index 00000000000..41dbd00d7f2 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualwansget.go @@ -0,0 +1,54 @@ +package virtualwans + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualWansGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VirtualWAN +} + +// VirtualWansGet ... +func (c VirtualWANsClient) VirtualWansGet(ctx context.Context, id VirtualWANId) (result VirtualWansGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VirtualWAN + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualwanslist.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualwanslist.go new file mode 100644 index 00000000000..394200ffe81 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualwanslist.go @@ -0,0 +1,93 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualWansListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VirtualWAN +} + +type VirtualWansListCompleteResult struct { + LatestHttpResponse *http.Response + Items []VirtualWAN +} + +// VirtualWansList ... +func (c VirtualWANsClient) VirtualWansList(ctx context.Context, id commonids.SubscriptionId) (result VirtualWansListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/virtualWans", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VirtualWAN `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// VirtualWansListComplete retrieves all the results into a single object +func (c VirtualWANsClient) VirtualWansListComplete(ctx context.Context, id commonids.SubscriptionId) (VirtualWansListCompleteResult, error) { + return c.VirtualWansListCompleteMatchingPredicate(ctx, id, VirtualWANOperationPredicate{}) +} + +// VirtualWansListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) VirtualWansListCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate VirtualWANOperationPredicate) (result VirtualWansListCompleteResult, err error) { + items := make([]VirtualWAN, 0) + + resp, err := c.VirtualWansList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = VirtualWansListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_virtualwanslistbyresourcegroup.go b/resource-manager/network/2024-01-01/virtualwans/method_virtualwanslistbyresourcegroup.go new file mode 100644 index 00000000000..fec869f75be --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_virtualwanslistbyresourcegroup.go @@ -0,0 +1,93 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualWansListByResourceGroupOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VirtualWAN +} + +type VirtualWansListByResourceGroupCompleteResult struct { + LatestHttpResponse *http.Response + Items []VirtualWAN +} + +// VirtualWansListByResourceGroup ... +func (c VirtualWANsClient) VirtualWansListByResourceGroup(ctx context.Context, id commonids.ResourceGroupId) (result VirtualWansListByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/virtualWans", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VirtualWAN `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// VirtualWansListByResourceGroupComplete retrieves all the results into a single object +func (c VirtualWANsClient) VirtualWansListByResourceGroupComplete(ctx context.Context, id commonids.ResourceGroupId) (VirtualWansListByResourceGroupCompleteResult, error) { + return c.VirtualWansListByResourceGroupCompleteMatchingPredicate(ctx, id, VirtualWANOperationPredicate{}) +} + +// VirtualWansListByResourceGroupCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) VirtualWansListByResourceGroupCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate VirtualWANOperationPredicate) (result VirtualWansListByResourceGroupCompleteResult, err error) { + items := make([]VirtualWAN, 0) + + resp, err := c.VirtualWansListByResourceGroup(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = VirtualWansListByResourceGroupCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpnconnectionscreateorupdate.go b/resource-manager/network/2024-01-01/virtualwans/method_vpnconnectionscreateorupdate.go new file mode 100644 index 00000000000..58f8bec5b87 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpnconnectionscreateorupdate.go @@ -0,0 +1,76 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnConnectionsCreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VpnConnection +} + +// VpnConnectionsCreateOrUpdate ... +func (c VirtualWANsClient) VpnConnectionsCreateOrUpdate(ctx context.Context, id commonids.VPNConnectionId, input VpnConnection) (result VpnConnectionsCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VpnConnectionsCreateOrUpdateThenPoll performs VpnConnectionsCreateOrUpdate then polls until it's completed +func (c VirtualWANsClient) VpnConnectionsCreateOrUpdateThenPoll(ctx context.Context, id commonids.VPNConnectionId, input VpnConnection) error { + result, err := c.VpnConnectionsCreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing VpnConnectionsCreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VpnConnectionsCreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpnconnectionsdelete.go b/resource-manager/network/2024-01-01/virtualwans/method_vpnconnectionsdelete.go new file mode 100644 index 00000000000..12193490035 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpnconnectionsdelete.go @@ -0,0 +1,72 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnConnectionsDeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// VpnConnectionsDelete ... +func (c VirtualWANsClient) VpnConnectionsDelete(ctx context.Context, id commonids.VPNConnectionId) (result VpnConnectionsDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VpnConnectionsDeleteThenPoll performs VpnConnectionsDelete then polls until it's completed +func (c VirtualWANsClient) VpnConnectionsDeleteThenPoll(ctx context.Context, id commonids.VPNConnectionId) error { + result, err := c.VpnConnectionsDelete(ctx, id) + if err != nil { + return fmt.Errorf("performing VpnConnectionsDelete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VpnConnectionsDelete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpnconnectionsget.go b/resource-manager/network/2024-01-01/virtualwans/method_vpnconnectionsget.go new file mode 100644 index 00000000000..812232759b1 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpnconnectionsget.go @@ -0,0 +1,55 @@ +package virtualwans + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnConnectionsGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VpnConnection +} + +// VpnConnectionsGet ... +func (c VirtualWANsClient) VpnConnectionsGet(ctx context.Context, id commonids.VPNConnectionId) (result VpnConnectionsGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VpnConnection + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpnconnectionslistbyvpngateway.go b/resource-manager/network/2024-01-01/virtualwans/method_vpnconnectionslistbyvpngateway.go new file mode 100644 index 00000000000..48d7fe22883 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpnconnectionslistbyvpngateway.go @@ -0,0 +1,92 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnConnectionsListByVpnGatewayOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VpnConnection +} + +type VpnConnectionsListByVpnGatewayCompleteResult struct { + LatestHttpResponse *http.Response + Items []VpnConnection +} + +// VpnConnectionsListByVpnGateway ... +func (c VirtualWANsClient) VpnConnectionsListByVpnGateway(ctx context.Context, id VpnGatewayId) (result VpnConnectionsListByVpnGatewayOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/vpnConnections", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VpnConnection `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// VpnConnectionsListByVpnGatewayComplete retrieves all the results into a single object +func (c VirtualWANsClient) VpnConnectionsListByVpnGatewayComplete(ctx context.Context, id VpnGatewayId) (VpnConnectionsListByVpnGatewayCompleteResult, error) { + return c.VpnConnectionsListByVpnGatewayCompleteMatchingPredicate(ctx, id, VpnConnectionOperationPredicate{}) +} + +// VpnConnectionsListByVpnGatewayCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) VpnConnectionsListByVpnGatewayCompleteMatchingPredicate(ctx context.Context, id VpnGatewayId, predicate VpnConnectionOperationPredicate) (result VpnConnectionsListByVpnGatewayCompleteResult, err error) { + items := make([]VpnConnection, 0) + + resp, err := c.VpnConnectionsListByVpnGateway(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = VpnConnectionsListByVpnGatewayCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpnconnectionsstartpacketcapture.go b/resource-manager/network/2024-01-01/virtualwans/method_vpnconnectionsstartpacketcapture.go new file mode 100644 index 00000000000..98551e48f98 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpnconnectionsstartpacketcapture.go @@ -0,0 +1,76 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnConnectionsStartPacketCaptureOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *string +} + +// VpnConnectionsStartPacketCapture ... +func (c VirtualWANsClient) VpnConnectionsStartPacketCapture(ctx context.Context, id commonids.VPNConnectionId, input VpnConnectionPacketCaptureStartParameters) (result VpnConnectionsStartPacketCaptureOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/startpacketcapture", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VpnConnectionsStartPacketCaptureThenPoll performs VpnConnectionsStartPacketCapture then polls until it's completed +func (c VirtualWANsClient) VpnConnectionsStartPacketCaptureThenPoll(ctx context.Context, id commonids.VPNConnectionId, input VpnConnectionPacketCaptureStartParameters) error { + result, err := c.VpnConnectionsStartPacketCapture(ctx, id, input) + if err != nil { + return fmt.Errorf("performing VpnConnectionsStartPacketCapture: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VpnConnectionsStartPacketCapture: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpnconnectionsstoppacketcapture.go b/resource-manager/network/2024-01-01/virtualwans/method_vpnconnectionsstoppacketcapture.go new file mode 100644 index 00000000000..b32b88c6969 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpnconnectionsstoppacketcapture.go @@ -0,0 +1,76 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnConnectionsStopPacketCaptureOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *string +} + +// VpnConnectionsStopPacketCapture ... +func (c VirtualWANsClient) VpnConnectionsStopPacketCapture(ctx context.Context, id commonids.VPNConnectionId, input VpnConnectionPacketCaptureStopParameters) (result VpnConnectionsStopPacketCaptureOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/stoppacketcapture", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VpnConnectionsStopPacketCaptureThenPoll performs VpnConnectionsStopPacketCapture then polls until it's completed +func (c VirtualWANsClient) VpnConnectionsStopPacketCaptureThenPoll(ctx context.Context, id commonids.VPNConnectionId, input VpnConnectionPacketCaptureStopParameters) error { + result, err := c.VpnConnectionsStopPacketCapture(ctx, id, input) + if err != nil { + return fmt.Errorf("performing VpnConnectionsStopPacketCapture: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VpnConnectionsStopPacketCapture: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpngatewayscreateorupdate.go b/resource-manager/network/2024-01-01/virtualwans/method_vpngatewayscreateorupdate.go new file mode 100644 index 00000000000..2cabc7eba19 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpngatewayscreateorupdate.go @@ -0,0 +1,75 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnGatewaysCreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VpnGateway +} + +// VpnGatewaysCreateOrUpdate ... +func (c VirtualWANsClient) VpnGatewaysCreateOrUpdate(ctx context.Context, id VpnGatewayId, input VpnGateway) (result VpnGatewaysCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VpnGatewaysCreateOrUpdateThenPoll performs VpnGatewaysCreateOrUpdate then polls until it's completed +func (c VirtualWANsClient) VpnGatewaysCreateOrUpdateThenPoll(ctx context.Context, id VpnGatewayId, input VpnGateway) error { + result, err := c.VpnGatewaysCreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing VpnGatewaysCreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VpnGatewaysCreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpngatewaysdelete.go b/resource-manager/network/2024-01-01/virtualwans/method_vpngatewaysdelete.go new file mode 100644 index 00000000000..76d02ba38d5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpngatewaysdelete.go @@ -0,0 +1,71 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnGatewaysDeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// VpnGatewaysDelete ... +func (c VirtualWANsClient) VpnGatewaysDelete(ctx context.Context, id VpnGatewayId) (result VpnGatewaysDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VpnGatewaysDeleteThenPoll performs VpnGatewaysDelete then polls until it's completed +func (c VirtualWANsClient) VpnGatewaysDeleteThenPoll(ctx context.Context, id VpnGatewayId) error { + result, err := c.VpnGatewaysDelete(ctx, id) + if err != nil { + return fmt.Errorf("performing VpnGatewaysDelete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VpnGatewaysDelete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpngatewaysget.go b/resource-manager/network/2024-01-01/virtualwans/method_vpngatewaysget.go new file mode 100644 index 00000000000..bfa13a547eb --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpngatewaysget.go @@ -0,0 +1,54 @@ +package virtualwans + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnGatewaysGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VpnGateway +} + +// VpnGatewaysGet ... +func (c VirtualWANsClient) VpnGatewaysGet(ctx context.Context, id VpnGatewayId) (result VpnGatewaysGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VpnGateway + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpngatewayslist.go b/resource-manager/network/2024-01-01/virtualwans/method_vpngatewayslist.go new file mode 100644 index 00000000000..ca191bd2af0 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpngatewayslist.go @@ -0,0 +1,93 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnGatewaysListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VpnGateway +} + +type VpnGatewaysListCompleteResult struct { + LatestHttpResponse *http.Response + Items []VpnGateway +} + +// VpnGatewaysList ... +func (c VirtualWANsClient) VpnGatewaysList(ctx context.Context, id commonids.SubscriptionId) (result VpnGatewaysListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/vpnGateways", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VpnGateway `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// VpnGatewaysListComplete retrieves all the results into a single object +func (c VirtualWANsClient) VpnGatewaysListComplete(ctx context.Context, id commonids.SubscriptionId) (VpnGatewaysListCompleteResult, error) { + return c.VpnGatewaysListCompleteMatchingPredicate(ctx, id, VpnGatewayOperationPredicate{}) +} + +// VpnGatewaysListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) VpnGatewaysListCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate VpnGatewayOperationPredicate) (result VpnGatewaysListCompleteResult, err error) { + items := make([]VpnGateway, 0) + + resp, err := c.VpnGatewaysList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = VpnGatewaysListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpngatewayslistbyresourcegroup.go b/resource-manager/network/2024-01-01/virtualwans/method_vpngatewayslistbyresourcegroup.go new file mode 100644 index 00000000000..74f1365bd3c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpngatewayslistbyresourcegroup.go @@ -0,0 +1,93 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnGatewaysListByResourceGroupOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VpnGateway +} + +type VpnGatewaysListByResourceGroupCompleteResult struct { + LatestHttpResponse *http.Response + Items []VpnGateway +} + +// VpnGatewaysListByResourceGroup ... +func (c VirtualWANsClient) VpnGatewaysListByResourceGroup(ctx context.Context, id commonids.ResourceGroupId) (result VpnGatewaysListByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/vpnGateways", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VpnGateway `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// VpnGatewaysListByResourceGroupComplete retrieves all the results into a single object +func (c VirtualWANsClient) VpnGatewaysListByResourceGroupComplete(ctx context.Context, id commonids.ResourceGroupId) (VpnGatewaysListByResourceGroupCompleteResult, error) { + return c.VpnGatewaysListByResourceGroupCompleteMatchingPredicate(ctx, id, VpnGatewayOperationPredicate{}) +} + +// VpnGatewaysListByResourceGroupCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) VpnGatewaysListByResourceGroupCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate VpnGatewayOperationPredicate) (result VpnGatewaysListByResourceGroupCompleteResult, err error) { + items := make([]VpnGateway, 0) + + resp, err := c.VpnGatewaysListByResourceGroup(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = VpnGatewaysListByResourceGroupCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpnlinkconnectionsgetikesas.go b/resource-manager/network/2024-01-01/virtualwans/method_vpnlinkconnectionsgetikesas.go new file mode 100644 index 00000000000..5ecf6a6d2e7 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpnlinkconnectionsgetikesas.go @@ -0,0 +1,71 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnLinkConnectionsGetIkeSasOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *string +} + +// VpnLinkConnectionsGetIkeSas ... +func (c VirtualWANsClient) VpnLinkConnectionsGetIkeSas(ctx context.Context, id VpnLinkConnectionId) (result VpnLinkConnectionsGetIkeSasOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/getikesas", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VpnLinkConnectionsGetIkeSasThenPoll performs VpnLinkConnectionsGetIkeSas then polls until it's completed +func (c VirtualWANsClient) VpnLinkConnectionsGetIkeSasThenPoll(ctx context.Context, id VpnLinkConnectionId) error { + result, err := c.VpnLinkConnectionsGetIkeSas(ctx, id) + if err != nil { + return fmt.Errorf("performing VpnLinkConnectionsGetIkeSas: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VpnLinkConnectionsGetIkeSas: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpnlinkconnectionslistbyvpnconnection.go b/resource-manager/network/2024-01-01/virtualwans/method_vpnlinkconnectionslistbyvpnconnection.go new file mode 100644 index 00000000000..6aa787c6a6c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpnlinkconnectionslistbyvpnconnection.go @@ -0,0 +1,93 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnLinkConnectionsListByVpnConnectionOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VpnSiteLinkConnection +} + +type VpnLinkConnectionsListByVpnConnectionCompleteResult struct { + LatestHttpResponse *http.Response + Items []VpnSiteLinkConnection +} + +// VpnLinkConnectionsListByVpnConnection ... +func (c VirtualWANsClient) VpnLinkConnectionsListByVpnConnection(ctx context.Context, id commonids.VPNConnectionId) (result VpnLinkConnectionsListByVpnConnectionOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/vpnLinkConnections", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VpnSiteLinkConnection `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// VpnLinkConnectionsListByVpnConnectionComplete retrieves all the results into a single object +func (c VirtualWANsClient) VpnLinkConnectionsListByVpnConnectionComplete(ctx context.Context, id commonids.VPNConnectionId) (VpnLinkConnectionsListByVpnConnectionCompleteResult, error) { + return c.VpnLinkConnectionsListByVpnConnectionCompleteMatchingPredicate(ctx, id, VpnSiteLinkConnectionOperationPredicate{}) +} + +// VpnLinkConnectionsListByVpnConnectionCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) VpnLinkConnectionsListByVpnConnectionCompleteMatchingPredicate(ctx context.Context, id commonids.VPNConnectionId, predicate VpnSiteLinkConnectionOperationPredicate) (result VpnLinkConnectionsListByVpnConnectionCompleteResult, err error) { + items := make([]VpnSiteLinkConnection, 0) + + resp, err := c.VpnLinkConnectionsListByVpnConnection(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = VpnLinkConnectionsListByVpnConnectionCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpnserverconfigurationsassociatedwithvirtualwanlist.go b/resource-manager/network/2024-01-01/virtualwans/method_vpnserverconfigurationsassociatedwithvirtualwanlist.go new file mode 100644 index 00000000000..2f7ae87144e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpnserverconfigurationsassociatedwithvirtualwanlist.go @@ -0,0 +1,71 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigurationsAssociatedWithVirtualWanListOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VpnServerConfigurationsResponse +} + +// VpnServerConfigurationsAssociatedWithVirtualWanList ... +func (c VirtualWANsClient) VpnServerConfigurationsAssociatedWithVirtualWanList(ctx context.Context, id VirtualWANId) (result VpnServerConfigurationsAssociatedWithVirtualWanListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/vpnServerConfigurations", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VpnServerConfigurationsAssociatedWithVirtualWanListThenPoll performs VpnServerConfigurationsAssociatedWithVirtualWanList then polls until it's completed +func (c VirtualWANsClient) VpnServerConfigurationsAssociatedWithVirtualWanListThenPoll(ctx context.Context, id VirtualWANId) error { + result, err := c.VpnServerConfigurationsAssociatedWithVirtualWanList(ctx, id) + if err != nil { + return fmt.Errorf("performing VpnServerConfigurationsAssociatedWithVirtualWanList: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VpnServerConfigurationsAssociatedWithVirtualWanList: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpnserverconfigurationscreateorupdate.go b/resource-manager/network/2024-01-01/virtualwans/method_vpnserverconfigurationscreateorupdate.go new file mode 100644 index 00000000000..256562205b9 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpnserverconfigurationscreateorupdate.go @@ -0,0 +1,75 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigurationsCreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VpnServerConfiguration +} + +// VpnServerConfigurationsCreateOrUpdate ... +func (c VirtualWANsClient) VpnServerConfigurationsCreateOrUpdate(ctx context.Context, id VpnServerConfigurationId, input VpnServerConfiguration) (result VpnServerConfigurationsCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VpnServerConfigurationsCreateOrUpdateThenPoll performs VpnServerConfigurationsCreateOrUpdate then polls until it's completed +func (c VirtualWANsClient) VpnServerConfigurationsCreateOrUpdateThenPoll(ctx context.Context, id VpnServerConfigurationId, input VpnServerConfiguration) error { + result, err := c.VpnServerConfigurationsCreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing VpnServerConfigurationsCreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VpnServerConfigurationsCreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpnserverconfigurationsdelete.go b/resource-manager/network/2024-01-01/virtualwans/method_vpnserverconfigurationsdelete.go new file mode 100644 index 00000000000..2edde34518e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpnserverconfigurationsdelete.go @@ -0,0 +1,71 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigurationsDeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// VpnServerConfigurationsDelete ... +func (c VirtualWANsClient) VpnServerConfigurationsDelete(ctx context.Context, id VpnServerConfigurationId) (result VpnServerConfigurationsDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VpnServerConfigurationsDeleteThenPoll performs VpnServerConfigurationsDelete then polls until it's completed +func (c VirtualWANsClient) VpnServerConfigurationsDeleteThenPoll(ctx context.Context, id VpnServerConfigurationId) error { + result, err := c.VpnServerConfigurationsDelete(ctx, id) + if err != nil { + return fmt.Errorf("performing VpnServerConfigurationsDelete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VpnServerConfigurationsDelete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpnserverconfigurationsget.go b/resource-manager/network/2024-01-01/virtualwans/method_vpnserverconfigurationsget.go new file mode 100644 index 00000000000..e5b009a1154 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpnserverconfigurationsget.go @@ -0,0 +1,54 @@ +package virtualwans + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigurationsGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VpnServerConfiguration +} + +// VpnServerConfigurationsGet ... +func (c VirtualWANsClient) VpnServerConfigurationsGet(ctx context.Context, id VpnServerConfigurationId) (result VpnServerConfigurationsGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VpnServerConfiguration + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpnserverconfigurationslist.go b/resource-manager/network/2024-01-01/virtualwans/method_vpnserverconfigurationslist.go new file mode 100644 index 00000000000..2b477dfd0ed --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpnserverconfigurationslist.go @@ -0,0 +1,93 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigurationsListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VpnServerConfiguration +} + +type VpnServerConfigurationsListCompleteResult struct { + LatestHttpResponse *http.Response + Items []VpnServerConfiguration +} + +// VpnServerConfigurationsList ... +func (c VirtualWANsClient) VpnServerConfigurationsList(ctx context.Context, id commonids.SubscriptionId) (result VpnServerConfigurationsListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/vpnServerConfigurations", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VpnServerConfiguration `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// VpnServerConfigurationsListComplete retrieves all the results into a single object +func (c VirtualWANsClient) VpnServerConfigurationsListComplete(ctx context.Context, id commonids.SubscriptionId) (VpnServerConfigurationsListCompleteResult, error) { + return c.VpnServerConfigurationsListCompleteMatchingPredicate(ctx, id, VpnServerConfigurationOperationPredicate{}) +} + +// VpnServerConfigurationsListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) VpnServerConfigurationsListCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate VpnServerConfigurationOperationPredicate) (result VpnServerConfigurationsListCompleteResult, err error) { + items := make([]VpnServerConfiguration, 0) + + resp, err := c.VpnServerConfigurationsList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = VpnServerConfigurationsListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpnserverconfigurationslistbyresourcegroup.go b/resource-manager/network/2024-01-01/virtualwans/method_vpnserverconfigurationslistbyresourcegroup.go new file mode 100644 index 00000000000..a4976dfad49 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpnserverconfigurationslistbyresourcegroup.go @@ -0,0 +1,93 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigurationsListByResourceGroupOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VpnServerConfiguration +} + +type VpnServerConfigurationsListByResourceGroupCompleteResult struct { + LatestHttpResponse *http.Response + Items []VpnServerConfiguration +} + +// VpnServerConfigurationsListByResourceGroup ... +func (c VirtualWANsClient) VpnServerConfigurationsListByResourceGroup(ctx context.Context, id commonids.ResourceGroupId) (result VpnServerConfigurationsListByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/vpnServerConfigurations", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VpnServerConfiguration `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// VpnServerConfigurationsListByResourceGroupComplete retrieves all the results into a single object +func (c VirtualWANsClient) VpnServerConfigurationsListByResourceGroupComplete(ctx context.Context, id commonids.ResourceGroupId) (VpnServerConfigurationsListByResourceGroupCompleteResult, error) { + return c.VpnServerConfigurationsListByResourceGroupCompleteMatchingPredicate(ctx, id, VpnServerConfigurationOperationPredicate{}) +} + +// VpnServerConfigurationsListByResourceGroupCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) VpnServerConfigurationsListByResourceGroupCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate VpnServerConfigurationOperationPredicate) (result VpnServerConfigurationsListByResourceGroupCompleteResult, err error) { + items := make([]VpnServerConfiguration, 0) + + resp, err := c.VpnServerConfigurationsListByResourceGroup(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = VpnServerConfigurationsListByResourceGroupCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpnsitelinkconnectionsget.go b/resource-manager/network/2024-01-01/virtualwans/method_vpnsitelinkconnectionsget.go new file mode 100644 index 00000000000..088e1b48de5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpnsitelinkconnectionsget.go @@ -0,0 +1,54 @@ +package virtualwans + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnSiteLinkConnectionsGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VpnSiteLinkConnection +} + +// VpnSiteLinkConnectionsGet ... +func (c VirtualWANsClient) VpnSiteLinkConnectionsGet(ctx context.Context, id VpnLinkConnectionId) (result VpnSiteLinkConnectionsGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VpnSiteLinkConnection + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpnsitelinksget.go b/resource-manager/network/2024-01-01/virtualwans/method_vpnsitelinksget.go new file mode 100644 index 00000000000..c16e84b3691 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpnsitelinksget.go @@ -0,0 +1,54 @@ +package virtualwans + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnSiteLinksGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VpnSiteLink +} + +// VpnSiteLinksGet ... +func (c VirtualWANsClient) VpnSiteLinksGet(ctx context.Context, id VpnSiteLinkId) (result VpnSiteLinksGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VpnSiteLink + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpnsitelinkslistbyvpnsite.go b/resource-manager/network/2024-01-01/virtualwans/method_vpnsitelinkslistbyvpnsite.go new file mode 100644 index 00000000000..58c8ae1dd18 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpnsitelinkslistbyvpnsite.go @@ -0,0 +1,92 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnSiteLinksListByVpnSiteOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VpnSiteLink +} + +type VpnSiteLinksListByVpnSiteCompleteResult struct { + LatestHttpResponse *http.Response + Items []VpnSiteLink +} + +// VpnSiteLinksListByVpnSite ... +func (c VirtualWANsClient) VpnSiteLinksListByVpnSite(ctx context.Context, id VpnSiteId) (result VpnSiteLinksListByVpnSiteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/vpnSiteLinks", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VpnSiteLink `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// VpnSiteLinksListByVpnSiteComplete retrieves all the results into a single object +func (c VirtualWANsClient) VpnSiteLinksListByVpnSiteComplete(ctx context.Context, id VpnSiteId) (VpnSiteLinksListByVpnSiteCompleteResult, error) { + return c.VpnSiteLinksListByVpnSiteCompleteMatchingPredicate(ctx, id, VpnSiteLinkOperationPredicate{}) +} + +// VpnSiteLinksListByVpnSiteCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) VpnSiteLinksListByVpnSiteCompleteMatchingPredicate(ctx context.Context, id VpnSiteId, predicate VpnSiteLinkOperationPredicate) (result VpnSiteLinksListByVpnSiteCompleteResult, err error) { + items := make([]VpnSiteLink, 0) + + resp, err := c.VpnSiteLinksListByVpnSite(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = VpnSiteLinksListByVpnSiteCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpnsitesconfigurationdownload.go b/resource-manager/network/2024-01-01/virtualwans/method_vpnsitesconfigurationdownload.go new file mode 100644 index 00000000000..a20fd02e0fc --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpnsitesconfigurationdownload.go @@ -0,0 +1,74 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnSitesConfigurationDownloadOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// VpnSitesConfigurationDownload ... +func (c VirtualWANsClient) VpnSitesConfigurationDownload(ctx context.Context, id VirtualWANId, input GetVpnSitesConfigurationRequest) (result VpnSitesConfigurationDownloadOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/vpnConfiguration", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VpnSitesConfigurationDownloadThenPoll performs VpnSitesConfigurationDownload then polls until it's completed +func (c VirtualWANsClient) VpnSitesConfigurationDownloadThenPoll(ctx context.Context, id VirtualWANId, input GetVpnSitesConfigurationRequest) error { + result, err := c.VpnSitesConfigurationDownload(ctx, id, input) + if err != nil { + return fmt.Errorf("performing VpnSitesConfigurationDownload: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VpnSitesConfigurationDownload: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpnsitescreateorupdate.go b/resource-manager/network/2024-01-01/virtualwans/method_vpnsitescreateorupdate.go new file mode 100644 index 00000000000..2b93c69c66a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpnsitescreateorupdate.go @@ -0,0 +1,75 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnSitesCreateOrUpdateOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VpnSite +} + +// VpnSitesCreateOrUpdate ... +func (c VirtualWANsClient) VpnSitesCreateOrUpdate(ctx context.Context, id VpnSiteId, input VpnSite) (result VpnSitesCreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VpnSitesCreateOrUpdateThenPoll performs VpnSitesCreateOrUpdate then polls until it's completed +func (c VirtualWANsClient) VpnSitesCreateOrUpdateThenPoll(ctx context.Context, id VpnSiteId, input VpnSite) error { + result, err := c.VpnSitesCreateOrUpdate(ctx, id, input) + if err != nil { + return fmt.Errorf("performing VpnSitesCreateOrUpdate: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VpnSitesCreateOrUpdate: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpnsitesdelete.go b/resource-manager/network/2024-01-01/virtualwans/method_vpnsitesdelete.go new file mode 100644 index 00000000000..f3b27d7f18a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpnsitesdelete.go @@ -0,0 +1,71 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnSitesDeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// VpnSitesDelete ... +func (c VirtualWANsClient) VpnSitesDelete(ctx context.Context, id VpnSiteId) (result VpnSitesDeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// VpnSitesDeleteThenPoll performs VpnSitesDelete then polls until it's completed +func (c VirtualWANsClient) VpnSitesDeleteThenPoll(ctx context.Context, id VpnSiteId) error { + result, err := c.VpnSitesDelete(ctx, id) + if err != nil { + return fmt.Errorf("performing VpnSitesDelete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after VpnSitesDelete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpnsitesget.go b/resource-manager/network/2024-01-01/virtualwans/method_vpnsitesget.go new file mode 100644 index 00000000000..6494e6d6449 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpnsitesget.go @@ -0,0 +1,54 @@ +package virtualwans + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnSitesGetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VpnSite +} + +// VpnSitesGet ... +func (c VirtualWANsClient) VpnSitesGet(ctx context.Context, id VpnSiteId) (result VpnSitesGetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VpnSite + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpnsiteslist.go b/resource-manager/network/2024-01-01/virtualwans/method_vpnsiteslist.go new file mode 100644 index 00000000000..f6008bbcb21 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpnsiteslist.go @@ -0,0 +1,93 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnSitesListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VpnSite +} + +type VpnSitesListCompleteResult struct { + LatestHttpResponse *http.Response + Items []VpnSite +} + +// VpnSitesList ... +func (c VirtualWANsClient) VpnSitesList(ctx context.Context, id commonids.SubscriptionId) (result VpnSitesListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/vpnSites", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VpnSite `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// VpnSitesListComplete retrieves all the results into a single object +func (c VirtualWANsClient) VpnSitesListComplete(ctx context.Context, id commonids.SubscriptionId) (VpnSitesListCompleteResult, error) { + return c.VpnSitesListCompleteMatchingPredicate(ctx, id, VpnSiteOperationPredicate{}) +} + +// VpnSitesListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) VpnSitesListCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate VpnSiteOperationPredicate) (result VpnSitesListCompleteResult, err error) { + items := make([]VpnSite, 0) + + resp, err := c.VpnSitesList(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = VpnSitesListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/method_vpnsiteslistbyresourcegroup.go b/resource-manager/network/2024-01-01/virtualwans/method_vpnsiteslistbyresourcegroup.go new file mode 100644 index 00000000000..aee63f234ff --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/method_vpnsiteslistbyresourcegroup.go @@ -0,0 +1,93 @@ +package virtualwans + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnSitesListByResourceGroupOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]VpnSite +} + +type VpnSitesListByResourceGroupCompleteResult struct { + LatestHttpResponse *http.Response + Items []VpnSite +} + +// VpnSitesListByResourceGroup ... +func (c VirtualWANsClient) VpnSitesListByResourceGroup(ctx context.Context, id commonids.ResourceGroupId) (result VpnSitesListByResourceGroupOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/vpnSites", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]VpnSite `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// VpnSitesListByResourceGroupComplete retrieves all the results into a single object +func (c VirtualWANsClient) VpnSitesListByResourceGroupComplete(ctx context.Context, id commonids.ResourceGroupId) (VpnSitesListByResourceGroupCompleteResult, error) { + return c.VpnSitesListByResourceGroupCompleteMatchingPredicate(ctx, id, VpnSiteOperationPredicate{}) +} + +// VpnSitesListByResourceGroupCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VirtualWANsClient) VpnSitesListByResourceGroupCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate VpnSiteOperationPredicate) (result VpnSitesListByResourceGroupCompleteResult, err error) { + items := make([]VpnSite, 0) + + resp, err := c.VpnSitesListByResourceGroup(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = VpnSitesListByResourceGroupCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_aadauthenticationparameters.go b/resource-manager/network/2024-01-01/virtualwans/model_aadauthenticationparameters.go new file mode 100644 index 00000000000..b0d5e53c358 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_aadauthenticationparameters.go @@ -0,0 +1,10 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AadAuthenticationParameters struct { + AadAudience *string `json:"aadAudience,omitempty"` + AadIssuer *string `json:"aadIssuer,omitempty"` + AadTenant *string `json:"aadTenant,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_action.go b/resource-manager/network/2024-01-01/virtualwans/model_action.go new file mode 100644 index 00000000000..e3c73ef507d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_action.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Action struct { + Parameters *[]Parameter `json:"parameters,omitempty"` + Type *RouteMapActionType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_addressspace.go b/resource-manager/network/2024-01-01/virtualwans/model_addressspace.go new file mode 100644 index 00000000000..e1ac53861fc --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_addressspace.go @@ -0,0 +1,8 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AddressSpace struct { + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_applicationgatewaybackendaddress.go b/resource-manager/network/2024-01-01/virtualwans/model_applicationgatewaybackendaddress.go new file mode 100644 index 00000000000..51a23d1c2c5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_applicationgatewaybackendaddress.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddress struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_applicationgatewaybackendaddresspool.go b/resource-manager/network/2024-01-01/virtualwans/model_applicationgatewaybackendaddresspool.go new file mode 100644 index 00000000000..adfa8110618 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_applicationgatewaybackendaddresspool.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_applicationgatewaybackendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_applicationgatewaybackendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..c308084cb90 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_applicationgatewaybackendaddresspoolpropertiesformat.go @@ -0,0 +1,10 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPoolPropertiesFormat struct { + BackendAddresses *[]ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"` + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_applicationgatewayipconfiguration.go b/resource-manager/network/2024-01-01/virtualwans/model_applicationgatewayipconfiguration.go new file mode 100644 index 00000000000..184f4db35ed --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_applicationgatewayipconfiguration.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_applicationgatewayipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_applicationgatewayipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..96ab63c3c70 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_applicationgatewayipconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/virtualwans/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..8df94828320 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..0db023773ff --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_backendaddresspool.go b/resource-manager/network/2024-01-01/virtualwans/model_backendaddresspool.go new file mode 100644 index 00000000000..75b3239a673 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_backendaddresspool.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_backendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_backendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..210c422933e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_backendaddresspoolpropertiesformat.go @@ -0,0 +1,19 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPoolPropertiesFormat struct { + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + DrainPeriodInSeconds *int64 `json:"drainPeriodInSeconds,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancerBackendAddresses *[]LoadBalancerBackendAddress `json:"loadBalancerBackendAddresses,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + Location *string `json:"location,omitempty"` + OutboundRule *SubResource `json:"outboundRule,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SyncMode *SyncMode `json:"syncMode,omitempty"` + TunnelInterfaces *[]GatewayLoadBalancerTunnelInterface `json:"tunnelInterfaces,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_bgpconnection.go b/resource-manager/network/2024-01-01/virtualwans/model_bgpconnection.go new file mode 100644 index 00000000000..13c77fe2225 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_bgpconnection.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BgpConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BgpConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_bgpconnectionproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_bgpconnectionproperties.go new file mode 100644 index 00000000000..4666e421984 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_bgpconnectionproperties.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BgpConnectionProperties struct { + ConnectionState *HubBgpConnectionStatus `json:"connectionState,omitempty"` + HubVirtualNetworkConnection *SubResource `json:"hubVirtualNetworkConnection,omitempty"` + PeerAsn *int64 `json:"peerAsn,omitempty"` + PeerIP *string `json:"peerIp,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_bgpsettings.go b/resource-manager/network/2024-01-01/virtualwans/model_bgpsettings.go new file mode 100644 index 00000000000..5f96d5acf14 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_bgpsettings.go @@ -0,0 +1,11 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BgpSettings struct { + Asn *int64 `json:"asn,omitempty"` + BgpPeeringAddress *string `json:"bgpPeeringAddress,omitempty"` + BgpPeeringAddresses *[]IPConfigurationBgpPeeringAddress `json:"bgpPeeringAddresses,omitempty"` + PeerWeight *int64 `json:"peerWeight,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_criterion.go b/resource-manager/network/2024-01-01/virtualwans/model_criterion.go new file mode 100644 index 00000000000..e7249b64d4d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_criterion.go @@ -0,0 +1,11 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Criterion struct { + AsPath *[]string `json:"asPath,omitempty"` + Community *[]string `json:"community,omitempty"` + MatchCondition *RouteMapMatchCondition `json:"matchCondition,omitempty"` + RoutePrefix *[]string `json:"routePrefix,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_customdnsconfigpropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_customdnsconfigpropertiesformat.go new file mode 100644 index 00000000000..557a5a01a6d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_customdnsconfigpropertiesformat.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomDnsConfigPropertiesFormat struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_ddossettings.go b/resource-manager/network/2024-01-01/virtualwans/model_ddossettings.go new file mode 100644 index 00000000000..82eef09dc62 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_ddossettings.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettings struct { + DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"` + ProtectionMode *DdosSettingsProtectionMode `json:"protectionMode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_delegation.go b/resource-manager/network/2024-01-01/virtualwans/model_delegation.go new file mode 100644 index 00000000000..55eeb1fff81 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_delegation.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Delegation struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceDelegationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_deviceproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_deviceproperties.go new file mode 100644 index 00000000000..9c255349846 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_deviceproperties.go @@ -0,0 +1,10 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeviceProperties struct { + DeviceModel *string `json:"deviceModel,omitempty"` + DeviceVendor *string `json:"deviceVendor,omitempty"` + LinkSpeedInMbps *int64 `json:"linkSpeedInMbps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_effectiveroutemaproute.go b/resource-manager/network/2024-01-01/virtualwans/model_effectiveroutemaproute.go new file mode 100644 index 00000000000..3a565a687e8 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_effectiveroutemaproute.go @@ -0,0 +1,10 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type EffectiveRouteMapRoute struct { + AsPath *string `json:"asPath,omitempty"` + BgpCommunities *string `json:"bgpCommunities,omitempty"` + Prefix *string `json:"prefix,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_effectiveroutemaproutelist.go b/resource-manager/network/2024-01-01/virtualwans/model_effectiveroutemaproutelist.go new file mode 100644 index 00000000000..326acde877b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_effectiveroutemaproutelist.go @@ -0,0 +1,8 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type EffectiveRouteMapRouteList struct { + Value *[]EffectiveRouteMapRoute `json:"value,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_effectiveroutesparameters.go b/resource-manager/network/2024-01-01/virtualwans/model_effectiveroutesparameters.go new file mode 100644 index 00000000000..dab27997ab5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_effectiveroutesparameters.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type EffectiveRoutesParameters struct { + ResourceId *string `json:"resourceId,omitempty"` + VirtualWanResourceType *string `json:"virtualWanResourceType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_flowlog.go b/resource-manager/network/2024-01-01/virtualwans/model_flowlog.go new file mode 100644 index 00000000000..bc406232e6a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_flowlog.go @@ -0,0 +1,19 @@ +package virtualwans + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLog struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FlowLogPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/virtualwans/model_flowlogformatparameters.go new file mode 100644 index 00000000000..3b64c7c567a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_flowlogpropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_flowlogpropertiesformat.go new file mode 100644 index 00000000000..61a32b4aded --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_flowlogpropertiesformat.go @@ -0,0 +1,15 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogPropertiesFormat struct { + Enabled *bool `json:"enabled,omitempty"` + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` + TargetResourceGuid *string `json:"targetResourceGuid,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_frontendipconfiguration.go b/resource-manager/network/2024-01-01/virtualwans/model_frontendipconfiguration.go new file mode 100644 index 00000000000..b9c97d1e6a4 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_frontendipconfiguration.go @@ -0,0 +1,17 @@ +package virtualwans + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_frontendipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_frontendipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..62b1635a8ed --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_frontendipconfigurationpropertiesformat.go @@ -0,0 +1,19 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfigurationPropertiesFormat struct { + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + InboundNatPools *[]SubResource `json:"inboundNatPools,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_gatewaycustombgpipaddressipconfiguration.go b/resource-manager/network/2024-01-01/virtualwans/model_gatewaycustombgpipaddressipconfiguration.go new file mode 100644 index 00000000000..81c747c0a4a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_gatewaycustombgpipaddressipconfiguration.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayCustomBgpIPAddressIPConfiguration struct { + CustomBgpIPAddress string `json:"customBgpIpAddress"` + IPConfigurationId string `json:"ipConfigurationId"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_gatewayloadbalancertunnelinterface.go b/resource-manager/network/2024-01-01/virtualwans/model_gatewayloadbalancertunnelinterface.go new file mode 100644 index 00000000000..96c5d2b39e5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_gatewayloadbalancertunnelinterface.go @@ -0,0 +1,11 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayLoadBalancerTunnelInterface struct { + Identifier *int64 `json:"identifier,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *GatewayLoadBalancerTunnelProtocol `json:"protocol,omitempty"` + Type *GatewayLoadBalancerTunnelInterfaceType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_getinboundroutesparameters.go b/resource-manager/network/2024-01-01/virtualwans/model_getinboundroutesparameters.go new file mode 100644 index 00000000000..1407618f660 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_getinboundroutesparameters.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetInboundRoutesParameters struct { + ConnectionType *string `json:"connectionType,omitempty"` + ResourceUri *string `json:"resourceUri,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_getoutboundroutesparameters.go b/resource-manager/network/2024-01-01/virtualwans/model_getoutboundroutesparameters.go new file mode 100644 index 00000000000..19a89a55b10 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_getoutboundroutesparameters.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOutboundRoutesParameters struct { + ConnectionType *string `json:"connectionType,omitempty"` + ResourceUri *string `json:"resourceUri,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_getvpnsitesconfigurationrequest.go b/resource-manager/network/2024-01-01/virtualwans/model_getvpnsitesconfigurationrequest.go new file mode 100644 index 00000000000..0dd233101ce --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_getvpnsitesconfigurationrequest.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetVpnSitesConfigurationRequest struct { + OutputBlobSasUrl string `json:"outputBlobSasUrl"` + VpnSites *[]string `json:"vpnSites,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_hubipconfiguration.go b/resource-manager/network/2024-01-01/virtualwans/model_hubipconfiguration.go new file mode 100644 index 00000000000..c666224646f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_hubipconfiguration.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HubIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *HubIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_hubipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_hubipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..86c4674860b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_hubipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HubIPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_hubroute.go b/resource-manager/network/2024-01-01/virtualwans/model_hubroute.go new file mode 100644 index 00000000000..bc12eef1a4a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_hubroute.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HubRoute struct { + DestinationType string `json:"destinationType"` + Destinations []string `json:"destinations"` + Name string `json:"name"` + NextHop string `json:"nextHop"` + NextHopType string `json:"nextHopType"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_hubroutetable.go b/resource-manager/network/2024-01-01/virtualwans/model_hubroutetable.go new file mode 100644 index 00000000000..1214fb071b3 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_hubroutetable.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HubRouteTable struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *HubRouteTableProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_hubroutetableproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_hubroutetableproperties.go new file mode 100644 index 00000000000..32d33bc1ec9 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_hubroutetableproperties.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HubRouteTableProperties struct { + AssociatedConnections *[]string `json:"associatedConnections,omitempty"` + Labels *[]string `json:"labels,omitempty"` + PropagatingConnections *[]string `json:"propagatingConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Routes *[]HubRoute `json:"routes,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_hubvirtualnetworkconnection.go b/resource-manager/network/2024-01-01/virtualwans/model_hubvirtualnetworkconnection.go new file mode 100644 index 00000000000..41f20a0a732 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_hubvirtualnetworkconnection.go @@ -0,0 +1,11 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HubVirtualNetworkConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *HubVirtualNetworkConnectionProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_hubvirtualnetworkconnectionproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_hubvirtualnetworkconnectionproperties.go new file mode 100644 index 00000000000..83313e30ed5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_hubvirtualnetworkconnectionproperties.go @@ -0,0 +1,13 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HubVirtualNetworkConnectionProperties struct { + AllowHubToRemoteVnetTransit *bool `json:"allowHubToRemoteVnetTransit,omitempty"` + AllowRemoteVnetToUseHubVnetGateways *bool `json:"allowRemoteVnetToUseHubVnetGateways,omitempty"` + EnableInternetSecurity *bool `json:"enableInternetSecurity,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RemoteVirtualNetwork *SubResource `json:"remoteVirtualNetwork,omitempty"` + RoutingConfiguration *RoutingConfiguration `json:"routingConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_inboundnatrule.go b/resource-manager/network/2024-01-01/virtualwans/model_inboundnatrule.go new file mode 100644 index 00000000000..eee8ea195cf --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_inboundnatrule.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundNatRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_inboundnatrulepropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_inboundnatrulepropertiesformat.go new file mode 100644 index 00000000000..17b64e3d468 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_inboundnatrulepropertiesformat.go @@ -0,0 +1,19 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendIPConfiguration *NetworkInterfaceIPConfiguration `json:"backendIPConfiguration,omitempty"` + BackendPort *int64 `json:"backendPort,omitempty"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + FrontendPortRangeEnd *int64 `json:"frontendPortRangeEnd,omitempty"` + FrontendPortRangeStart *int64 `json:"frontendPortRangeStart,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol *TransportProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_ipconfiguration.go b/resource-manager/network/2024-01-01/virtualwans/model_ipconfiguration.go new file mode 100644 index 00000000000..1241b6c2c3e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_ipconfiguration.go @@ -0,0 +1,11 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_ipconfigurationbgppeeringaddress.go b/resource-manager/network/2024-01-01/virtualwans/model_ipconfigurationbgppeeringaddress.go new file mode 100644 index 00000000000..fbaabbf7c1b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_ipconfigurationbgppeeringaddress.go @@ -0,0 +1,11 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationBgpPeeringAddress struct { + CustomBgpIPAddresses *[]string `json:"customBgpIpAddresses,omitempty"` + DefaultBgpIPAddresses *[]string `json:"defaultBgpIpAddresses,omitempty"` + IPconfigurationId *string `json:"ipconfigurationId,omitempty"` + TunnelIPAddresses *[]string `json:"tunnelIpAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_ipconfigurationprofile.go b/resource-manager/network/2024-01-01/virtualwans/model_ipconfigurationprofile.go new file mode 100644 index 00000000000..a710fe9c7f0 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_ipconfigurationprofile.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationProfilePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_ipconfigurationprofilepropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_ipconfigurationprofilepropertiesformat.go new file mode 100644 index 00000000000..6b808468c3d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_ipconfigurationprofilepropertiesformat.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfilePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_ipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_ipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..58c575ad69f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_ipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_ipsecpolicy.go b/resource-manager/network/2024-01-01/virtualwans/model_ipsecpolicy.go new file mode 100644 index 00000000000..02267e6b24d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_ipsecpolicy.go @@ -0,0 +1,15 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPsecPolicy struct { + DhGroup DhGroup `json:"dhGroup"` + IPsecEncryption IPsecEncryption `json:"ipsecEncryption"` + IPsecIntegrity IPsecIntegrity `json:"ipsecIntegrity"` + IkeEncryption IkeEncryption `json:"ikeEncryption"` + IkeIntegrity IkeIntegrity `json:"ikeIntegrity"` + PfsGroup PfsGroup `json:"pfsGroup"` + SaDataSizeKilobytes int64 `json:"saDataSizeKilobytes"` + SaLifeTimeSeconds int64 `json:"saLifeTimeSeconds"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_iptag.go b/resource-manager/network/2024-01-01/virtualwans/model_iptag.go new file mode 100644 index 00000000000..de05365d519 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_iptag.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPTag struct { + IPTagType *string `json:"ipTagType,omitempty"` + Tag *string `json:"tag,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_loadbalancerbackendaddress.go b/resource-manager/network/2024-01-01/virtualwans/model_loadbalancerbackendaddress.go new file mode 100644 index 00000000000..37820fb13bd --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_loadbalancerbackendaddress.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddress struct { + Name *string `json:"name,omitempty"` + Properties *LoadBalancerBackendAddressPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_loadbalancerbackendaddresspropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_loadbalancerbackendaddresspropertiesformat.go new file mode 100644 index 00000000000..3f6629b67eb --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_loadbalancerbackendaddresspropertiesformat.go @@ -0,0 +1,14 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPropertiesFormat struct { + AdminState *LoadBalancerBackendAddressAdminState `json:"adminState,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + InboundNatRulesPortMapping *[]NatRulePortMapping `json:"inboundNatRulesPortMapping,omitempty"` + LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIPConfiguration,omitempty"` + NetworkInterfaceIPConfiguration *SubResource `json:"networkInterfaceIPConfiguration,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_natgateway.go b/resource-manager/network/2024-01-01/virtualwans/model_natgateway.go new file mode 100644 index 00000000000..7e1a4539e08 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_natgateway.go @@ -0,0 +1,20 @@ +package virtualwans + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"` + Sku *NatGatewaySku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_natgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_natgatewaypropertiesformat.go new file mode 100644 index 00000000000..7f5732e1cc0 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_natgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayPropertiesFormat struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]SubResource `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_natgatewaysku.go b/resource-manager/network/2024-01-01/virtualwans/model_natgatewaysku.go new file mode 100644 index 00000000000..4cd49e069a9 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_natgatewaysku.go @@ -0,0 +1,8 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySku struct { + Name *NatGatewaySkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_natruleportmapping.go b/resource-manager/network/2024-01-01/virtualwans/model_natruleportmapping.go new file mode 100644 index 00000000000..2ce8b302da3 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_natruleportmapping.go @@ -0,0 +1,10 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulePortMapping struct { + BackendPort *int64 `json:"backendPort,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + InboundNatRuleName *string `json:"inboundNatRuleName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_networkinterface.go b/resource-manager/network/2024-01-01/virtualwans/model_networkinterface.go new file mode 100644 index 00000000000..b6b5bf73332 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_networkinterface.go @@ -0,0 +1,19 @@ +package virtualwans + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterface struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfacePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_networkinterfacednssettings.go b/resource-manager/network/2024-01-01/virtualwans/model_networkinterfacednssettings.go new file mode 100644 index 00000000000..d0dcb411a3e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_networkinterfacednssettings.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceDnsSettings struct { + AppliedDnsServers *[]string `json:"appliedDnsServers,omitempty"` + DnsServers *[]string `json:"dnsServers,omitempty"` + InternalDnsNameLabel *string `json:"internalDnsNameLabel,omitempty"` + InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty"` + InternalFqdn *string `json:"internalFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_networkinterfaceipconfiguration.go b/resource-manager/network/2024-01-01/virtualwans/model_networkinterfaceipconfiguration.go new file mode 100644 index 00000000000..5c0d1edc7ad --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_networkinterfaceipconfiguration.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go new file mode 100644 index 00000000000..9ed5a87eb91 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go @@ -0,0 +1,10 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties struct { + Fqdns *[]string `json:"fqdns,omitempty"` + GroupId *string `json:"groupId,omitempty"` + RequiredMemberName *string `json:"requiredMemberName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_networkinterfaceipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_networkinterfaceipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..09f53d0138b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_networkinterfaceipconfigurationpropertiesformat.go @@ -0,0 +1,22 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPropertiesFormat struct { + ApplicationGatewayBackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"applicationGatewayBackendAddressPools,omitempty"` + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + LoadBalancerBackendAddressPools *[]BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"` + LoadBalancerInboundNatRules *[]InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressPrefixLength *int64 `json:"privateIPAddressPrefixLength,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + PrivateLinkConnectionProperties *NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties `json:"privateLinkConnectionProperties,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` + VirtualNetworkTaps *[]VirtualNetworkTap `json:"virtualNetworkTaps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_networkinterfacepropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_networkinterfacepropertiesformat.go new file mode 100644 index 00000000000..eb6875aa05e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_networkinterfacepropertiesformat.go @@ -0,0 +1,29 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfacePropertiesFormat struct { + AuxiliaryMode *NetworkInterfaceAuxiliaryMode `json:"auxiliaryMode,omitempty"` + AuxiliarySku *NetworkInterfaceAuxiliarySku `json:"auxiliarySku,omitempty"` + DisableTcpStateTracking *bool `json:"disableTcpStateTracking,omitempty"` + DnsSettings *NetworkInterfaceDnsSettings `json:"dnsSettings,omitempty"` + DscpConfiguration *SubResource `json:"dscpConfiguration,omitempty"` + EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"` + EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"` + HostedWorkloads *[]string `json:"hostedWorkloads,omitempty"` + IPConfigurations *[]NetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + MacAddress *string `json:"macAddress,omitempty"` + MigrationPhase *NetworkInterfaceMigrationPhase `json:"migrationPhase,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + NicType *NetworkInterfaceNicType `json:"nicType,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkService *PrivateLinkService `json:"privateLinkService,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + TapConfigurations *[]NetworkInterfaceTapConfiguration `json:"tapConfigurations,omitempty"` + VirtualMachine *SubResource `json:"virtualMachine,omitempty"` + VnetEncryptionSupported *bool `json:"vnetEncryptionSupported,omitempty"` + WorkloadType *string `json:"workloadType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_networkinterfacetapconfiguration.go b/resource-manager/network/2024-01-01/virtualwans/model_networkinterfacetapconfiguration.go new file mode 100644 index 00000000000..d12531c2798 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_networkinterfacetapconfiguration.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceTapConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_networkinterfacetapconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_networkinterfacetapconfigurationpropertiesformat.go new file mode 100644 index 00000000000..70fb9b73ddb --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_networkinterfacetapconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualNetworkTap *VirtualNetworkTap `json:"virtualNetworkTap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_networksecuritygroup.go b/resource-manager/network/2024-01-01/virtualwans/model_networksecuritygroup.go new file mode 100644 index 00000000000..c941605df94 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_networksecuritygroup.go @@ -0,0 +1,14 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_networksecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_networksecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..54526eb4ea0 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_networksecuritygrouppropertiesformat.go @@ -0,0 +1,15 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupPropertiesFormat struct { + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + FlowLogs *[]FlowLog `json:"flowLogs,omitempty"` + FlushConnection *bool `json:"flushConnection,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_networkvirtualapplianceconnection.go b/resource-manager/network/2024-01-01/virtualwans/model_networkvirtualapplianceconnection.go new file mode 100644 index 00000000000..903d78680e7 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_networkvirtualapplianceconnection.go @@ -0,0 +1,10 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkVirtualApplianceConnection struct { + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkVirtualApplianceConnectionProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_networkvirtualapplianceconnectionproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_networkvirtualapplianceconnectionproperties.go new file mode 100644 index 00000000000..bfe5ec7a317 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_networkvirtualapplianceconnectionproperties.go @@ -0,0 +1,14 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkVirtualApplianceConnectionProperties struct { + Asn *int64 `json:"asn,omitempty"` + BgpPeerAddress *[]string `json:"bgpPeerAddress,omitempty"` + EnableInternetSecurity *bool `json:"enableInternetSecurity,omitempty"` + Name *string `json:"name,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RoutingConfiguration *RoutingConfiguration `json:"routingConfiguration,omitempty"` + TunnelIdentifier *int64 `json:"tunnelIdentifier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_o365breakoutcategorypolicies.go b/resource-manager/network/2024-01-01/virtualwans/model_o365breakoutcategorypolicies.go new file mode 100644 index 00000000000..0a9ed71a50b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_o365breakoutcategorypolicies.go @@ -0,0 +1,10 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type O365BreakOutCategoryPolicies struct { + Allow *bool `json:"allow,omitempty"` + Default *bool `json:"default,omitempty"` + Optimize *bool `json:"optimize,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_o365policyproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_o365policyproperties.go new file mode 100644 index 00000000000..eeae991ee3f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_o365policyproperties.go @@ -0,0 +1,8 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type O365PolicyProperties struct { + BreakOutCategories *O365BreakOutCategoryPolicies `json:"breakOutCategories,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_p2sconnectionconfiguration.go b/resource-manager/network/2024-01-01/virtualwans/model_p2sconnectionconfiguration.go new file mode 100644 index 00000000000..08a6a452843 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_p2sconnectionconfiguration.go @@ -0,0 +1,11 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type P2SConnectionConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *P2SConnectionConfigurationProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_p2sconnectionconfigurationproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_p2sconnectionconfigurationproperties.go new file mode 100644 index 00000000000..a5558cf1e48 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_p2sconnectionconfigurationproperties.go @@ -0,0 +1,13 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type P2SConnectionConfigurationProperties struct { + ConfigurationPolicyGroupAssociations *[]SubResource `json:"configurationPolicyGroupAssociations,omitempty"` + EnableInternetSecurity *bool `json:"enableInternetSecurity,omitempty"` + PreviousConfigurationPolicyGroupAssociations *[]VpnServerConfigurationPolicyGroup `json:"previousConfigurationPolicyGroupAssociations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RoutingConfiguration *RoutingConfiguration `json:"routingConfiguration,omitempty"` + VpnClientAddressPool *AddressSpace `json:"vpnClientAddressPool,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_p2svpngateway.go b/resource-manager/network/2024-01-01/virtualwans/model_p2svpngateway.go new file mode 100644 index 00000000000..25f63025e39 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_p2svpngateway.go @@ -0,0 +1,14 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type P2SVpnGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *P2SVpnGatewayProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_p2svpngatewayproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_p2svpngatewayproperties.go new file mode 100644 index 00000000000..d337b304bbd --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_p2svpngatewayproperties.go @@ -0,0 +1,15 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type P2SVpnGatewayProperties struct { + CustomDnsServers *[]string `json:"customDnsServers,omitempty"` + IsRoutingPreferenceInternet *bool `json:"isRoutingPreferenceInternet,omitempty"` + P2SConnectionConfigurations *[]P2SConnectionConfiguration `json:"p2SConnectionConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualHub *SubResource `json:"virtualHub,omitempty"` + VpnClientConnectionHealth *VpnClientConnectionHealth `json:"vpnClientConnectionHealth,omitempty"` + VpnGatewayScaleUnit *int64 `json:"vpnGatewayScaleUnit,omitempty"` + VpnServerConfiguration *SubResource `json:"vpnServerConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_parameter.go b/resource-manager/network/2024-01-01/virtualwans/model_parameter.go new file mode 100644 index 00000000000..d1619c1138c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_parameter.go @@ -0,0 +1,10 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Parameter struct { + AsPath *[]string `json:"asPath,omitempty"` + Community *[]string `json:"community,omitempty"` + RoutePrefix *[]string `json:"routePrefix,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_peerroute.go b/resource-manager/network/2024-01-01/virtualwans/model_peerroute.go new file mode 100644 index 00000000000..c03bdbe8722 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_peerroute.go @@ -0,0 +1,14 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PeerRoute struct { + AsPath *string `json:"asPath,omitempty"` + LocalAddress *string `json:"localAddress,omitempty"` + Network *string `json:"network,omitempty"` + NextHop *string `json:"nextHop,omitempty"` + Origin *string `json:"origin,omitempty"` + SourcePeer *string `json:"sourcePeer,omitempty"` + Weight *int64 `json:"weight,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_privateendpoint.go b/resource-manager/network/2024-01-01/virtualwans/model_privateendpoint.go new file mode 100644 index 00000000000..d493c3ed57a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_privateendpoint.go @@ -0,0 +1,19 @@ +package virtualwans + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpoint struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_privateendpointconnection.go b/resource-manager/network/2024-01-01/virtualwans/model_privateendpointconnection.go new file mode 100644 index 00000000000..191623acf98 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_privateendpointconnection.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_privateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_privateendpointconnectionproperties.go new file mode 100644 index 00000000000..f54855d1288 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_privateendpointconnectionproperties.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateEndpointLocation *string `json:"privateEndpointLocation,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_privateendpointipconfiguration.go b/resource-manager/network/2024-01-01/virtualwans/model_privateendpointipconfiguration.go new file mode 100644 index 00000000000..053d067b685 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_privateendpointipconfiguration.go @@ -0,0 +1,11 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_privateendpointipconfigurationproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_privateendpointipconfigurationproperties.go new file mode 100644 index 00000000000..d6794440033 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_privateendpointipconfigurationproperties.go @@ -0,0 +1,10 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfigurationProperties struct { + GroupId *string `json:"groupId,omitempty"` + MemberName *string `json:"memberName,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_privateendpointproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_privateendpointproperties.go new file mode 100644 index 00000000000..3af5e8a64e0 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_privateendpointproperties.go @@ -0,0 +1,16 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointProperties struct { + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + CustomDnsConfigs *[]CustomDnsConfigPropertiesFormat `json:"customDnsConfigs,omitempty"` + CustomNetworkInterfaceName *string `json:"customNetworkInterfaceName,omitempty"` + IPConfigurations *[]PrivateEndpointIPConfiguration `json:"ipConfigurations,omitempty"` + ManualPrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"manualPrivateLinkServiceConnections,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"privateLinkServiceConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_privatelinkservice.go b/resource-manager/network/2024-01-01/virtualwans/model_privatelinkservice.go new file mode 100644 index 00000000000..79f0f888953 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_privatelinkservice.go @@ -0,0 +1,19 @@ +package virtualwans + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkService struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_privatelinkserviceconnection.go b/resource-manager/network/2024-01-01/virtualwans/model_privatelinkserviceconnection.go new file mode 100644 index 00000000000..b584feab35a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_privatelinkserviceconnection.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_privatelinkserviceconnectionproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_privatelinkserviceconnectionproperties.go new file mode 100644 index 00000000000..5875bd90e15 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_privatelinkserviceconnectionproperties.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionProperties struct { + GroupIds *[]string `json:"groupIds,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + PrivateLinkServiceId *string `json:"privateLinkServiceId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestMessage *string `json:"requestMessage,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_privatelinkserviceconnectionstate.go b/resource-manager/network/2024-01-01/virtualwans/model_privatelinkserviceconnectionstate.go new file mode 100644 index 00000000000..c1664caec07 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_privatelinkserviceconnectionstate.go @@ -0,0 +1,10 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionState struct { + ActionsRequired *string `json:"actionsRequired,omitempty"` + Description *string `json:"description,omitempty"` + Status *string `json:"status,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_privatelinkserviceipconfiguration.go b/resource-manager/network/2024-01-01/virtualwans/model_privatelinkserviceipconfiguration.go new file mode 100644 index 00000000000..3558cb8095c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_privatelinkserviceipconfiguration.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_privatelinkserviceipconfigurationproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_privatelinkserviceipconfigurationproperties.go new file mode 100644 index 00000000000..31251b67685 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_privatelinkserviceipconfigurationproperties.go @@ -0,0 +1,13 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_privatelinkserviceproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_privatelinkserviceproperties.go new file mode 100644 index 00000000000..286611e0560 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_privatelinkserviceproperties.go @@ -0,0 +1,17 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceProperties struct { + Alias *string `json:"alias,omitempty"` + AutoApproval *ResourceSet `json:"autoApproval,omitempty"` + EnableProxyProtocol *bool `json:"enableProxyProtocol,omitempty"` + Fqdns *[]string `json:"fqdns,omitempty"` + IPConfigurations *[]PrivateLinkServiceIPConfiguration `json:"ipConfigurations,omitempty"` + LoadBalancerFrontendIPConfigurations *[]FrontendIPConfiguration `json:"loadBalancerFrontendIpConfigurations,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Visibility *ResourceSet `json:"visibility,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_propagatedroutetable.go b/resource-manager/network/2024-01-01/virtualwans/model_propagatedroutetable.go new file mode 100644 index 00000000000..af45ddbedf1 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_propagatedroutetable.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PropagatedRouteTable struct { + Ids *[]SubResource `json:"ids,omitempty"` + Labels *[]string `json:"labels,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_publicipaddress.go b/resource-manager/network/2024-01-01/virtualwans/model_publicipaddress.go new file mode 100644 index 00000000000..8bd2fa402a4 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_publicipaddress.go @@ -0,0 +1,22 @@ +package virtualwans + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddress struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PublicIPAddressPropertiesFormat `json:"properties,omitempty"` + Sku *PublicIPAddressSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_publicipaddressdnssettings.go b/resource-manager/network/2024-01-01/virtualwans/model_publicipaddressdnssettings.go new file mode 100644 index 00000000000..2a95851cb0c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_publicipaddressdnssettings.go @@ -0,0 +1,11 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressDnsSettings struct { + DomainNameLabel *string `json:"domainNameLabel,omitempty"` + DomainNameLabelScope *PublicIPAddressDnsSettingsDomainNameLabelScope `json:"domainNameLabelScope,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + ReverseFqdn *string `json:"reverseFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_publicipaddresspropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_publicipaddresspropertiesformat.go new file mode 100644 index 00000000000..48fecb8ae90 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_publicipaddresspropertiesformat.go @@ -0,0 +1,23 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressPropertiesFormat struct { + DdosSettings *DdosSettings `json:"ddosSettings,omitempty"` + DeleteOption *DeleteOptions `json:"deleteOption,omitempty"` + DnsSettings *PublicIPAddressDnsSettings `json:"dnsSettings,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty"` + IPTags *[]IPTag `json:"ipTags,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + LinkedPublicIPAddress *PublicIPAddress `json:"linkedPublicIPAddress,omitempty"` + MigrationPhase *PublicIPAddressMigrationPhase `json:"migrationPhase,omitempty"` + NatGateway *NatGateway `json:"natGateway,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"` + PublicIPAllocationMethod *IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServicePublicIPAddress *PublicIPAddress `json:"servicePublicIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_publicipaddresssku.go b/resource-manager/network/2024-01-01/virtualwans/model_publicipaddresssku.go new file mode 100644 index 00000000000..4fcf5fb0e8f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_publicipaddresssku.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressSku struct { + Name *PublicIPAddressSkuName `json:"name,omitempty"` + Tier *PublicIPAddressSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_radiusserver.go b/resource-manager/network/2024-01-01/virtualwans/model_radiusserver.go new file mode 100644 index 00000000000..858a67625c9 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_radiusserver.go @@ -0,0 +1,10 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RadiusServer struct { + RadiusServerAddress string `json:"radiusServerAddress"` + RadiusServerScore *int64 `json:"radiusServerScore,omitempty"` + RadiusServerSecret *string `json:"radiusServerSecret,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_resourcenavigationlink.go b/resource-manager/network/2024-01-01/virtualwans/model_resourcenavigationlink.go new file mode 100644 index 00000000000..b0d119588a3 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_resourcenavigationlink.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ResourceNavigationLinkFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_resourcenavigationlinkformat.go b/resource-manager/network/2024-01-01/virtualwans/model_resourcenavigationlinkformat.go new file mode 100644 index 00000000000..9443c31d227 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_resourcenavigationlinkformat.go @@ -0,0 +1,10 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLinkFormat struct { + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_resourceset.go b/resource-manager/network/2024-01-01/virtualwans/model_resourceset.go new file mode 100644 index 00000000000..f8d5a3c0775 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_resourceset.go @@ -0,0 +1,8 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceSet struct { + Subscriptions *[]string `json:"subscriptions,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/virtualwans/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..57394822b9d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_route.go b/resource-manager/network/2024-01-01/virtualwans/model_route.go new file mode 100644 index 00000000000..5ae4b7a4ff8 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_route.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Route struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RoutePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_routemap.go b/resource-manager/network/2024-01-01/virtualwans/model_routemap.go new file mode 100644 index 00000000000..6c5941f5a4c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_routemap.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteMap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteMapProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_routemapproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_routemapproperties.go new file mode 100644 index 00000000000..a4a019429ff --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_routemapproperties.go @@ -0,0 +1,11 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteMapProperties struct { + AssociatedInboundConnections *[]string `json:"associatedInboundConnections,omitempty"` + AssociatedOutboundConnections *[]string `json:"associatedOutboundConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Rules *[]RouteMapRule `json:"rules,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_routemaprule.go b/resource-manager/network/2024-01-01/virtualwans/model_routemaprule.go new file mode 100644 index 00000000000..cdeacc9a78b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_routemaprule.go @@ -0,0 +1,11 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteMapRule struct { + Actions *[]Action `json:"actions,omitempty"` + MatchCriteria *[]Criterion `json:"matchCriteria,omitempty"` + Name *string `json:"name,omitempty"` + NextStepIfMatched *NextStep `json:"nextStepIfMatched,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_routepropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_routepropertiesformat.go new file mode 100644 index 00000000000..51259038175 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_routepropertiesformat.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutePropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + HasBgpOverride *bool `json:"hasBgpOverride,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + NextHopType RouteNextHopType `json:"nextHopType"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_routetable.go b/resource-manager/network/2024-01-01/virtualwans/model_routetable.go new file mode 100644 index 00000000000..76a72a637be --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_routetable.go @@ -0,0 +1,14 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTable struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteTablePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_routetablepropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_routetablepropertiesformat.go new file mode 100644 index 00000000000..9a5454526a4 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_routetablepropertiesformat.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTablePropertiesFormat struct { + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Routes *[]Route `json:"routes,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_routingconfiguration.go b/resource-manager/network/2024-01-01/virtualwans/model_routingconfiguration.go new file mode 100644 index 00000000000..f4ca0018afa --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_routingconfiguration.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutingConfiguration struct { + AssociatedRouteTable *SubResource `json:"associatedRouteTable,omitempty"` + InboundRouteMap *SubResource `json:"inboundRouteMap,omitempty"` + OutboundRouteMap *SubResource `json:"outboundRouteMap,omitempty"` + PropagatedRouteTables *PropagatedRouteTable `json:"propagatedRouteTables,omitempty"` + VnetRoutes *VnetRoute `json:"vnetRoutes,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_routingintent.go b/resource-manager/network/2024-01-01/virtualwans/model_routingintent.go new file mode 100644 index 00000000000..537f1404f3d --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_routingintent.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutingIntent struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RoutingIntentProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_routingintentproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_routingintentproperties.go new file mode 100644 index 00000000000..38a3b8e4147 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_routingintentproperties.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutingIntentProperties struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RoutingPolicies *[]RoutingPolicy `json:"routingPolicies,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_routingpolicy.go b/resource-manager/network/2024-01-01/virtualwans/model_routingpolicy.go new file mode 100644 index 00000000000..cef221dbd58 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_routingpolicy.go @@ -0,0 +1,10 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutingPolicy struct { + Destinations []string `json:"destinations"` + Name string `json:"name"` + NextHop string `json:"nextHop"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_securityrule.go b/resource-manager/network/2024-01-01/virtualwans/model_securityrule.go new file mode 100644 index 00000000000..72e68599476 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_securityrule.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_securityrulepropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_securityrulepropertiesformat.go new file mode 100644 index 00000000000..547a37a71ce --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_securityrulepropertiesformat.go @@ -0,0 +1,23 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulePropertiesFormat struct { + Access SecurityRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction SecurityRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_serviceassociationlink.go b/resource-manager/network/2024-01-01/virtualwans/model_serviceassociationlink.go new file mode 100644 index 00000000000..0b2b5927b19 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_serviceassociationlink.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceAssociationLinkPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_serviceassociationlinkpropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_serviceassociationlinkpropertiesformat.go new file mode 100644 index 00000000000..1aa80542228 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_serviceassociationlinkpropertiesformat.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLinkPropertiesFormat struct { + AllowDelete *bool `json:"allowDelete,omitempty"` + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + Locations *[]string `json:"locations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_servicedelegationpropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_servicedelegationpropertiesformat.go new file mode 100644 index 00000000000..aaeb340b2c7 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_servicedelegationpropertiesformat.go @@ -0,0 +1,10 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceDelegationPropertiesFormat struct { + Actions *[]string `json:"actions,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_serviceendpointpolicy.go b/resource-manager/network/2024-01-01/virtualwans/model_serviceendpointpolicy.go new file mode 100644 index 00000000000..62b85e18cbf --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_serviceendpointpolicy.go @@ -0,0 +1,15 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Kind *string `json:"kind,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_serviceendpointpolicydefinition.go b/resource-manager/network/2024-01-01/virtualwans/model_serviceendpointpolicydefinition.go new file mode 100644 index 00000000000..886de873aea --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_serviceendpointpolicydefinition.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinition struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_serviceendpointpolicydefinitionpropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_serviceendpointpolicydefinitionpropertiesformat.go new file mode 100644 index 00000000000..433a85d2006 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_serviceendpointpolicydefinitionpropertiesformat.go @@ -0,0 +1,11 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionPropertiesFormat struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` + ServiceResources *[]string `json:"serviceResources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_serviceendpointpolicypropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_serviceendpointpolicypropertiesformat.go new file mode 100644 index 00000000000..6c09399b151 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_serviceendpointpolicypropertiesformat.go @@ -0,0 +1,13 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyPropertiesFormat struct { + ContextualServiceEndpointPolicies *[]string `json:"contextualServiceEndpointPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServiceAlias *string `json:"serviceAlias,omitempty"` + ServiceEndpointPolicyDefinitions *[]ServiceEndpointPolicyDefinition `json:"serviceEndpointPolicyDefinitions,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_serviceendpointpropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_serviceendpointpropertiesformat.go new file mode 100644 index 00000000000..f8ef284cbaa --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_serviceendpointpropertiesformat.go @@ -0,0 +1,11 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPropertiesFormat struct { + Locations *[]string `json:"locations,omitempty"` + NetworkIdentifier *SubResource `json:"networkIdentifier,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_staticroute.go b/resource-manager/network/2024-01-01/virtualwans/model_staticroute.go new file mode 100644 index 00000000000..c57fdb00cea --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_staticroute.go @@ -0,0 +1,10 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StaticRoute struct { + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + Name *string `json:"name,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_staticroutesconfig.go b/resource-manager/network/2024-01-01/virtualwans/model_staticroutesconfig.go new file mode 100644 index 00000000000..c286d119b66 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_staticroutesconfig.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StaticRoutesConfig struct { + PropagateStaticRoutes *bool `json:"propagateStaticRoutes,omitempty"` + VnetLocalRouteOverrideCriteria *VnetLocalRouteOverrideCriteria `json:"vnetLocalRouteOverrideCriteria,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_subnet.go b/resource-manager/network/2024-01-01/virtualwans/model_subnet.go new file mode 100644 index 00000000000..ecdd88e0207 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_subnet.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Subnet struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SubnetPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_subnetpropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_subnetpropertiesformat.go new file mode 100644 index 00000000000..99ccf399c44 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_subnetpropertiesformat.go @@ -0,0 +1,28 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + ApplicationGatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"applicationGatewayIPConfigurations,omitempty"` + DefaultOutboundAccess *bool `json:"defaultOutboundAccess,omitempty"` + Delegations *[]Delegation `json:"delegations,omitempty"` + IPAllocations *[]SubResource `json:"ipAllocations,omitempty"` + IPConfigurationProfiles *[]IPConfigurationProfile `json:"ipConfigurationProfiles,omitempty"` + IPConfigurations *[]IPConfiguration `json:"ipConfigurations,omitempty"` + NatGateway *SubResource `json:"natGateway,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + PrivateEndpointNetworkPolicies *VirtualNetworkPrivateEndpointNetworkPolicies `json:"privateEndpointNetworkPolicies,omitempty"` + PrivateEndpoints *[]PrivateEndpoint `json:"privateEndpoints,omitempty"` + PrivateLinkServiceNetworkPolicies *VirtualNetworkPrivateLinkServiceNetworkPolicies `json:"privateLinkServiceNetworkPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Purpose *string `json:"purpose,omitempty"` + ResourceNavigationLinks *[]ResourceNavigationLink `json:"resourceNavigationLinks,omitempty"` + RouteTable *RouteTable `json:"routeTable,omitempty"` + ServiceAssociationLinks *[]ServiceAssociationLink `json:"serviceAssociationLinks,omitempty"` + ServiceEndpointPolicies *[]ServiceEndpointPolicy `json:"serviceEndpointPolicies,omitempty"` + ServiceEndpoints *[]ServiceEndpointPropertiesFormat `json:"serviceEndpoints,omitempty"` + SharingScope *SharingScope `json:"sharingScope,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_subresource.go b/resource-manager/network/2024-01-01/virtualwans/model_subresource.go new file mode 100644 index 00000000000..9c238c85dff --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_subresource.go @@ -0,0 +1,8 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_tagsobject.go b/resource-manager/network/2024-01-01/virtualwans/model_tagsobject.go new file mode 100644 index 00000000000..1f55b0e7a00 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_tagsobject.go @@ -0,0 +1,8 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..1e6b8ac8e23 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..56d6e09676b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_trafficselectorpolicy.go b/resource-manager/network/2024-01-01/virtualwans/model_trafficselectorpolicy.go new file mode 100644 index 00000000000..09496a292fa --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_trafficselectorpolicy.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficSelectorPolicy struct { + LocalAddressRanges []string `json:"localAddressRanges"` + RemoteAddressRanges []string `json:"remoteAddressRanges"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_virtualhub.go b/resource-manager/network/2024-01-01/virtualwans/model_virtualhub.go new file mode 100644 index 00000000000..732daa9aecc --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_virtualhub.go @@ -0,0 +1,15 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHub struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Kind *string `json:"kind,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualHubProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_virtualhubeffectiveroute.go b/resource-manager/network/2024-01-01/virtualwans/model_virtualhubeffectiveroute.go new file mode 100644 index 00000000000..d46894da2a8 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_virtualhubeffectiveroute.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubEffectiveRoute struct { + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + AsPath *string `json:"asPath,omitempty"` + NextHopType *string `json:"nextHopType,omitempty"` + NextHops *[]string `json:"nextHops,omitempty"` + RouteOrigin *string `json:"routeOrigin,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_virtualhubeffectiveroutelist.go b/resource-manager/network/2024-01-01/virtualwans/model_virtualhubeffectiveroutelist.go new file mode 100644 index 00000000000..3ea5b7b15e4 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_virtualhubeffectiveroutelist.go @@ -0,0 +1,8 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubEffectiveRouteList struct { + Value *[]VirtualHubEffectiveRoute `json:"value,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_virtualhubproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_virtualhubproperties.go new file mode 100644 index 00000000000..9b119e8889f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_virtualhubproperties.go @@ -0,0 +1,29 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubProperties struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AllowBranchToBranchTraffic *bool `json:"allowBranchToBranchTraffic,omitempty"` + AzureFirewall *SubResource `json:"azureFirewall,omitempty"` + BgpConnections *[]SubResource `json:"bgpConnections,omitempty"` + ExpressRouteGateway *SubResource `json:"expressRouteGateway,omitempty"` + HubRoutingPreference *HubRoutingPreference `json:"hubRoutingPreference,omitempty"` + IPConfigurations *[]SubResource `json:"ipConfigurations,omitempty"` + P2SVpnGateway *SubResource `json:"p2SVpnGateway,omitempty"` + PreferredRoutingGateway *PreferredRoutingGateway `json:"preferredRoutingGateway,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RouteMaps *[]SubResource `json:"routeMaps,omitempty"` + RouteTable *VirtualHubRouteTable `json:"routeTable,omitempty"` + RoutingState *RoutingState `json:"routingState,omitempty"` + SecurityPartnerProvider *SubResource `json:"securityPartnerProvider,omitempty"` + SecurityProviderName *string `json:"securityProviderName,omitempty"` + Sku *string `json:"sku,omitempty"` + VirtualHubRouteTableV2s *[]VirtualHubRouteTableV2 `json:"virtualHubRouteTableV2s,omitempty"` + VirtualRouterAsn *int64 `json:"virtualRouterAsn,omitempty"` + VirtualRouterAutoScaleConfiguration *VirtualRouterAutoScaleConfiguration `json:"virtualRouterAutoScaleConfiguration,omitempty"` + VirtualRouterIPs *[]string `json:"virtualRouterIps,omitempty"` + VirtualWAN *SubResource `json:"virtualWan,omitempty"` + VpnGateway *SubResource `json:"vpnGateway,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_virtualhubroute.go b/resource-manager/network/2024-01-01/virtualwans/model_virtualhubroute.go new file mode 100644 index 00000000000..3b9b205ea1a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_virtualhubroute.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubRoute struct { + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_virtualhubroutetable.go b/resource-manager/network/2024-01-01/virtualwans/model_virtualhubroutetable.go new file mode 100644 index 00000000000..71ec2c0bca4 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_virtualhubroutetable.go @@ -0,0 +1,8 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubRouteTable struct { + Routes *[]VirtualHubRoute `json:"routes,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_virtualhubroutetablev2.go b/resource-manager/network/2024-01-01/virtualwans/model_virtualhubroutetablev2.go new file mode 100644 index 00000000000..50fa84c35f5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_virtualhubroutetablev2.go @@ -0,0 +1,11 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubRouteTableV2 struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualHubRouteTableV2Properties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_virtualhubroutetablev2properties.go b/resource-manager/network/2024-01-01/virtualwans/model_virtualhubroutetablev2properties.go new file mode 100644 index 00000000000..ed869d1c471 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_virtualhubroutetablev2properties.go @@ -0,0 +1,10 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubRouteTableV2Properties struct { + AttachedConnections *[]string `json:"attachedConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Routes *[]VirtualHubRouteV2 `json:"routes,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_virtualhubroutev2.go b/resource-manager/network/2024-01-01/virtualwans/model_virtualhubroutev2.go new file mode 100644 index 00000000000..a47739aa2a5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_virtualhubroutev2.go @@ -0,0 +1,11 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualHubRouteV2 struct { + DestinationType *string `json:"destinationType,omitempty"` + Destinations *[]string `json:"destinations,omitempty"` + NextHopType *string `json:"nextHopType,omitempty"` + NextHops *[]string `json:"nextHops,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_virtualnetworktap.go b/resource-manager/network/2024-01-01/virtualwans/model_virtualnetworktap.go new file mode 100644 index 00000000000..f7d80351ab5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_virtualnetworktap.go @@ -0,0 +1,14 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkTapPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_virtualnetworktappropertiesformat.go b/resource-manager/network/2024-01-01/virtualwans/model_virtualnetworktappropertiesformat.go new file mode 100644 index 00000000000..efca5566dad --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_virtualnetworktappropertiesformat.go @@ -0,0 +1,13 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapPropertiesFormat struct { + DestinationLoadBalancerFrontEndIPConfiguration *FrontendIPConfiguration `json:"destinationLoadBalancerFrontEndIPConfiguration,omitempty"` + DestinationNetworkInterfaceIPConfiguration *NetworkInterfaceIPConfiguration `json:"destinationNetworkInterfaceIPConfiguration,omitempty"` + DestinationPort *int64 `json:"destinationPort,omitempty"` + NetworkInterfaceTapConfigurations *[]NetworkInterfaceTapConfiguration `json:"networkInterfaceTapConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_virtualrouterautoscaleconfiguration.go b/resource-manager/network/2024-01-01/virtualwans/model_virtualrouterautoscaleconfiguration.go new file mode 100644 index 00000000000..4ce6be45420 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_virtualrouterautoscaleconfiguration.go @@ -0,0 +1,8 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualRouterAutoScaleConfiguration struct { + MinCapacity *int64 `json:"minCapacity,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_virtualwan.go b/resource-manager/network/2024-01-01/virtualwans/model_virtualwan.go new file mode 100644 index 00000000000..45691c81b74 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_virtualwan.go @@ -0,0 +1,14 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualWAN struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualWanProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_virtualwanproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_virtualwanproperties.go new file mode 100644 index 00000000000..65c2eb829cb --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_virtualwanproperties.go @@ -0,0 +1,15 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualWanProperties struct { + AllowBranchToBranchTraffic *bool `json:"allowBranchToBranchTraffic,omitempty"` + AllowVnetToVnetTraffic *bool `json:"allowVnetToVnetTraffic,omitempty"` + DisableVpnEncryption *bool `json:"disableVpnEncryption,omitempty"` + Office365LocalBreakoutCategory *OfficeTrafficCategory `json:"office365LocalBreakoutCategory,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Type *string `json:"type,omitempty"` + VirtualHubs *[]SubResource `json:"virtualHubs,omitempty"` + VpnSites *[]SubResource `json:"vpnSites,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_virtualwansecurityprovider.go b/resource-manager/network/2024-01-01/virtualwans/model_virtualwansecurityprovider.go new file mode 100644 index 00000000000..d41346bc4a9 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_virtualwansecurityprovider.go @@ -0,0 +1,10 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualWanSecurityProvider struct { + Name *string `json:"name,omitempty"` + Type *VirtualWanSecurityProviderType `json:"type,omitempty"` + Url *string `json:"url,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_virtualwansecurityproviders.go b/resource-manager/network/2024-01-01/virtualwans/model_virtualwansecurityproviders.go new file mode 100644 index 00000000000..6e7e4ab59f8 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_virtualwansecurityproviders.go @@ -0,0 +1,8 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualWanSecurityProviders struct { + SupportedProviders *[]VirtualWanSecurityProvider `json:"supportedProviders,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_virtualwanvpnprofileparameters.go b/resource-manager/network/2024-01-01/virtualwans/model_virtualwanvpnprofileparameters.go new file mode 100644 index 00000000000..dd01888d247 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_virtualwanvpnprofileparameters.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualWanVpnProfileParameters struct { + AuthenticationMethod *AuthenticationMethod `json:"authenticationMethod,omitempty"` + VpnServerConfigurationResourceId *string `json:"vpnServerConfigurationResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vnetroute.go b/resource-manager/network/2024-01-01/virtualwans/model_vnetroute.go new file mode 100644 index 00000000000..cbd035f3e06 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vnetroute.go @@ -0,0 +1,10 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VnetRoute struct { + BgpConnections *[]SubResource `json:"bgpConnections,omitempty"` + StaticRoutes *[]StaticRoute `json:"staticRoutes,omitempty"` + StaticRoutesConfig *StaticRoutesConfig `json:"staticRoutesConfig,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnclientconnectionhealth.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnclientconnectionhealth.go new file mode 100644 index 00000000000..82eefc44a41 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnclientconnectionhealth.go @@ -0,0 +1,11 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnClientConnectionHealth struct { + AllocatedIPAddresses *[]string `json:"allocatedIpAddresses,omitempty"` + TotalEgressBytesTransferred *int64 `json:"totalEgressBytesTransferred,omitempty"` + TotalIngressBytesTransferred *int64 `json:"totalIngressBytesTransferred,omitempty"` + VpnClientConnectionsCount *int64 `json:"vpnClientConnectionsCount,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnconnection.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnconnection.go new file mode 100644 index 00000000000..9d157042c70 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnconnection.go @@ -0,0 +1,11 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VpnConnectionProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnconnectionpacketcapturestartparameters.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnconnectionpacketcapturestartparameters.go new file mode 100644 index 00000000000..97a9e565f9e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnconnectionpacketcapturestartparameters.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnConnectionPacketCaptureStartParameters struct { + FilterData *string `json:"filterData,omitempty"` + LinkConnectionNames *[]string `json:"linkConnectionNames,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnconnectionpacketcapturestopparameters.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnconnectionpacketcapturestopparameters.go new file mode 100644 index 00000000000..de501375c21 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnconnectionpacketcapturestopparameters.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnConnectionPacketCaptureStopParameters struct { + LinkConnectionNames *[]string `json:"linkConnectionNames,omitempty"` + SasUrl *string `json:"sasUrl,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnconnectionproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnconnectionproperties.go new file mode 100644 index 00000000000..1c238229449 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnconnectionproperties.go @@ -0,0 +1,26 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnConnectionProperties struct { + ConnectionBandwidth *int64 `json:"connectionBandwidth,omitempty"` + ConnectionStatus *VpnConnectionStatus `json:"connectionStatus,omitempty"` + DpdTimeoutSeconds *int64 `json:"dpdTimeoutSeconds,omitempty"` + EgressBytesTransferred *int64 `json:"egressBytesTransferred,omitempty"` + EnableBgp *bool `json:"enableBgp,omitempty"` + EnableInternetSecurity *bool `json:"enableInternetSecurity,omitempty"` + EnableRateLimiting *bool `json:"enableRateLimiting,omitempty"` + IPsecPolicies *[]IPsecPolicy `json:"ipsecPolicies,omitempty"` + IngressBytesTransferred *int64 `json:"ingressBytesTransferred,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RemoteVpnSite *SubResource `json:"remoteVpnSite,omitempty"` + RoutingConfiguration *RoutingConfiguration `json:"routingConfiguration,omitempty"` + RoutingWeight *int64 `json:"routingWeight,omitempty"` + SharedKey *string `json:"sharedKey,omitempty"` + TrafficSelectorPolicies *[]TrafficSelectorPolicy `json:"trafficSelectorPolicies,omitempty"` + UseLocalAzureIPAddress *bool `json:"useLocalAzureIpAddress,omitempty"` + UsePolicyBasedTrafficSelectors *bool `json:"usePolicyBasedTrafficSelectors,omitempty"` + VpnConnectionProtocolType *VirtualNetworkGatewayConnectionProtocol `json:"vpnConnectionProtocolType,omitempty"` + VpnLinkConnections *[]VpnSiteLinkConnection `json:"vpnLinkConnections,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpngateway.go b/resource-manager/network/2024-01-01/virtualwans/model_vpngateway.go new file mode 100644 index 00000000000..0c0f9dab77f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpngateway.go @@ -0,0 +1,14 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VpnGatewayProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpngatewayipconfiguration.go b/resource-manager/network/2024-01-01/virtualwans/model_vpngatewayipconfiguration.go new file mode 100644 index 00000000000..b1060397ea0 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpngatewayipconfiguration.go @@ -0,0 +1,10 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnGatewayIPConfiguration struct { + Id *string `json:"id,omitempty"` + PrivateIPAddress *string `json:"privateIpAddress,omitempty"` + PublicIPAddress *string `json:"publicIpAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpngatewaynatrule.go b/resource-manager/network/2024-01-01/virtualwans/model_vpngatewaynatrule.go new file mode 100644 index 00000000000..2de41b7ced6 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpngatewaynatrule.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnGatewayNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VpnGatewayNatRuleProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpngatewaynatruleproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_vpngatewaynatruleproperties.go new file mode 100644 index 00000000000..1aaf7c8f90b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpngatewaynatruleproperties.go @@ -0,0 +1,15 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnGatewayNatRuleProperties struct { + EgressVpnSiteLinkConnections *[]SubResource `json:"egressVpnSiteLinkConnections,omitempty"` + ExternalMappings *[]VpnNatRuleMapping `json:"externalMappings,omitempty"` + IPConfigurationId *string `json:"ipConfigurationId,omitempty"` + IngressVpnSiteLinkConnections *[]SubResource `json:"ingressVpnSiteLinkConnections,omitempty"` + InternalMappings *[]VpnNatRuleMapping `json:"internalMappings,omitempty"` + Mode *VpnNatRuleMode `json:"mode,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Type *VpnNatRuleType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpngatewayproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_vpngatewayproperties.go new file mode 100644 index 00000000000..ab2b8b55b1b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpngatewayproperties.go @@ -0,0 +1,16 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnGatewayProperties struct { + BgpSettings *BgpSettings `json:"bgpSettings,omitempty"` + Connections *[]VpnConnection `json:"connections,omitempty"` + EnableBgpRouteTranslationForNat *bool `json:"enableBgpRouteTranslationForNat,omitempty"` + IPConfigurations *[]VpnGatewayIPConfiguration `json:"ipConfigurations,omitempty"` + IsRoutingPreferenceInternet *bool `json:"isRoutingPreferenceInternet,omitempty"` + NatRules *[]VpnGatewayNatRule `json:"natRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualHub *SubResource `json:"virtualHub,omitempty"` + VpnGatewayScaleUnit *int64 `json:"vpnGatewayScaleUnit,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnlinkbgpsettings.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnlinkbgpsettings.go new file mode 100644 index 00000000000..72de7d65308 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnlinkbgpsettings.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnLinkBgpSettings struct { + Asn *int64 `json:"asn,omitempty"` + BgpPeeringAddress *string `json:"bgpPeeringAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnlinkproviderproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnlinkproviderproperties.go new file mode 100644 index 00000000000..555f8739a9b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnlinkproviderproperties.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnLinkProviderProperties struct { + LinkProviderName *string `json:"linkProviderName,omitempty"` + LinkSpeedInMbps *int64 `json:"linkSpeedInMbps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnnatrulemapping.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnnatrulemapping.go new file mode 100644 index 00000000000..09a77912d9f --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnnatrulemapping.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnNatRuleMapping struct { + AddressSpace *string `json:"addressSpace,omitempty"` + PortRange *string `json:"portRange,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnprofileresponse.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnprofileresponse.go new file mode 100644 index 00000000000..a96c942841c --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnprofileresponse.go @@ -0,0 +1,8 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnProfileResponse struct { + ProfileUrl *string `json:"profileUrl,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigradiusclientrootcertificate.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigradiusclientrootcertificate.go new file mode 100644 index 00000000000..21a75789b34 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigradiusclientrootcertificate.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigRadiusClientRootCertificate struct { + Name *string `json:"name,omitempty"` + Thumbprint *string `json:"thumbprint,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigradiusserverrootcertificate.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigradiusserverrootcertificate.go new file mode 100644 index 00000000000..6f67a020c6a --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigradiusserverrootcertificate.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigRadiusServerRootCertificate struct { + Name *string `json:"name,omitempty"` + PublicCertData *string `json:"publicCertData,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfiguration.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfiguration.go new file mode 100644 index 00000000000..debdcf03f04 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfiguration.go @@ -0,0 +1,14 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VpnServerConfigurationProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigurationpolicygroup.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigurationpolicygroup.go new file mode 100644 index 00000000000..e94549fb063 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigurationpolicygroup.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigurationPolicyGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VpnServerConfigurationPolicyGroupProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigurationpolicygroupmember.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigurationpolicygroupmember.go new file mode 100644 index 00000000000..f832688900b --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigurationpolicygroupmember.go @@ -0,0 +1,10 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigurationPolicyGroupMember struct { + AttributeType *VpnPolicyMemberAttributeType `json:"attributeType,omitempty"` + AttributeValue *string `json:"attributeValue,omitempty"` + Name *string `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigurationpolicygroupproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigurationpolicygroupproperties.go new file mode 100644 index 00000000000..93b015d4bd1 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigurationpolicygroupproperties.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigurationPolicyGroupProperties struct { + IsDefault *bool `json:"isDefault,omitempty"` + P2SConnectionConfigurations *[]SubResource `json:"p2SConnectionConfigurations,omitempty"` + PolicyMembers *[]VpnServerConfigurationPolicyGroupMember `json:"policyMembers,omitempty"` + Priority *int64 `json:"priority,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigurationproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigurationproperties.go new file mode 100644 index 00000000000..1a42b30f7aa --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigurationproperties.go @@ -0,0 +1,23 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigurationProperties struct { + AadAuthenticationParameters *AadAuthenticationParameters `json:"aadAuthenticationParameters,omitempty"` + ConfigurationPolicyGroups *[]VpnServerConfigurationPolicyGroup `json:"configurationPolicyGroups,omitempty"` + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + P2sVpnGateways *[]P2SVpnGateway `json:"p2SVpnGateways,omitempty"` + ProvisioningState *string `json:"provisioningState,omitempty"` + RadiusClientRootCertificates *[]VpnServerConfigRadiusClientRootCertificate `json:"radiusClientRootCertificates,omitempty"` + RadiusServerAddress *string `json:"radiusServerAddress,omitempty"` + RadiusServerRootCertificates *[]VpnServerConfigRadiusServerRootCertificate `json:"radiusServerRootCertificates,omitempty"` + RadiusServerSecret *string `json:"radiusServerSecret,omitempty"` + RadiusServers *[]RadiusServer `json:"radiusServers,omitempty"` + VpnAuthenticationTypes *[]VpnAuthenticationType `json:"vpnAuthenticationTypes,omitempty"` + VpnClientIPsecPolicies *[]IPsecPolicy `json:"vpnClientIpsecPolicies,omitempty"` + VpnClientRevokedCertificates *[]VpnServerConfigVpnClientRevokedCertificate `json:"vpnClientRevokedCertificates,omitempty"` + VpnClientRootCertificates *[]VpnServerConfigVpnClientRootCertificate `json:"vpnClientRootCertificates,omitempty"` + VpnProtocols *[]VpnGatewayTunnelingProtocol `json:"vpnProtocols,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigurationsresponse.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigurationsresponse.go new file mode 100644 index 00000000000..185d5a549d4 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigurationsresponse.go @@ -0,0 +1,8 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigurationsResponse struct { + VpnServerConfigurationResourceIds *[]string `json:"vpnServerConfigurationResourceIds,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigvpnclientrevokedcertificate.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigvpnclientrevokedcertificate.go new file mode 100644 index 00000000000..9582df932b5 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigvpnclientrevokedcertificate.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigVpnClientRevokedCertificate struct { + Name *string `json:"name,omitempty"` + Thumbprint *string `json:"thumbprint,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigvpnclientrootcertificate.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigvpnclientrootcertificate.go new file mode 100644 index 00000000000..606a8393665 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnserverconfigvpnclientrootcertificate.go @@ -0,0 +1,9 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigVpnClientRootCertificate struct { + Name *string `json:"name,omitempty"` + PublicCertData *string `json:"publicCertData,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnsite.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnsite.go new file mode 100644 index 00000000000..7c6dacaed50 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnsite.go @@ -0,0 +1,14 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnSite struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VpnSiteProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnsitelink.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnsitelink.go new file mode 100644 index 00000000000..9c72c0567fd --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnsitelink.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnSiteLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VpnSiteLinkProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnsitelinkconnection.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnsitelinkconnection.go new file mode 100644 index 00000000000..88bed41fe65 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnsitelinkconnection.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnSiteLinkConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VpnSiteLinkConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnsitelinkconnectionproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnsitelinkconnectionproperties.go new file mode 100644 index 00000000000..d07ca0a64af --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnsitelinkconnectionproperties.go @@ -0,0 +1,26 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnSiteLinkConnectionProperties struct { + ConnectionBandwidth *int64 `json:"connectionBandwidth,omitempty"` + ConnectionStatus *VpnConnectionStatus `json:"connectionStatus,omitempty"` + DpdTimeoutSeconds *int64 `json:"dpdTimeoutSeconds,omitempty"` + EgressBytesTransferred *int64 `json:"egressBytesTransferred,omitempty"` + EgressNatRules *[]SubResource `json:"egressNatRules,omitempty"` + EnableBgp *bool `json:"enableBgp,omitempty"` + EnableRateLimiting *bool `json:"enableRateLimiting,omitempty"` + IPsecPolicies *[]IPsecPolicy `json:"ipsecPolicies,omitempty"` + IngressBytesTransferred *int64 `json:"ingressBytesTransferred,omitempty"` + IngressNatRules *[]SubResource `json:"ingressNatRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RoutingWeight *int64 `json:"routingWeight,omitempty"` + SharedKey *string `json:"sharedKey,omitempty"` + UseLocalAzureIPAddress *bool `json:"useLocalAzureIpAddress,omitempty"` + UsePolicyBasedTrafficSelectors *bool `json:"usePolicyBasedTrafficSelectors,omitempty"` + VpnConnectionProtocolType *VirtualNetworkGatewayConnectionProtocol `json:"vpnConnectionProtocolType,omitempty"` + VpnGatewayCustomBgpAddresses *[]GatewayCustomBgpIPAddressIPConfiguration `json:"vpnGatewayCustomBgpAddresses,omitempty"` + VpnLinkConnectionMode *VpnLinkConnectionMode `json:"vpnLinkConnectionMode,omitempty"` + VpnSiteLink *SubResource `json:"vpnSiteLink,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnsitelinkproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnsitelinkproperties.go new file mode 100644 index 00000000000..fa7d9002a52 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnsitelinkproperties.go @@ -0,0 +1,12 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnSiteLinkProperties struct { + BgpProperties *VpnLinkBgpSettings `json:"bgpProperties,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + LinkProperties *VpnLinkProviderProperties `json:"linkProperties,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/model_vpnsiteproperties.go b/resource-manager/network/2024-01-01/virtualwans/model_vpnsiteproperties.go new file mode 100644 index 00000000000..da368da2045 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/model_vpnsiteproperties.go @@ -0,0 +1,17 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnSiteProperties struct { + AddressSpace *AddressSpace `json:"addressSpace,omitempty"` + BgpProperties *BgpSettings `json:"bgpProperties,omitempty"` + DeviceProperties *DeviceProperties `json:"deviceProperties,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + IsSecuritySite *bool `json:"isSecuritySite,omitempty"` + O365Policy *O365PolicyProperties `json:"o365Policy,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SiteKey *string `json:"siteKey,omitempty"` + VirtualWAN *SubResource `json:"virtualWan,omitempty"` + VpnSiteLinks *[]VpnSiteLink `json:"vpnSiteLinks,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/virtualwans/predicates.go b/resource-manager/network/2024-01-01/virtualwans/predicates.go new file mode 100644 index 00000000000..11d37d16e7e --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/predicates.go @@ -0,0 +1,546 @@ +package virtualwans + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BgpConnectionOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p BgpConnectionOperationPredicate) Matches(input BgpConnection) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type HubIPConfigurationOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p HubIPConfigurationOperationPredicate) Matches(input HubIPConfiguration) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type HubRouteTableOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p HubRouteTableOperationPredicate) Matches(input HubRouteTable) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type HubVirtualNetworkConnectionOperationPredicate struct { + Etag *string + Id *string + Name *string +} + +func (p HubVirtualNetworkConnectionOperationPredicate) Matches(input HubVirtualNetworkConnection) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + return true +} + +type NetworkVirtualApplianceConnectionOperationPredicate struct { + Id *string + Name *string +} + +func (p NetworkVirtualApplianceConnectionOperationPredicate) Matches(input NetworkVirtualApplianceConnection) bool { + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + return true +} + +type P2SVpnGatewayOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p P2SVpnGatewayOperationPredicate) Matches(input P2SVpnGateway) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type RouteMapOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p RouteMapOperationPredicate) Matches(input RouteMap) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type RoutingIntentOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p RoutingIntentOperationPredicate) Matches(input RoutingIntent) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type VirtualHubOperationPredicate struct { + Etag *string + Id *string + Kind *string + Location *string + Name *string + Type *string +} + +func (p VirtualHubOperationPredicate) Matches(input VirtualHub) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Kind != nil && (input.Kind == nil || *p.Kind != *input.Kind) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type VirtualHubRouteTableV2OperationPredicate struct { + Etag *string + Id *string + Name *string +} + +func (p VirtualHubRouteTableV2OperationPredicate) Matches(input VirtualHubRouteTableV2) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + return true +} + +type VirtualWANOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p VirtualWANOperationPredicate) Matches(input VirtualWAN) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type VpnConnectionOperationPredicate struct { + Etag *string + Id *string + Name *string +} + +func (p VpnConnectionOperationPredicate) Matches(input VpnConnection) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + return true +} + +type VpnGatewayOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p VpnGatewayOperationPredicate) Matches(input VpnGateway) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type VpnGatewayNatRuleOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p VpnGatewayNatRuleOperationPredicate) Matches(input VpnGatewayNatRule) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type VpnServerConfigurationOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p VpnServerConfigurationOperationPredicate) Matches(input VpnServerConfiguration) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type VpnServerConfigurationPolicyGroupOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p VpnServerConfigurationPolicyGroupOperationPredicate) Matches(input VpnServerConfigurationPolicyGroup) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type VpnSiteOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p VpnSiteOperationPredicate) Matches(input VpnSite) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type VpnSiteLinkOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p VpnSiteLinkOperationPredicate) Matches(input VpnSiteLink) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} + +type VpnSiteLinkConnectionOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p VpnSiteLinkConnectionOperationPredicate) Matches(input VpnSiteLinkConnection) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/virtualwans/version.go b/resource-manager/network/2024-01-01/virtualwans/version.go new file mode 100644 index 00000000000..a3d80006897 --- /dev/null +++ b/resource-manager/network/2024-01-01/virtualwans/version.go @@ -0,0 +1,12 @@ +package virtualwans + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/virtualwans/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/README.md b/resource-manager/network/2024-01-01/vmsspublicipaddresses/README.md new file mode 100644 index 00000000000..662d65f1d36 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/README.md @@ -0,0 +1,71 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/vmsspublicipaddresses` Documentation + +The `vmsspublicipaddresses` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/vmsspublicipaddresses" +``` + + +### Client Initialization + +```go +client := vmsspublicipaddresses.NewVMSSPublicIPAddressesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `VMSSPublicIPAddressesClient.PublicIPAddressesGetVirtualMachineScaleSetPublicIPAddress` + +```go +ctx := context.TODO() +id := commonids.NewVirtualMachineScaleSetPublicIPAddressID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualMachineScaleSetValue", "virtualMachineValue", "networkInterfaceValue", "ipConfigurationValue", "publicIPAddressValue") + +read, err := client.PublicIPAddressesGetVirtualMachineScaleSetPublicIPAddress(ctx, id, vmsspublicipaddresses.DefaultPublicIPAddressesGetVirtualMachineScaleSetPublicIPAddressOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `VMSSPublicIPAddressesClient.PublicIPAddressesListVirtualMachineScaleSetPublicIPAddresses` + +```go +ctx := context.TODO() +id := vmsspublicipaddresses.NewVirtualMachineScaleSetID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualMachineScaleSetValue") + +// alternatively `client.PublicIPAddressesListVirtualMachineScaleSetPublicIPAddresses(ctx, id)` can be used to do batched pagination +items, err := client.PublicIPAddressesListVirtualMachineScaleSetPublicIPAddressesComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `VMSSPublicIPAddressesClient.PublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddresses` + +```go +ctx := context.TODO() +id := commonids.NewVirtualMachineScaleSetIPConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualMachineScaleSetValue", "virtualMachineValue", "networkInterfaceValue", "ipConfigurationValue") + +// alternatively `client.PublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddresses(ctx, id)` can be used to do batched pagination +items, err := client.PublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/client.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/client.go new file mode 100644 index 00000000000..3213cbf73fe --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/client.go @@ -0,0 +1,26 @@ +package vmsspublicipaddresses + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VMSSPublicIPAddressesClient struct { + Client *resourcemanager.Client +} + +func NewVMSSPublicIPAddressesClientWithBaseURI(sdkApi sdkEnv.Api) (*VMSSPublicIPAddressesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "vmsspublicipaddresses", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating VMSSPublicIPAddressesClient: %+v", err) + } + + return &VMSSPublicIPAddressesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/constants.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/constants.go new file mode 100644 index 00000000000..576d84c8e0a --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/constants.go @@ -0,0 +1,1198 @@ +package vmsspublicipaddresses + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettingsProtectionMode string + +const ( + DdosSettingsProtectionModeDisabled DdosSettingsProtectionMode = "Disabled" + DdosSettingsProtectionModeEnabled DdosSettingsProtectionMode = "Enabled" + DdosSettingsProtectionModeVirtualNetworkInherited DdosSettingsProtectionMode = "VirtualNetworkInherited" +) + +func PossibleValuesForDdosSettingsProtectionMode() []string { + return []string{ + string(DdosSettingsProtectionModeDisabled), + string(DdosSettingsProtectionModeEnabled), + string(DdosSettingsProtectionModeVirtualNetworkInherited), + } +} + +func (s *DdosSettingsProtectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDdosSettingsProtectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDdosSettingsProtectionMode(input string) (*DdosSettingsProtectionMode, error) { + vals := map[string]DdosSettingsProtectionMode{ + "disabled": DdosSettingsProtectionModeDisabled, + "enabled": DdosSettingsProtectionModeEnabled, + "virtualnetworkinherited": DdosSettingsProtectionModeVirtualNetworkInherited, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DdosSettingsProtectionMode(input) + return &out, nil +} + +type DeleteOptions string + +const ( + DeleteOptionsDelete DeleteOptions = "Delete" + DeleteOptionsDetach DeleteOptions = "Detach" +) + +func PossibleValuesForDeleteOptions() []string { + return []string{ + string(DeleteOptionsDelete), + string(DeleteOptionsDetach), + } +} + +func (s *DeleteOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteOptions(input string) (*DeleteOptions, error) { + vals := map[string]DeleteOptions{ + "delete": DeleteOptionsDelete, + "detach": DeleteOptionsDetach, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteOptions(input) + return &out, nil +} + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelInterfaceType string + +const ( + GatewayLoadBalancerTunnelInterfaceTypeExternal GatewayLoadBalancerTunnelInterfaceType = "External" + GatewayLoadBalancerTunnelInterfaceTypeInternal GatewayLoadBalancerTunnelInterfaceType = "Internal" + GatewayLoadBalancerTunnelInterfaceTypeNone GatewayLoadBalancerTunnelInterfaceType = "None" +) + +func PossibleValuesForGatewayLoadBalancerTunnelInterfaceType() []string { + return []string{ + string(GatewayLoadBalancerTunnelInterfaceTypeExternal), + string(GatewayLoadBalancerTunnelInterfaceTypeInternal), + string(GatewayLoadBalancerTunnelInterfaceTypeNone), + } +} + +func (s *GatewayLoadBalancerTunnelInterfaceType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelInterfaceType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelInterfaceType(input string) (*GatewayLoadBalancerTunnelInterfaceType, error) { + vals := map[string]GatewayLoadBalancerTunnelInterfaceType{ + "external": GatewayLoadBalancerTunnelInterfaceTypeExternal, + "internal": GatewayLoadBalancerTunnelInterfaceTypeInternal, + "none": GatewayLoadBalancerTunnelInterfaceTypeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelInterfaceType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelProtocol string + +const ( + GatewayLoadBalancerTunnelProtocolNative GatewayLoadBalancerTunnelProtocol = "Native" + GatewayLoadBalancerTunnelProtocolNone GatewayLoadBalancerTunnelProtocol = "None" + GatewayLoadBalancerTunnelProtocolVXLAN GatewayLoadBalancerTunnelProtocol = "VXLAN" +) + +func PossibleValuesForGatewayLoadBalancerTunnelProtocol() []string { + return []string{ + string(GatewayLoadBalancerTunnelProtocolNative), + string(GatewayLoadBalancerTunnelProtocolNone), + string(GatewayLoadBalancerTunnelProtocolVXLAN), + } +} + +func (s *GatewayLoadBalancerTunnelProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelProtocol(input string) (*GatewayLoadBalancerTunnelProtocol, error) { + vals := map[string]GatewayLoadBalancerTunnelProtocol{ + "native": GatewayLoadBalancerTunnelProtocolNative, + "none": GatewayLoadBalancerTunnelProtocolNone, + "vxlan": GatewayLoadBalancerTunnelProtocolVXLAN, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelProtocol(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} + +type LoadBalancerBackendAddressAdminState string + +const ( + LoadBalancerBackendAddressAdminStateDown LoadBalancerBackendAddressAdminState = "Down" + LoadBalancerBackendAddressAdminStateNone LoadBalancerBackendAddressAdminState = "None" + LoadBalancerBackendAddressAdminStateUp LoadBalancerBackendAddressAdminState = "Up" +) + +func PossibleValuesForLoadBalancerBackendAddressAdminState() []string { + return []string{ + string(LoadBalancerBackendAddressAdminStateDown), + string(LoadBalancerBackendAddressAdminStateNone), + string(LoadBalancerBackendAddressAdminStateUp), + } +} + +func (s *LoadBalancerBackendAddressAdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerBackendAddressAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerBackendAddressAdminState(input string) (*LoadBalancerBackendAddressAdminState, error) { + vals := map[string]LoadBalancerBackendAddressAdminState{ + "down": LoadBalancerBackendAddressAdminStateDown, + "none": LoadBalancerBackendAddressAdminStateNone, + "up": LoadBalancerBackendAddressAdminStateUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerBackendAddressAdminState(input) + return &out, nil +} + +type NatGatewaySkuName string + +const ( + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +func PossibleValuesForNatGatewaySkuName() []string { + return []string{ + string(NatGatewaySkuNameStandard), + } +} + +func (s *NatGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNatGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNatGatewaySkuName(input string) (*NatGatewaySkuName, error) { + vals := map[string]NatGatewaySkuName{ + "standard": NatGatewaySkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NatGatewaySkuName(input) + return &out, nil +} + +type NetworkInterfaceAuxiliaryMode string + +const ( + NetworkInterfaceAuxiliaryModeAcceleratedConnections NetworkInterfaceAuxiliaryMode = "AcceleratedConnections" + NetworkInterfaceAuxiliaryModeFloating NetworkInterfaceAuxiliaryMode = "Floating" + NetworkInterfaceAuxiliaryModeMaxConnections NetworkInterfaceAuxiliaryMode = "MaxConnections" + NetworkInterfaceAuxiliaryModeNone NetworkInterfaceAuxiliaryMode = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliaryMode() []string { + return []string{ + string(NetworkInterfaceAuxiliaryModeAcceleratedConnections), + string(NetworkInterfaceAuxiliaryModeFloating), + string(NetworkInterfaceAuxiliaryModeMaxConnections), + string(NetworkInterfaceAuxiliaryModeNone), + } +} + +func (s *NetworkInterfaceAuxiliaryMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliaryMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliaryMode(input string) (*NetworkInterfaceAuxiliaryMode, error) { + vals := map[string]NetworkInterfaceAuxiliaryMode{ + "acceleratedconnections": NetworkInterfaceAuxiliaryModeAcceleratedConnections, + "floating": NetworkInterfaceAuxiliaryModeFloating, + "maxconnections": NetworkInterfaceAuxiliaryModeMaxConnections, + "none": NetworkInterfaceAuxiliaryModeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliaryMode(input) + return &out, nil +} + +type NetworkInterfaceAuxiliarySku string + +const ( + NetworkInterfaceAuxiliarySkuAEight NetworkInterfaceAuxiliarySku = "A8" + NetworkInterfaceAuxiliarySkuAFour NetworkInterfaceAuxiliarySku = "A4" + NetworkInterfaceAuxiliarySkuAOne NetworkInterfaceAuxiliarySku = "A1" + NetworkInterfaceAuxiliarySkuATwo NetworkInterfaceAuxiliarySku = "A2" + NetworkInterfaceAuxiliarySkuNone NetworkInterfaceAuxiliarySku = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliarySku() []string { + return []string{ + string(NetworkInterfaceAuxiliarySkuAEight), + string(NetworkInterfaceAuxiliarySkuAFour), + string(NetworkInterfaceAuxiliarySkuAOne), + string(NetworkInterfaceAuxiliarySkuATwo), + string(NetworkInterfaceAuxiliarySkuNone), + } +} + +func (s *NetworkInterfaceAuxiliarySku) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliarySku(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliarySku(input string) (*NetworkInterfaceAuxiliarySku, error) { + vals := map[string]NetworkInterfaceAuxiliarySku{ + "a8": NetworkInterfaceAuxiliarySkuAEight, + "a4": NetworkInterfaceAuxiliarySkuAFour, + "a1": NetworkInterfaceAuxiliarySkuAOne, + "a2": NetworkInterfaceAuxiliarySkuATwo, + "none": NetworkInterfaceAuxiliarySkuNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliarySku(input) + return &out, nil +} + +type NetworkInterfaceMigrationPhase string + +const ( + NetworkInterfaceMigrationPhaseAbort NetworkInterfaceMigrationPhase = "Abort" + NetworkInterfaceMigrationPhaseCommit NetworkInterfaceMigrationPhase = "Commit" + NetworkInterfaceMigrationPhaseCommitted NetworkInterfaceMigrationPhase = "Committed" + NetworkInterfaceMigrationPhaseNone NetworkInterfaceMigrationPhase = "None" + NetworkInterfaceMigrationPhasePrepare NetworkInterfaceMigrationPhase = "Prepare" +) + +func PossibleValuesForNetworkInterfaceMigrationPhase() []string { + return []string{ + string(NetworkInterfaceMigrationPhaseAbort), + string(NetworkInterfaceMigrationPhaseCommit), + string(NetworkInterfaceMigrationPhaseCommitted), + string(NetworkInterfaceMigrationPhaseNone), + string(NetworkInterfaceMigrationPhasePrepare), + } +} + +func (s *NetworkInterfaceMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceMigrationPhase(input string) (*NetworkInterfaceMigrationPhase, error) { + vals := map[string]NetworkInterfaceMigrationPhase{ + "abort": NetworkInterfaceMigrationPhaseAbort, + "commit": NetworkInterfaceMigrationPhaseCommit, + "committed": NetworkInterfaceMigrationPhaseCommitted, + "none": NetworkInterfaceMigrationPhaseNone, + "prepare": NetworkInterfaceMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceMigrationPhase(input) + return &out, nil +} + +type NetworkInterfaceNicType string + +const ( + NetworkInterfaceNicTypeElastic NetworkInterfaceNicType = "Elastic" + NetworkInterfaceNicTypeStandard NetworkInterfaceNicType = "Standard" +) + +func PossibleValuesForNetworkInterfaceNicType() []string { + return []string{ + string(NetworkInterfaceNicTypeElastic), + string(NetworkInterfaceNicTypeStandard), + } +} + +func (s *NetworkInterfaceNicType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceNicType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceNicType(input string) (*NetworkInterfaceNicType, error) { + vals := map[string]NetworkInterfaceNicType{ + "elastic": NetworkInterfaceNicTypeElastic, + "standard": NetworkInterfaceNicTypeStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceNicType(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type PublicIPAddressDnsSettingsDomainNameLabelScope string + +const ( + PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "NoReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "ResourceGroupReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "SubscriptionReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "TenantReuse" +) + +func PossibleValuesForPublicIPAddressDnsSettingsDomainNameLabelScope() []string { + return []string{ + string(PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse), + } +} + +func (s *PublicIPAddressDnsSettingsDomainNameLabelScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressDnsSettingsDomainNameLabelScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressDnsSettingsDomainNameLabelScope(input string) (*PublicIPAddressDnsSettingsDomainNameLabelScope, error) { + vals := map[string]PublicIPAddressDnsSettingsDomainNameLabelScope{ + "noreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse, + "resourcegroupreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse, + "subscriptionreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse, + "tenantreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressDnsSettingsDomainNameLabelScope(input) + return &out, nil +} + +type PublicIPAddressMigrationPhase string + +const ( + PublicIPAddressMigrationPhaseAbort PublicIPAddressMigrationPhase = "Abort" + PublicIPAddressMigrationPhaseCommit PublicIPAddressMigrationPhase = "Commit" + PublicIPAddressMigrationPhaseCommitted PublicIPAddressMigrationPhase = "Committed" + PublicIPAddressMigrationPhaseNone PublicIPAddressMigrationPhase = "None" + PublicIPAddressMigrationPhasePrepare PublicIPAddressMigrationPhase = "Prepare" +) + +func PossibleValuesForPublicIPAddressMigrationPhase() []string { + return []string{ + string(PublicIPAddressMigrationPhaseAbort), + string(PublicIPAddressMigrationPhaseCommit), + string(PublicIPAddressMigrationPhaseCommitted), + string(PublicIPAddressMigrationPhaseNone), + string(PublicIPAddressMigrationPhasePrepare), + } +} + +func (s *PublicIPAddressMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressMigrationPhase(input string) (*PublicIPAddressMigrationPhase, error) { + vals := map[string]PublicIPAddressMigrationPhase{ + "abort": PublicIPAddressMigrationPhaseAbort, + "commit": PublicIPAddressMigrationPhaseCommit, + "committed": PublicIPAddressMigrationPhaseCommitted, + "none": PublicIPAddressMigrationPhaseNone, + "prepare": PublicIPAddressMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressMigrationPhase(input) + return &out, nil +} + +type PublicIPAddressSkuName string + +const ( + PublicIPAddressSkuNameBasic PublicIPAddressSkuName = "Basic" + PublicIPAddressSkuNameStandard PublicIPAddressSkuName = "Standard" +) + +func PossibleValuesForPublicIPAddressSkuName() []string { + return []string{ + string(PublicIPAddressSkuNameBasic), + string(PublicIPAddressSkuNameStandard), + } +} + +func (s *PublicIPAddressSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuName(input string) (*PublicIPAddressSkuName, error) { + vals := map[string]PublicIPAddressSkuName{ + "basic": PublicIPAddressSkuNameBasic, + "standard": PublicIPAddressSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuName(input) + return &out, nil +} + +type PublicIPAddressSkuTier string + +const ( + PublicIPAddressSkuTierGlobal PublicIPAddressSkuTier = "Global" + PublicIPAddressSkuTierRegional PublicIPAddressSkuTier = "Regional" +) + +func PossibleValuesForPublicIPAddressSkuTier() []string { + return []string{ + string(PublicIPAddressSkuTierGlobal), + string(PublicIPAddressSkuTierRegional), + } +} + +func (s *PublicIPAddressSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuTier(input string) (*PublicIPAddressSkuTier, error) { + vals := map[string]PublicIPAddressSkuTier{ + "global": PublicIPAddressSkuTierGlobal, + "regional": PublicIPAddressSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuTier(input) + return &out, nil +} + +type RouteNextHopType string + +const ( + RouteNextHopTypeInternet RouteNextHopType = "Internet" + RouteNextHopTypeNone RouteNextHopType = "None" + RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" + RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" + RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" +) + +func PossibleValuesForRouteNextHopType() []string { + return []string{ + string(RouteNextHopTypeInternet), + string(RouteNextHopTypeNone), + string(RouteNextHopTypeVirtualAppliance), + string(RouteNextHopTypeVirtualNetworkGateway), + string(RouteNextHopTypeVnetLocal), + } +} + +func (s *RouteNextHopType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteNextHopType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteNextHopType(input string) (*RouteNextHopType, error) { + vals := map[string]RouteNextHopType{ + "internet": RouteNextHopTypeInternet, + "none": RouteNextHopTypeNone, + "virtualappliance": RouteNextHopTypeVirtualAppliance, + "virtualnetworkgateway": RouteNextHopTypeVirtualNetworkGateway, + "vnetlocal": RouteNextHopTypeVnetLocal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteNextHopType(input) + return &out, nil +} + +type SecurityRuleAccess string + +const ( + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +func PossibleValuesForSecurityRuleAccess() []string { + return []string{ + string(SecurityRuleAccessAllow), + string(SecurityRuleAccessDeny), + } +} + +func (s *SecurityRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleAccess(input string) (*SecurityRuleAccess, error) { + vals := map[string]SecurityRuleAccess{ + "allow": SecurityRuleAccessAllow, + "deny": SecurityRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleAccess(input) + return &out, nil +} + +type SecurityRuleDirection string + +const ( + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityRuleDirection() []string { + return []string{ + string(SecurityRuleDirectionInbound), + string(SecurityRuleDirectionOutbound), + } +} + +func (s *SecurityRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleDirection(input string) (*SecurityRuleDirection, error) { + vals := map[string]SecurityRuleDirection{ + "inbound": SecurityRuleDirectionInbound, + "outbound": SecurityRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleDirection(input) + return &out, nil +} + +type SecurityRuleProtocol string + +const ( + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + SecurityRuleProtocolAny SecurityRuleProtocol = "*" + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + SecurityRuleProtocolTcp SecurityRuleProtocol = "Tcp" + SecurityRuleProtocolUdp SecurityRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityRuleProtocol() []string { + return []string{ + string(SecurityRuleProtocolAh), + string(SecurityRuleProtocolAny), + string(SecurityRuleProtocolEsp), + string(SecurityRuleProtocolIcmp), + string(SecurityRuleProtocolTcp), + string(SecurityRuleProtocolUdp), + } +} + +func (s *SecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleProtocol(input string) (*SecurityRuleProtocol, error) { + vals := map[string]SecurityRuleProtocol{ + "ah": SecurityRuleProtocolAh, + "*": SecurityRuleProtocolAny, + "esp": SecurityRuleProtocolEsp, + "icmp": SecurityRuleProtocolIcmp, + "tcp": SecurityRuleProtocolTcp, + "udp": SecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleProtocol(input) + return &out, nil +} + +type SharingScope string + +const ( + SharingScopeDelegatedServices SharingScope = "DelegatedServices" + SharingScopeTenant SharingScope = "Tenant" +) + +func PossibleValuesForSharingScope() []string { + return []string{ + string(SharingScopeDelegatedServices), + string(SharingScopeTenant), + } +} + +func (s *SharingScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSharingScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSharingScope(input string) (*SharingScope, error) { + vals := map[string]SharingScope{ + "delegatedservices": SharingScopeDelegatedServices, + "tenant": SharingScopeTenant, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SharingScope(input) + return &out, nil +} + +type SyncMode string + +const ( + SyncModeAutomatic SyncMode = "Automatic" + SyncModeManual SyncMode = "Manual" +) + +func PossibleValuesForSyncMode() []string { + return []string{ + string(SyncModeAutomatic), + string(SyncModeManual), + } +} + +func (s *SyncMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSyncMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSyncMode(input string) (*SyncMode, error) { + vals := map[string]SyncMode{ + "automatic": SyncModeAutomatic, + "manual": SyncModeManual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SyncMode(input) + return &out, nil +} + +type TransportProtocol string + +const ( + TransportProtocolAll TransportProtocol = "All" + TransportProtocolTcp TransportProtocol = "Tcp" + TransportProtocolUdp TransportProtocol = "Udp" +) + +func PossibleValuesForTransportProtocol() []string { + return []string{ + string(TransportProtocolAll), + string(TransportProtocolTcp), + string(TransportProtocolUdp), + } +} + +func (s *TransportProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseTransportProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseTransportProtocol(input string) (*TransportProtocol, error) { + vals := map[string]TransportProtocol{ + "all": TransportProtocolAll, + "tcp": TransportProtocolTcp, + "udp": TransportProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := TransportProtocol(input) + return &out, nil +} + +type VirtualNetworkPrivateEndpointNetworkPolicies string + +const ( + VirtualNetworkPrivateEndpointNetworkPoliciesDisabled VirtualNetworkPrivateEndpointNetworkPolicies = "Disabled" + VirtualNetworkPrivateEndpointNetworkPoliciesEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "Enabled" + VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "NetworkSecurityGroupEnabled" + VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "RouteTableEnabled" +) + +func PossibleValuesForVirtualNetworkPrivateEndpointNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateEndpointNetworkPoliciesDisabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled), + } +} + +func (s *VirtualNetworkPrivateEndpointNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateEndpointNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateEndpointNetworkPolicies(input string) (*VirtualNetworkPrivateEndpointNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateEndpointNetworkPolicies{ + "disabled": VirtualNetworkPrivateEndpointNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateEndpointNetworkPoliciesEnabled, + "networksecuritygroupenabled": VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled, + "routetableenabled": VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateEndpointNetworkPolicies(input) + return &out, nil +} + +type VirtualNetworkPrivateLinkServiceNetworkPolicies string + +const ( + VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Disabled" + VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Enabled" +) + +func PossibleValuesForVirtualNetworkPrivateLinkServiceNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled), + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled), + } +} + +func (s *VirtualNetworkPrivateLinkServiceNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateLinkServiceNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateLinkServiceNetworkPolicies(input string) (*VirtualNetworkPrivateLinkServiceNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateLinkServiceNetworkPolicies{ + "disabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateLinkServiceNetworkPolicies(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/id_virtualmachinescaleset.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/id_virtualmachinescaleset.go new file mode 100644 index 00000000000..6907f32662f --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/id_virtualmachinescaleset.go @@ -0,0 +1,130 @@ +package vmsspublicipaddresses + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&VirtualMachineScaleSetId{}) +} + +var _ resourceids.ResourceId = &VirtualMachineScaleSetId{} + +// VirtualMachineScaleSetId is a struct representing the Resource ID for a Virtual Machine Scale Set +type VirtualMachineScaleSetId struct { + SubscriptionId string + ResourceGroupName string + VirtualMachineScaleSetName string +} + +// NewVirtualMachineScaleSetID returns a new VirtualMachineScaleSetId struct +func NewVirtualMachineScaleSetID(subscriptionId string, resourceGroupName string, virtualMachineScaleSetName string) VirtualMachineScaleSetId { + return VirtualMachineScaleSetId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VirtualMachineScaleSetName: virtualMachineScaleSetName, + } +} + +// ParseVirtualMachineScaleSetID parses 'input' into a VirtualMachineScaleSetId +func ParseVirtualMachineScaleSetID(input string) (*VirtualMachineScaleSetId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualMachineScaleSetId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualMachineScaleSetId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseVirtualMachineScaleSetIDInsensitively parses 'input' case-insensitively into a VirtualMachineScaleSetId +// note: this method should only be used for API response data and not user input +func ParseVirtualMachineScaleSetIDInsensitively(input string) (*VirtualMachineScaleSetId, error) { + parser := resourceids.NewParserFromResourceIdType(&VirtualMachineScaleSetId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VirtualMachineScaleSetId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *VirtualMachineScaleSetId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VirtualMachineScaleSetName, ok = input.Parsed["virtualMachineScaleSetName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "virtualMachineScaleSetName", input) + } + + return nil +} + +// ValidateVirtualMachineScaleSetID checks that 'input' can be parsed as a Virtual Machine Scale Set ID +func ValidateVirtualMachineScaleSetID(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 := ParseVirtualMachineScaleSetID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Virtual Machine Scale Set ID +func (id VirtualMachineScaleSetId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Compute/virtualMachineScaleSets/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VirtualMachineScaleSetName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Virtual Machine Scale Set ID +func (id VirtualMachineScaleSetId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftCompute", "Microsoft.Compute", "Microsoft.Compute"), + resourceids.StaticSegment("staticVirtualMachineScaleSets", "virtualMachineScaleSets", "virtualMachineScaleSets"), + resourceids.UserSpecifiedSegment("virtualMachineScaleSetName", "virtualMachineScaleSetValue"), + } +} + +// String returns a human-readable description of this Virtual Machine Scale Set ID +func (id VirtualMachineScaleSetId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Virtual Machine Scale Set Name: %q", id.VirtualMachineScaleSetName), + } + return fmt.Sprintf("Virtual Machine Scale Set (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/id_virtualmachinescaleset_test.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/id_virtualmachinescaleset_test.go new file mode 100644 index 00000000000..d4e158c8f74 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/id_virtualmachinescaleset_test.go @@ -0,0 +1,282 @@ +package vmsspublicipaddresses + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &VirtualMachineScaleSetId{} + +func TestNewVirtualMachineScaleSetID(t *testing.T) { + id := NewVirtualMachineScaleSetID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualMachineScaleSetValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VirtualMachineScaleSetName != "virtualMachineScaleSetValue" { + t.Fatalf("Expected %q but got %q for Segment 'VirtualMachineScaleSetName'", id.VirtualMachineScaleSetName, "virtualMachineScaleSetValue") + } +} + +func TestFormatVirtualMachineScaleSetID(t *testing.T) { + actual := NewVirtualMachineScaleSetID("12345678-1234-9876-4563-123456789012", "example-resource-group", "virtualMachineScaleSetValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/virtualMachineScaleSetValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseVirtualMachineScaleSetID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualMachineScaleSetId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/virtualMachineScaleSetValue", + Expected: &VirtualMachineScaleSetId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualMachineScaleSetName: "virtualMachineScaleSetValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/virtualMachineScaleSetValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualMachineScaleSetID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualMachineScaleSetName != v.Expected.VirtualMachineScaleSetName { + t.Fatalf("Expected %q but got %q for VirtualMachineScaleSetName", v.Expected.VirtualMachineScaleSetName, actual.VirtualMachineScaleSetName) + } + + } +} + +func TestParseVirtualMachineScaleSetIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VirtualMachineScaleSetId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/vIrTuAlMaChInEsCaLeSeTs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/virtualMachineScaleSetValue", + Expected: &VirtualMachineScaleSetId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VirtualMachineScaleSetName: "virtualMachineScaleSetValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/virtualMachineScaleSetValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/vIrTuAlMaChInEsCaLeSeTs/vIrTuAlMaChInEsCaLeSeTvAlUe", + Expected: &VirtualMachineScaleSetId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VirtualMachineScaleSetName: "vIrTuAlMaChInEsCaLeSeTvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.cOmPuTe/vIrTuAlMaChInEsCaLeSeTs/vIrTuAlMaChInEsCaLeSeTvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVirtualMachineScaleSetIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VirtualMachineScaleSetName != v.Expected.VirtualMachineScaleSetName { + t.Fatalf("Expected %q but got %q for VirtualMachineScaleSetName", v.Expected.VirtualMachineScaleSetName, actual.VirtualMachineScaleSetName) + } + + } +} + +func TestSegmentsForVirtualMachineScaleSetId(t *testing.T) { + segments := VirtualMachineScaleSetId{}.Segments() + if len(segments) == 0 { + t.Fatalf("VirtualMachineScaleSetId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/method_publicipaddressesgetvirtualmachinescalesetpublicipaddress.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/method_publicipaddressesgetvirtualmachinescalesetpublicipaddress.go new file mode 100644 index 00000000000..f1a1235a8e2 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/method_publicipaddressesgetvirtualmachinescalesetpublicipaddress.go @@ -0,0 +1,84 @@ +package vmsspublicipaddresses + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressesGetVirtualMachineScaleSetPublicIPAddressOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *PublicIPAddress +} + +type PublicIPAddressesGetVirtualMachineScaleSetPublicIPAddressOperationOptions struct { + Expand *string +} + +func DefaultPublicIPAddressesGetVirtualMachineScaleSetPublicIPAddressOperationOptions() PublicIPAddressesGetVirtualMachineScaleSetPublicIPAddressOperationOptions { + return PublicIPAddressesGetVirtualMachineScaleSetPublicIPAddressOperationOptions{} +} + +func (o PublicIPAddressesGetVirtualMachineScaleSetPublicIPAddressOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o PublicIPAddressesGetVirtualMachineScaleSetPublicIPAddressOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o PublicIPAddressesGetVirtualMachineScaleSetPublicIPAddressOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// PublicIPAddressesGetVirtualMachineScaleSetPublicIPAddress ... +func (c VMSSPublicIPAddressesClient) PublicIPAddressesGetVirtualMachineScaleSetPublicIPAddress(ctx context.Context, id commonids.VirtualMachineScaleSetPublicIPAddressId, options PublicIPAddressesGetVirtualMachineScaleSetPublicIPAddressOperationOptions) (result PublicIPAddressesGetVirtualMachineScaleSetPublicIPAddressOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model PublicIPAddress + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/method_publicipaddresseslistvirtualmachinescalesetpublicipaddresses.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/method_publicipaddresseslistvirtualmachinescalesetpublicipaddresses.go new file mode 100644 index 00000000000..b7648a7a307 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/method_publicipaddresseslistvirtualmachinescalesetpublicipaddresses.go @@ -0,0 +1,92 @@ +package vmsspublicipaddresses + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressesListVirtualMachineScaleSetPublicIPAddressesOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]PublicIPAddress +} + +type PublicIPAddressesListVirtualMachineScaleSetPublicIPAddressesCompleteResult struct { + LatestHttpResponse *http.Response + Items []PublicIPAddress +} + +// PublicIPAddressesListVirtualMachineScaleSetPublicIPAddresses ... +func (c VMSSPublicIPAddressesClient) PublicIPAddressesListVirtualMachineScaleSetPublicIPAddresses(ctx context.Context, id VirtualMachineScaleSetId) (result PublicIPAddressesListVirtualMachineScaleSetPublicIPAddressesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/publicIPAddresses", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]PublicIPAddress `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// PublicIPAddressesListVirtualMachineScaleSetPublicIPAddressesComplete retrieves all the results into a single object +func (c VMSSPublicIPAddressesClient) PublicIPAddressesListVirtualMachineScaleSetPublicIPAddressesComplete(ctx context.Context, id VirtualMachineScaleSetId) (PublicIPAddressesListVirtualMachineScaleSetPublicIPAddressesCompleteResult, error) { + return c.PublicIPAddressesListVirtualMachineScaleSetPublicIPAddressesCompleteMatchingPredicate(ctx, id, PublicIPAddressOperationPredicate{}) +} + +// PublicIPAddressesListVirtualMachineScaleSetPublicIPAddressesCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VMSSPublicIPAddressesClient) PublicIPAddressesListVirtualMachineScaleSetPublicIPAddressesCompleteMatchingPredicate(ctx context.Context, id VirtualMachineScaleSetId, predicate PublicIPAddressOperationPredicate) (result PublicIPAddressesListVirtualMachineScaleSetPublicIPAddressesCompleteResult, err error) { + items := make([]PublicIPAddress, 0) + + resp, err := c.PublicIPAddressesListVirtualMachineScaleSetPublicIPAddresses(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = PublicIPAddressesListVirtualMachineScaleSetPublicIPAddressesCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/method_publicipaddresseslistvirtualmachinescalesetvmpublicipaddresses.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/method_publicipaddresseslistvirtualmachinescalesetvmpublicipaddresses.go new file mode 100644 index 00000000000..e61b339d253 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/method_publicipaddresseslistvirtualmachinescalesetvmpublicipaddresses.go @@ -0,0 +1,93 @@ +package vmsspublicipaddresses + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]PublicIPAddress +} + +type PublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesCompleteResult struct { + LatestHttpResponse *http.Response + Items []PublicIPAddress +} + +// PublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddresses ... +func (c VMSSPublicIPAddressesClient) PublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddresses(ctx context.Context, id commonids.VirtualMachineScaleSetIPConfigurationId) (result PublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/publicIPAddresses", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]PublicIPAddress `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// PublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesComplete retrieves all the results into a single object +func (c VMSSPublicIPAddressesClient) PublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesComplete(ctx context.Context, id commonids.VirtualMachineScaleSetIPConfigurationId) (PublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesCompleteResult, error) { + return c.PublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesCompleteMatchingPredicate(ctx, id, PublicIPAddressOperationPredicate{}) +} + +// PublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c VMSSPublicIPAddressesClient) PublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesCompleteMatchingPredicate(ctx context.Context, id commonids.VirtualMachineScaleSetIPConfigurationId, predicate PublicIPAddressOperationPredicate) (result PublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesCompleteResult, err error) { + items := make([]PublicIPAddress, 0) + + resp, err := c.PublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddresses(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = PublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_applicationgatewaybackendaddress.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_applicationgatewaybackendaddress.go new file mode 100644 index 00000000000..b5e5db2cc91 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_applicationgatewaybackendaddress.go @@ -0,0 +1,9 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddress struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_applicationgatewaybackendaddresspool.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_applicationgatewaybackendaddresspool.go new file mode 100644 index 00000000000..a08e1bc2b3d --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_applicationgatewaybackendaddresspool.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_applicationgatewaybackendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_applicationgatewaybackendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..a1c62d3aff0 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_applicationgatewaybackendaddresspoolpropertiesformat.go @@ -0,0 +1,10 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPoolPropertiesFormat struct { + BackendAddresses *[]ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"` + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_applicationgatewayipconfiguration.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_applicationgatewayipconfiguration.go new file mode 100644 index 00000000000..29707ea0cc0 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_applicationgatewayipconfiguration.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_applicationgatewayipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_applicationgatewayipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..3d43bc376d7 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_applicationgatewayipconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..3886b3a62a9 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..2f9f71ffdfe --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_backendaddresspool.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_backendaddresspool.go new file mode 100644 index 00000000000..2d91da68e06 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_backendaddresspool.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_backendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_backendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..da2c343dcde --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_backendaddresspoolpropertiesformat.go @@ -0,0 +1,19 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPoolPropertiesFormat struct { + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + DrainPeriodInSeconds *int64 `json:"drainPeriodInSeconds,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancerBackendAddresses *[]LoadBalancerBackendAddress `json:"loadBalancerBackendAddresses,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + Location *string `json:"location,omitempty"` + OutboundRule *SubResource `json:"outboundRule,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SyncMode *SyncMode `json:"syncMode,omitempty"` + TunnelInterfaces *[]GatewayLoadBalancerTunnelInterface `json:"tunnelInterfaces,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_customdnsconfigpropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_customdnsconfigpropertiesformat.go new file mode 100644 index 00000000000..409dfc74f46 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_customdnsconfigpropertiesformat.go @@ -0,0 +1,9 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomDnsConfigPropertiesFormat struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_ddossettings.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_ddossettings.go new file mode 100644 index 00000000000..9db9902cfa2 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_ddossettings.go @@ -0,0 +1,9 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettings struct { + DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"` + ProtectionMode *DdosSettingsProtectionMode `json:"protectionMode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_delegation.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_delegation.go new file mode 100644 index 00000000000..a81e856e7ea --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_delegation.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Delegation struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceDelegationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_flowlog.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_flowlog.go new file mode 100644 index 00000000000..40c6e24d7ea --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_flowlog.go @@ -0,0 +1,19 @@ +package vmsspublicipaddresses + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLog struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FlowLogPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_flowlogformatparameters.go new file mode 100644 index 00000000000..bbe90b3e68a --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_flowlogpropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_flowlogpropertiesformat.go new file mode 100644 index 00000000000..4dc53318cc3 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_flowlogpropertiesformat.go @@ -0,0 +1,15 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogPropertiesFormat struct { + Enabled *bool `json:"enabled,omitempty"` + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` + TargetResourceGuid *string `json:"targetResourceGuid,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_frontendipconfiguration.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_frontendipconfiguration.go new file mode 100644 index 00000000000..e9d4835cde7 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_frontendipconfiguration.go @@ -0,0 +1,17 @@ +package vmsspublicipaddresses + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_frontendipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_frontendipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..158c303f1eb --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_frontendipconfigurationpropertiesformat.go @@ -0,0 +1,19 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfigurationPropertiesFormat struct { + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + InboundNatPools *[]SubResource `json:"inboundNatPools,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_gatewayloadbalancertunnelinterface.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_gatewayloadbalancertunnelinterface.go new file mode 100644 index 00000000000..a997e703d5a --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_gatewayloadbalancertunnelinterface.go @@ -0,0 +1,11 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayLoadBalancerTunnelInterface struct { + Identifier *int64 `json:"identifier,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *GatewayLoadBalancerTunnelProtocol `json:"protocol,omitempty"` + Type *GatewayLoadBalancerTunnelInterfaceType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_inboundnatrule.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_inboundnatrule.go new file mode 100644 index 00000000000..8d6d17e1ee6 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_inboundnatrule.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundNatRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_inboundnatrulepropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_inboundnatrulepropertiesformat.go new file mode 100644 index 00000000000..0400f6c7e24 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_inboundnatrulepropertiesformat.go @@ -0,0 +1,19 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendIPConfiguration *NetworkInterfaceIPConfiguration `json:"backendIPConfiguration,omitempty"` + BackendPort *int64 `json:"backendPort,omitempty"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + FrontendPortRangeEnd *int64 `json:"frontendPortRangeEnd,omitempty"` + FrontendPortRangeStart *int64 `json:"frontendPortRangeStart,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol *TransportProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_ipconfiguration.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_ipconfiguration.go new file mode 100644 index 00000000000..ec14aaebfb2 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_ipconfiguration.go @@ -0,0 +1,11 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_ipconfigurationprofile.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_ipconfigurationprofile.go new file mode 100644 index 00000000000..04f420bc9e7 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_ipconfigurationprofile.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationProfilePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_ipconfigurationprofilepropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_ipconfigurationprofilepropertiesformat.go new file mode 100644 index 00000000000..cc1b778ec31 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_ipconfigurationprofilepropertiesformat.go @@ -0,0 +1,9 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfilePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_ipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_ipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..5c56fd40bae --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_ipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_iptag.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_iptag.go new file mode 100644 index 00000000000..0f545f4b72b --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_iptag.go @@ -0,0 +1,9 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPTag struct { + IPTagType *string `json:"ipTagType,omitempty"` + Tag *string `json:"tag,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_loadbalancerbackendaddress.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_loadbalancerbackendaddress.go new file mode 100644 index 00000000000..6c1a542cb79 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_loadbalancerbackendaddress.go @@ -0,0 +1,9 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddress struct { + Name *string `json:"name,omitempty"` + Properties *LoadBalancerBackendAddressPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_loadbalancerbackendaddresspropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_loadbalancerbackendaddresspropertiesformat.go new file mode 100644 index 00000000000..046c6088344 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_loadbalancerbackendaddresspropertiesformat.go @@ -0,0 +1,14 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPropertiesFormat struct { + AdminState *LoadBalancerBackendAddressAdminState `json:"adminState,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + InboundNatRulesPortMapping *[]NatRulePortMapping `json:"inboundNatRulesPortMapping,omitempty"` + LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIPConfiguration,omitempty"` + NetworkInterfaceIPConfiguration *SubResource `json:"networkInterfaceIPConfiguration,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_natgateway.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_natgateway.go new file mode 100644 index 00000000000..d11b8d3920d --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_natgateway.go @@ -0,0 +1,20 @@ +package vmsspublicipaddresses + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"` + Sku *NatGatewaySku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_natgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_natgatewaypropertiesformat.go new file mode 100644 index 00000000000..9b3d069fdba --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_natgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayPropertiesFormat struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]SubResource `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_natgatewaysku.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_natgatewaysku.go new file mode 100644 index 00000000000..3b91a6c98fb --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_natgatewaysku.go @@ -0,0 +1,8 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySku struct { + Name *NatGatewaySkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_natruleportmapping.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_natruleportmapping.go new file mode 100644 index 00000000000..09ace168bf2 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_natruleportmapping.go @@ -0,0 +1,10 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulePortMapping struct { + BackendPort *int64 `json:"backendPort,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + InboundNatRuleName *string `json:"inboundNatRuleName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterface.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterface.go new file mode 100644 index 00000000000..e494f13e660 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterface.go @@ -0,0 +1,19 @@ +package vmsspublicipaddresses + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterface struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfacePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterfacednssettings.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterfacednssettings.go new file mode 100644 index 00000000000..178cb8cc8d0 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterfacednssettings.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceDnsSettings struct { + AppliedDnsServers *[]string `json:"appliedDnsServers,omitempty"` + DnsServers *[]string `json:"dnsServers,omitempty"` + InternalDnsNameLabel *string `json:"internalDnsNameLabel,omitempty"` + InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty"` + InternalFqdn *string `json:"internalFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterfaceipconfiguration.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterfaceipconfiguration.go new file mode 100644 index 00000000000..5e15e82902b --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterfaceipconfiguration.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go new file mode 100644 index 00000000000..5b63a7f1427 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go @@ -0,0 +1,10 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties struct { + Fqdns *[]string `json:"fqdns,omitempty"` + GroupId *string `json:"groupId,omitempty"` + RequiredMemberName *string `json:"requiredMemberName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterfaceipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterfaceipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..ef82bcec7f4 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterfaceipconfigurationpropertiesformat.go @@ -0,0 +1,22 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPropertiesFormat struct { + ApplicationGatewayBackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"applicationGatewayBackendAddressPools,omitempty"` + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + LoadBalancerBackendAddressPools *[]BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"` + LoadBalancerInboundNatRules *[]InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressPrefixLength *int64 `json:"privateIPAddressPrefixLength,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + PrivateLinkConnectionProperties *NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties `json:"privateLinkConnectionProperties,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` + VirtualNetworkTaps *[]VirtualNetworkTap `json:"virtualNetworkTaps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterfacepropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterfacepropertiesformat.go new file mode 100644 index 00000000000..67403077a5f --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterfacepropertiesformat.go @@ -0,0 +1,29 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfacePropertiesFormat struct { + AuxiliaryMode *NetworkInterfaceAuxiliaryMode `json:"auxiliaryMode,omitempty"` + AuxiliarySku *NetworkInterfaceAuxiliarySku `json:"auxiliarySku,omitempty"` + DisableTcpStateTracking *bool `json:"disableTcpStateTracking,omitempty"` + DnsSettings *NetworkInterfaceDnsSettings `json:"dnsSettings,omitempty"` + DscpConfiguration *SubResource `json:"dscpConfiguration,omitempty"` + EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"` + EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"` + HostedWorkloads *[]string `json:"hostedWorkloads,omitempty"` + IPConfigurations *[]NetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + MacAddress *string `json:"macAddress,omitempty"` + MigrationPhase *NetworkInterfaceMigrationPhase `json:"migrationPhase,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + NicType *NetworkInterfaceNicType `json:"nicType,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkService *PrivateLinkService `json:"privateLinkService,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + TapConfigurations *[]NetworkInterfaceTapConfiguration `json:"tapConfigurations,omitempty"` + VirtualMachine *SubResource `json:"virtualMachine,omitempty"` + VnetEncryptionSupported *bool `json:"vnetEncryptionSupported,omitempty"` + WorkloadType *string `json:"workloadType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterfacetapconfiguration.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterfacetapconfiguration.go new file mode 100644 index 00000000000..89d8808f2b8 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterfacetapconfiguration.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceTapConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterfacetapconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterfacetapconfigurationpropertiesformat.go new file mode 100644 index 00000000000..dd5cb5650a9 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networkinterfacetapconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualNetworkTap *VirtualNetworkTap `json:"virtualNetworkTap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networksecuritygroup.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networksecuritygroup.go new file mode 100644 index 00000000000..390dad55504 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networksecuritygroup.go @@ -0,0 +1,14 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networksecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networksecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..fd1b9110f0b --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_networksecuritygrouppropertiesformat.go @@ -0,0 +1,15 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupPropertiesFormat struct { + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + FlowLogs *[]FlowLog `json:"flowLogs,omitempty"` + FlushConnection *bool `json:"flushConnection,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privateendpoint.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privateendpoint.go new file mode 100644 index 00000000000..9d1b5059d51 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privateendpoint.go @@ -0,0 +1,19 @@ +package vmsspublicipaddresses + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpoint struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privateendpointconnection.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privateendpointconnection.go new file mode 100644 index 00000000000..37a23931c51 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privateendpointconnection.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privateendpointconnectionproperties.go new file mode 100644 index 00000000000..edd52323b43 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privateendpointconnectionproperties.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateEndpointLocation *string `json:"privateEndpointLocation,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privateendpointipconfiguration.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privateendpointipconfiguration.go new file mode 100644 index 00000000000..7e43ad06e3b --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privateendpointipconfiguration.go @@ -0,0 +1,11 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privateendpointipconfigurationproperties.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privateendpointipconfigurationproperties.go new file mode 100644 index 00000000000..13d66a23bb9 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privateendpointipconfigurationproperties.go @@ -0,0 +1,10 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfigurationProperties struct { + GroupId *string `json:"groupId,omitempty"` + MemberName *string `json:"memberName,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privateendpointproperties.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privateendpointproperties.go new file mode 100644 index 00000000000..9d7c5581f99 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privateendpointproperties.go @@ -0,0 +1,16 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointProperties struct { + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + CustomDnsConfigs *[]CustomDnsConfigPropertiesFormat `json:"customDnsConfigs,omitempty"` + CustomNetworkInterfaceName *string `json:"customNetworkInterfaceName,omitempty"` + IPConfigurations *[]PrivateEndpointIPConfiguration `json:"ipConfigurations,omitempty"` + ManualPrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"manualPrivateLinkServiceConnections,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"privateLinkServiceConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privatelinkservice.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privatelinkservice.go new file mode 100644 index 00000000000..35696ff7af8 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privatelinkservice.go @@ -0,0 +1,19 @@ +package vmsspublicipaddresses + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkService struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privatelinkserviceconnection.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privatelinkserviceconnection.go new file mode 100644 index 00000000000..15a277940b8 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privatelinkserviceconnection.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privatelinkserviceconnectionproperties.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privatelinkserviceconnectionproperties.go new file mode 100644 index 00000000000..36505cb0e91 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privatelinkserviceconnectionproperties.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionProperties struct { + GroupIds *[]string `json:"groupIds,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + PrivateLinkServiceId *string `json:"privateLinkServiceId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestMessage *string `json:"requestMessage,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privatelinkserviceconnectionstate.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privatelinkserviceconnectionstate.go new file mode 100644 index 00000000000..87693646750 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privatelinkserviceconnectionstate.go @@ -0,0 +1,10 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionState struct { + ActionsRequired *string `json:"actionsRequired,omitempty"` + Description *string `json:"description,omitempty"` + Status *string `json:"status,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privatelinkserviceipconfiguration.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privatelinkserviceipconfiguration.go new file mode 100644 index 00000000000..ffcb7babff1 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privatelinkserviceipconfiguration.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privatelinkserviceipconfigurationproperties.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privatelinkserviceipconfigurationproperties.go new file mode 100644 index 00000000000..1ac62f6b573 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privatelinkserviceipconfigurationproperties.go @@ -0,0 +1,13 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privatelinkserviceproperties.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privatelinkserviceproperties.go new file mode 100644 index 00000000000..5a3793b3967 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_privatelinkserviceproperties.go @@ -0,0 +1,17 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceProperties struct { + Alias *string `json:"alias,omitempty"` + AutoApproval *ResourceSet `json:"autoApproval,omitempty"` + EnableProxyProtocol *bool `json:"enableProxyProtocol,omitempty"` + Fqdns *[]string `json:"fqdns,omitempty"` + IPConfigurations *[]PrivateLinkServiceIPConfiguration `json:"ipConfigurations,omitempty"` + LoadBalancerFrontendIPConfigurations *[]FrontendIPConfiguration `json:"loadBalancerFrontendIpConfigurations,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Visibility *ResourceSet `json:"visibility,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_publicipaddress.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_publicipaddress.go new file mode 100644 index 00000000000..007f38c15a0 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_publicipaddress.go @@ -0,0 +1,22 @@ +package vmsspublicipaddresses + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddress struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PublicIPAddressPropertiesFormat `json:"properties,omitempty"` + Sku *PublicIPAddressSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_publicipaddressdnssettings.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_publicipaddressdnssettings.go new file mode 100644 index 00000000000..5c5c8e381d5 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_publicipaddressdnssettings.go @@ -0,0 +1,11 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressDnsSettings struct { + DomainNameLabel *string `json:"domainNameLabel,omitempty"` + DomainNameLabelScope *PublicIPAddressDnsSettingsDomainNameLabelScope `json:"domainNameLabelScope,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + ReverseFqdn *string `json:"reverseFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_publicipaddresspropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_publicipaddresspropertiesformat.go new file mode 100644 index 00000000000..04e2f5851e5 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_publicipaddresspropertiesformat.go @@ -0,0 +1,23 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressPropertiesFormat struct { + DdosSettings *DdosSettings `json:"ddosSettings,omitempty"` + DeleteOption *DeleteOptions `json:"deleteOption,omitempty"` + DnsSettings *PublicIPAddressDnsSettings `json:"dnsSettings,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty"` + IPTags *[]IPTag `json:"ipTags,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + LinkedPublicIPAddress *PublicIPAddress `json:"linkedPublicIPAddress,omitempty"` + MigrationPhase *PublicIPAddressMigrationPhase `json:"migrationPhase,omitempty"` + NatGateway *NatGateway `json:"natGateway,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"` + PublicIPAllocationMethod *IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServicePublicIPAddress *PublicIPAddress `json:"servicePublicIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_publicipaddresssku.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_publicipaddresssku.go new file mode 100644 index 00000000000..836d26bc7cf --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_publicipaddresssku.go @@ -0,0 +1,9 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressSku struct { + Name *PublicIPAddressSkuName `json:"name,omitempty"` + Tier *PublicIPAddressSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_resourcenavigationlink.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_resourcenavigationlink.go new file mode 100644 index 00000000000..2001bb2021a --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_resourcenavigationlink.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ResourceNavigationLinkFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_resourcenavigationlinkformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_resourcenavigationlinkformat.go new file mode 100644 index 00000000000..255ed3f4d7d --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_resourcenavigationlinkformat.go @@ -0,0 +1,10 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLinkFormat struct { + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_resourceset.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_resourceset.go new file mode 100644 index 00000000000..aa795989827 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_resourceset.go @@ -0,0 +1,8 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceSet struct { + Subscriptions *[]string `json:"subscriptions,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..18486b1b930 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_route.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_route.go new file mode 100644 index 00000000000..d5542b4d6a2 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_route.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Route struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RoutePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_routepropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_routepropertiesformat.go new file mode 100644 index 00000000000..7306e155bd1 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_routepropertiesformat.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutePropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + HasBgpOverride *bool `json:"hasBgpOverride,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + NextHopType RouteNextHopType `json:"nextHopType"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_routetable.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_routetable.go new file mode 100644 index 00000000000..0e623eb4de8 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_routetable.go @@ -0,0 +1,14 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTable struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteTablePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_routetablepropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_routetablepropertiesformat.go new file mode 100644 index 00000000000..247f8d8ff0b --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_routetablepropertiesformat.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTablePropertiesFormat struct { + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Routes *[]Route `json:"routes,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_securityrule.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_securityrule.go new file mode 100644 index 00000000000..be3c680f597 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_securityrule.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_securityrulepropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_securityrulepropertiesformat.go new file mode 100644 index 00000000000..45a25e92fa7 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_securityrulepropertiesformat.go @@ -0,0 +1,23 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulePropertiesFormat struct { + Access SecurityRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction SecurityRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_serviceassociationlink.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_serviceassociationlink.go new file mode 100644 index 00000000000..6e209a0a72c --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_serviceassociationlink.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceAssociationLinkPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_serviceassociationlinkpropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_serviceassociationlinkpropertiesformat.go new file mode 100644 index 00000000000..7761fb2f5e9 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_serviceassociationlinkpropertiesformat.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLinkPropertiesFormat struct { + AllowDelete *bool `json:"allowDelete,omitempty"` + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + Locations *[]string `json:"locations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_servicedelegationpropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_servicedelegationpropertiesformat.go new file mode 100644 index 00000000000..0ce0853975d --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_servicedelegationpropertiesformat.go @@ -0,0 +1,10 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceDelegationPropertiesFormat struct { + Actions *[]string `json:"actions,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_serviceendpointpolicy.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_serviceendpointpolicy.go new file mode 100644 index 00000000000..32e2b036118 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_serviceendpointpolicy.go @@ -0,0 +1,15 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Kind *string `json:"kind,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_serviceendpointpolicydefinition.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_serviceendpointpolicydefinition.go new file mode 100644 index 00000000000..d0368e894a0 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_serviceendpointpolicydefinition.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinition struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_serviceendpointpolicydefinitionpropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_serviceendpointpolicydefinitionpropertiesformat.go new file mode 100644 index 00000000000..970c54c6772 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_serviceendpointpolicydefinitionpropertiesformat.go @@ -0,0 +1,11 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionPropertiesFormat struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` + ServiceResources *[]string `json:"serviceResources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_serviceendpointpolicypropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_serviceendpointpolicypropertiesformat.go new file mode 100644 index 00000000000..fd6dca6bdb5 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_serviceendpointpolicypropertiesformat.go @@ -0,0 +1,13 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyPropertiesFormat struct { + ContextualServiceEndpointPolicies *[]string `json:"contextualServiceEndpointPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServiceAlias *string `json:"serviceAlias,omitempty"` + ServiceEndpointPolicyDefinitions *[]ServiceEndpointPolicyDefinition `json:"serviceEndpointPolicyDefinitions,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_serviceendpointpropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_serviceendpointpropertiesformat.go new file mode 100644 index 00000000000..095a4886e15 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_serviceendpointpropertiesformat.go @@ -0,0 +1,11 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPropertiesFormat struct { + Locations *[]string `json:"locations,omitempty"` + NetworkIdentifier *SubResource `json:"networkIdentifier,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_subnet.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_subnet.go new file mode 100644 index 00000000000..fd72bf01d45 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_subnet.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Subnet struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SubnetPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_subnetpropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_subnetpropertiesformat.go new file mode 100644 index 00000000000..1d53106ccce --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_subnetpropertiesformat.go @@ -0,0 +1,28 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + ApplicationGatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"applicationGatewayIPConfigurations,omitempty"` + DefaultOutboundAccess *bool `json:"defaultOutboundAccess,omitempty"` + Delegations *[]Delegation `json:"delegations,omitempty"` + IPAllocations *[]SubResource `json:"ipAllocations,omitempty"` + IPConfigurationProfiles *[]IPConfigurationProfile `json:"ipConfigurationProfiles,omitempty"` + IPConfigurations *[]IPConfiguration `json:"ipConfigurations,omitempty"` + NatGateway *SubResource `json:"natGateway,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + PrivateEndpointNetworkPolicies *VirtualNetworkPrivateEndpointNetworkPolicies `json:"privateEndpointNetworkPolicies,omitempty"` + PrivateEndpoints *[]PrivateEndpoint `json:"privateEndpoints,omitempty"` + PrivateLinkServiceNetworkPolicies *VirtualNetworkPrivateLinkServiceNetworkPolicies `json:"privateLinkServiceNetworkPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Purpose *string `json:"purpose,omitempty"` + ResourceNavigationLinks *[]ResourceNavigationLink `json:"resourceNavigationLinks,omitempty"` + RouteTable *RouteTable `json:"routeTable,omitempty"` + ServiceAssociationLinks *[]ServiceAssociationLink `json:"serviceAssociationLinks,omitempty"` + ServiceEndpointPolicies *[]ServiceEndpointPolicy `json:"serviceEndpointPolicies,omitempty"` + ServiceEndpoints *[]ServiceEndpointPropertiesFormat `json:"serviceEndpoints,omitempty"` + SharingScope *SharingScope `json:"sharingScope,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_subresource.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_subresource.go new file mode 100644 index 00000000000..c4627dc0146 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_subresource.go @@ -0,0 +1,8 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..9685e4269c8 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..e18abbc1afe --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_virtualnetworktap.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_virtualnetworktap.go new file mode 100644 index 00000000000..80ebd9f850d --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_virtualnetworktap.go @@ -0,0 +1,14 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkTapPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_virtualnetworktappropertiesformat.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_virtualnetworktappropertiesformat.go new file mode 100644 index 00000000000..cff477ca81b --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/model_virtualnetworktappropertiesformat.go @@ -0,0 +1,13 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapPropertiesFormat struct { + DestinationLoadBalancerFrontEndIPConfiguration *FrontendIPConfiguration `json:"destinationLoadBalancerFrontEndIPConfiguration,omitempty"` + DestinationNetworkInterfaceIPConfiguration *NetworkInterfaceIPConfiguration `json:"destinationNetworkInterfaceIPConfiguration,omitempty"` + DestinationPort *int64 `json:"destinationPort,omitempty"` + NetworkInterfaceTapConfigurations *[]NetworkInterfaceTapConfiguration `json:"networkInterfaceTapConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/predicates.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/predicates.go new file mode 100644 index 00000000000..3173ab41a32 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/predicates.go @@ -0,0 +1,37 @@ +package vmsspublicipaddresses + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p PublicIPAddressOperationPredicate) Matches(input PublicIPAddress) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/vmsspublicipaddresses/version.go b/resource-manager/network/2024-01-01/vmsspublicipaddresses/version.go new file mode 100644 index 00000000000..4a5290e3c90 --- /dev/null +++ b/resource-manager/network/2024-01-01/vmsspublicipaddresses/version.go @@ -0,0 +1,12 @@ +package vmsspublicipaddresses + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/vmsspublicipaddresses/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/vpngateways/README.md b/resource-manager/network/2024-01-01/vpngateways/README.md new file mode 100644 index 00000000000..1a9a027cd39 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/README.md @@ -0,0 +1,83 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/vpngateways` Documentation + +The `vpngateways` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/vpngateways" +``` + + +### Client Initialization + +```go +client := vpngateways.NewVpnGatewaysClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `VpnGatewaysClient.Reset` + +```go +ctx := context.TODO() +id := vpngateways.NewVpnGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue") + +if err := client.ResetThenPoll(ctx, id, vpngateways.DefaultResetOperationOptions()); err != nil { + // handle the error +} +``` + + +### Example Usage: `VpnGatewaysClient.StartPacketCapture` + +```go +ctx := context.TODO() +id := vpngateways.NewVpnGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue") + +payload := vpngateways.VpnGatewayPacketCaptureStartParameters{ + // ... +} + + +if err := client.StartPacketCaptureThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VpnGatewaysClient.StopPacketCapture` + +```go +ctx := context.TODO() +id := vpngateways.NewVpnGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue") + +payload := vpngateways.VpnGatewayPacketCaptureStopParameters{ + // ... +} + + +if err := client.StopPacketCaptureThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` + + +### Example Usage: `VpnGatewaysClient.UpdateTags` + +```go +ctx := context.TODO() +id := vpngateways.NewVpnGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue") + +payload := vpngateways.TagsObject{ + // ... +} + + +if err := client.UpdateTagsThenPoll(ctx, id, payload); err != nil { + // handle the error +} +``` diff --git a/resource-manager/network/2024-01-01/vpngateways/client.go b/resource-manager/network/2024-01-01/vpngateways/client.go new file mode 100644 index 00000000000..5679554f1a5 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/client.go @@ -0,0 +1,26 @@ +package vpngateways + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnGatewaysClient struct { + Client *resourcemanager.Client +} + +func NewVpnGatewaysClientWithBaseURI(sdkApi sdkEnv.Api) (*VpnGatewaysClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "vpngateways", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating VpnGatewaysClient: %+v", err) + } + + return &VpnGatewaysClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/vpngateways/constants.go b/resource-manager/network/2024-01-01/vpngateways/constants.go new file mode 100644 index 00000000000..2f1745c4980 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/constants.go @@ -0,0 +1,657 @@ +package vpngateways + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DhGroup string + +const ( + DhGroupDHGroupOne DhGroup = "DHGroup1" + DhGroupDHGroupOneFour DhGroup = "DHGroup14" + DhGroupDHGroupTwo DhGroup = "DHGroup2" + DhGroupDHGroupTwoFour DhGroup = "DHGroup24" + DhGroupDHGroupTwoZeroFourEight DhGroup = "DHGroup2048" + DhGroupECPThreeEightFour DhGroup = "ECP384" + DhGroupECPTwoFiveSix DhGroup = "ECP256" + DhGroupNone DhGroup = "None" +) + +func PossibleValuesForDhGroup() []string { + return []string{ + string(DhGroupDHGroupOne), + string(DhGroupDHGroupOneFour), + string(DhGroupDHGroupTwo), + string(DhGroupDHGroupTwoFour), + string(DhGroupDHGroupTwoZeroFourEight), + string(DhGroupECPThreeEightFour), + string(DhGroupECPTwoFiveSix), + string(DhGroupNone), + } +} + +func (s *DhGroup) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDhGroup(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDhGroup(input string) (*DhGroup, error) { + vals := map[string]DhGroup{ + "dhgroup1": DhGroupDHGroupOne, + "dhgroup14": DhGroupDHGroupOneFour, + "dhgroup2": DhGroupDHGroupTwo, + "dhgroup24": DhGroupDHGroupTwoFour, + "dhgroup2048": DhGroupDHGroupTwoZeroFourEight, + "ecp384": DhGroupECPThreeEightFour, + "ecp256": DhGroupECPTwoFiveSix, + "none": DhGroupNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DhGroup(input) + return &out, nil +} + +type IPsecEncryption string + +const ( + IPsecEncryptionAESOneNineTwo IPsecEncryption = "AES192" + IPsecEncryptionAESOneTwoEight IPsecEncryption = "AES128" + IPsecEncryptionAESTwoFiveSix IPsecEncryption = "AES256" + IPsecEncryptionDES IPsecEncryption = "DES" + IPsecEncryptionDESThree IPsecEncryption = "DES3" + IPsecEncryptionGCMAESOneNineTwo IPsecEncryption = "GCMAES192" + IPsecEncryptionGCMAESOneTwoEight IPsecEncryption = "GCMAES128" + IPsecEncryptionGCMAESTwoFiveSix IPsecEncryption = "GCMAES256" + IPsecEncryptionNone IPsecEncryption = "None" +) + +func PossibleValuesForIPsecEncryption() []string { + return []string{ + string(IPsecEncryptionAESOneNineTwo), + string(IPsecEncryptionAESOneTwoEight), + string(IPsecEncryptionAESTwoFiveSix), + string(IPsecEncryptionDES), + string(IPsecEncryptionDESThree), + string(IPsecEncryptionGCMAESOneNineTwo), + string(IPsecEncryptionGCMAESOneTwoEight), + string(IPsecEncryptionGCMAESTwoFiveSix), + string(IPsecEncryptionNone), + } +} + +func (s *IPsecEncryption) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPsecEncryption(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPsecEncryption(input string) (*IPsecEncryption, error) { + vals := map[string]IPsecEncryption{ + "aes192": IPsecEncryptionAESOneNineTwo, + "aes128": IPsecEncryptionAESOneTwoEight, + "aes256": IPsecEncryptionAESTwoFiveSix, + "des": IPsecEncryptionDES, + "des3": IPsecEncryptionDESThree, + "gcmaes192": IPsecEncryptionGCMAESOneNineTwo, + "gcmaes128": IPsecEncryptionGCMAESOneTwoEight, + "gcmaes256": IPsecEncryptionGCMAESTwoFiveSix, + "none": IPsecEncryptionNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPsecEncryption(input) + return &out, nil +} + +type IPsecIntegrity string + +const ( + IPsecIntegrityGCMAESOneNineTwo IPsecIntegrity = "GCMAES192" + IPsecIntegrityGCMAESOneTwoEight IPsecIntegrity = "GCMAES128" + IPsecIntegrityGCMAESTwoFiveSix IPsecIntegrity = "GCMAES256" + IPsecIntegrityMDFive IPsecIntegrity = "MD5" + IPsecIntegritySHAOne IPsecIntegrity = "SHA1" + IPsecIntegritySHATwoFiveSix IPsecIntegrity = "SHA256" +) + +func PossibleValuesForIPsecIntegrity() []string { + return []string{ + string(IPsecIntegrityGCMAESOneNineTwo), + string(IPsecIntegrityGCMAESOneTwoEight), + string(IPsecIntegrityGCMAESTwoFiveSix), + string(IPsecIntegrityMDFive), + string(IPsecIntegritySHAOne), + string(IPsecIntegritySHATwoFiveSix), + } +} + +func (s *IPsecIntegrity) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPsecIntegrity(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPsecIntegrity(input string) (*IPsecIntegrity, error) { + vals := map[string]IPsecIntegrity{ + "gcmaes192": IPsecIntegrityGCMAESOneNineTwo, + "gcmaes128": IPsecIntegrityGCMAESOneTwoEight, + "gcmaes256": IPsecIntegrityGCMAESTwoFiveSix, + "md5": IPsecIntegrityMDFive, + "sha1": IPsecIntegritySHAOne, + "sha256": IPsecIntegritySHATwoFiveSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPsecIntegrity(input) + return &out, nil +} + +type IkeEncryption string + +const ( + IkeEncryptionAESOneNineTwo IkeEncryption = "AES192" + IkeEncryptionAESOneTwoEight IkeEncryption = "AES128" + IkeEncryptionAESTwoFiveSix IkeEncryption = "AES256" + IkeEncryptionDES IkeEncryption = "DES" + IkeEncryptionDESThree IkeEncryption = "DES3" + IkeEncryptionGCMAESOneTwoEight IkeEncryption = "GCMAES128" + IkeEncryptionGCMAESTwoFiveSix IkeEncryption = "GCMAES256" +) + +func PossibleValuesForIkeEncryption() []string { + return []string{ + string(IkeEncryptionAESOneNineTwo), + string(IkeEncryptionAESOneTwoEight), + string(IkeEncryptionAESTwoFiveSix), + string(IkeEncryptionDES), + string(IkeEncryptionDESThree), + string(IkeEncryptionGCMAESOneTwoEight), + string(IkeEncryptionGCMAESTwoFiveSix), + } +} + +func (s *IkeEncryption) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIkeEncryption(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIkeEncryption(input string) (*IkeEncryption, error) { + vals := map[string]IkeEncryption{ + "aes192": IkeEncryptionAESOneNineTwo, + "aes128": IkeEncryptionAESOneTwoEight, + "aes256": IkeEncryptionAESTwoFiveSix, + "des": IkeEncryptionDES, + "des3": IkeEncryptionDESThree, + "gcmaes128": IkeEncryptionGCMAESOneTwoEight, + "gcmaes256": IkeEncryptionGCMAESTwoFiveSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IkeEncryption(input) + return &out, nil +} + +type IkeIntegrity string + +const ( + IkeIntegrityGCMAESOneTwoEight IkeIntegrity = "GCMAES128" + IkeIntegrityGCMAESTwoFiveSix IkeIntegrity = "GCMAES256" + IkeIntegrityMDFive IkeIntegrity = "MD5" + IkeIntegritySHAOne IkeIntegrity = "SHA1" + IkeIntegritySHAThreeEightFour IkeIntegrity = "SHA384" + IkeIntegritySHATwoFiveSix IkeIntegrity = "SHA256" +) + +func PossibleValuesForIkeIntegrity() []string { + return []string{ + string(IkeIntegrityGCMAESOneTwoEight), + string(IkeIntegrityGCMAESTwoFiveSix), + string(IkeIntegrityMDFive), + string(IkeIntegritySHAOne), + string(IkeIntegritySHAThreeEightFour), + string(IkeIntegritySHATwoFiveSix), + } +} + +func (s *IkeIntegrity) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIkeIntegrity(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIkeIntegrity(input string) (*IkeIntegrity, error) { + vals := map[string]IkeIntegrity{ + "gcmaes128": IkeIntegrityGCMAESOneTwoEight, + "gcmaes256": IkeIntegrityGCMAESTwoFiveSix, + "md5": IkeIntegrityMDFive, + "sha1": IkeIntegritySHAOne, + "sha384": IkeIntegritySHAThreeEightFour, + "sha256": IkeIntegritySHATwoFiveSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IkeIntegrity(input) + return &out, nil +} + +type PfsGroup string + +const ( + PfsGroupECPThreeEightFour PfsGroup = "ECP384" + PfsGroupECPTwoFiveSix PfsGroup = "ECP256" + PfsGroupNone PfsGroup = "None" + PfsGroupPFSMM PfsGroup = "PFSMM" + PfsGroupPFSOne PfsGroup = "PFS1" + PfsGroupPFSOneFour PfsGroup = "PFS14" + PfsGroupPFSTwo PfsGroup = "PFS2" + PfsGroupPFSTwoFour PfsGroup = "PFS24" + PfsGroupPFSTwoZeroFourEight PfsGroup = "PFS2048" +) + +func PossibleValuesForPfsGroup() []string { + return []string{ + string(PfsGroupECPThreeEightFour), + string(PfsGroupECPTwoFiveSix), + string(PfsGroupNone), + string(PfsGroupPFSMM), + string(PfsGroupPFSOne), + string(PfsGroupPFSOneFour), + string(PfsGroupPFSTwo), + string(PfsGroupPFSTwoFour), + string(PfsGroupPFSTwoZeroFourEight), + } +} + +func (s *PfsGroup) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePfsGroup(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePfsGroup(input string) (*PfsGroup, error) { + vals := map[string]PfsGroup{ + "ecp384": PfsGroupECPThreeEightFour, + "ecp256": PfsGroupECPTwoFiveSix, + "none": PfsGroupNone, + "pfsmm": PfsGroupPFSMM, + "pfs1": PfsGroupPFSOne, + "pfs14": PfsGroupPFSOneFour, + "pfs2": PfsGroupPFSTwo, + "pfs24": PfsGroupPFSTwoFour, + "pfs2048": PfsGroupPFSTwoZeroFourEight, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PfsGroup(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type VirtualNetworkGatewayConnectionProtocol string + +const ( + VirtualNetworkGatewayConnectionProtocolIKEvOne VirtualNetworkGatewayConnectionProtocol = "IKEv1" + VirtualNetworkGatewayConnectionProtocolIKEvTwo VirtualNetworkGatewayConnectionProtocol = "IKEv2" +) + +func PossibleValuesForVirtualNetworkGatewayConnectionProtocol() []string { + return []string{ + string(VirtualNetworkGatewayConnectionProtocolIKEvOne), + string(VirtualNetworkGatewayConnectionProtocolIKEvTwo), + } +} + +func (s *VirtualNetworkGatewayConnectionProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkGatewayConnectionProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkGatewayConnectionProtocol(input string) (*VirtualNetworkGatewayConnectionProtocol, error) { + vals := map[string]VirtualNetworkGatewayConnectionProtocol{ + "ikev1": VirtualNetworkGatewayConnectionProtocolIKEvOne, + "ikev2": VirtualNetworkGatewayConnectionProtocolIKEvTwo, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkGatewayConnectionProtocol(input) + return &out, nil +} + +type VnetLocalRouteOverrideCriteria string + +const ( + VnetLocalRouteOverrideCriteriaContains VnetLocalRouteOverrideCriteria = "Contains" + VnetLocalRouteOverrideCriteriaEqual VnetLocalRouteOverrideCriteria = "Equal" +) + +func PossibleValuesForVnetLocalRouteOverrideCriteria() []string { + return []string{ + string(VnetLocalRouteOverrideCriteriaContains), + string(VnetLocalRouteOverrideCriteriaEqual), + } +} + +func (s *VnetLocalRouteOverrideCriteria) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVnetLocalRouteOverrideCriteria(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVnetLocalRouteOverrideCriteria(input string) (*VnetLocalRouteOverrideCriteria, error) { + vals := map[string]VnetLocalRouteOverrideCriteria{ + "contains": VnetLocalRouteOverrideCriteriaContains, + "equal": VnetLocalRouteOverrideCriteriaEqual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VnetLocalRouteOverrideCriteria(input) + return &out, nil +} + +type VpnConnectionStatus string + +const ( + VpnConnectionStatusConnected VpnConnectionStatus = "Connected" + VpnConnectionStatusConnecting VpnConnectionStatus = "Connecting" + VpnConnectionStatusNotConnected VpnConnectionStatus = "NotConnected" + VpnConnectionStatusUnknown VpnConnectionStatus = "Unknown" +) + +func PossibleValuesForVpnConnectionStatus() []string { + return []string{ + string(VpnConnectionStatusConnected), + string(VpnConnectionStatusConnecting), + string(VpnConnectionStatusNotConnected), + string(VpnConnectionStatusUnknown), + } +} + +func (s *VpnConnectionStatus) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnConnectionStatus(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnConnectionStatus(input string) (*VpnConnectionStatus, error) { + vals := map[string]VpnConnectionStatus{ + "connected": VpnConnectionStatusConnected, + "connecting": VpnConnectionStatusConnecting, + "notconnected": VpnConnectionStatusNotConnected, + "unknown": VpnConnectionStatusUnknown, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnConnectionStatus(input) + return &out, nil +} + +type VpnLinkConnectionMode string + +const ( + VpnLinkConnectionModeDefault VpnLinkConnectionMode = "Default" + VpnLinkConnectionModeInitiatorOnly VpnLinkConnectionMode = "InitiatorOnly" + VpnLinkConnectionModeResponderOnly VpnLinkConnectionMode = "ResponderOnly" +) + +func PossibleValuesForVpnLinkConnectionMode() []string { + return []string{ + string(VpnLinkConnectionModeDefault), + string(VpnLinkConnectionModeInitiatorOnly), + string(VpnLinkConnectionModeResponderOnly), + } +} + +func (s *VpnLinkConnectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnLinkConnectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnLinkConnectionMode(input string) (*VpnLinkConnectionMode, error) { + vals := map[string]VpnLinkConnectionMode{ + "default": VpnLinkConnectionModeDefault, + "initiatoronly": VpnLinkConnectionModeInitiatorOnly, + "responderonly": VpnLinkConnectionModeResponderOnly, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnLinkConnectionMode(input) + return &out, nil +} + +type VpnNatRuleMode string + +const ( + VpnNatRuleModeEgressSnat VpnNatRuleMode = "EgressSnat" + VpnNatRuleModeIngressSnat VpnNatRuleMode = "IngressSnat" +) + +func PossibleValuesForVpnNatRuleMode() []string { + return []string{ + string(VpnNatRuleModeEgressSnat), + string(VpnNatRuleModeIngressSnat), + } +} + +func (s *VpnNatRuleMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnNatRuleMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnNatRuleMode(input string) (*VpnNatRuleMode, error) { + vals := map[string]VpnNatRuleMode{ + "egresssnat": VpnNatRuleModeEgressSnat, + "ingresssnat": VpnNatRuleModeIngressSnat, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnNatRuleMode(input) + return &out, nil +} + +type VpnNatRuleType string + +const ( + VpnNatRuleTypeDynamic VpnNatRuleType = "Dynamic" + VpnNatRuleTypeStatic VpnNatRuleType = "Static" +) + +func PossibleValuesForVpnNatRuleType() []string { + return []string{ + string(VpnNatRuleTypeDynamic), + string(VpnNatRuleTypeStatic), + } +} + +func (s *VpnNatRuleType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnNatRuleType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnNatRuleType(input string) (*VpnNatRuleType, error) { + vals := map[string]VpnNatRuleType{ + "dynamic": VpnNatRuleTypeDynamic, + "static": VpnNatRuleTypeStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnNatRuleType(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/vpngateways/id_vpngateway.go b/resource-manager/network/2024-01-01/vpngateways/id_vpngateway.go new file mode 100644 index 00000000000..4a48b9a7916 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/id_vpngateway.go @@ -0,0 +1,130 @@ +package vpngateways + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&VpnGatewayId{}) +} + +var _ resourceids.ResourceId = &VpnGatewayId{} + +// VpnGatewayId is a struct representing the Resource ID for a Vpn Gateway +type VpnGatewayId struct { + SubscriptionId string + ResourceGroupName string + VpnGatewayName string +} + +// NewVpnGatewayID returns a new VpnGatewayId struct +func NewVpnGatewayID(subscriptionId string, resourceGroupName string, vpnGatewayName string) VpnGatewayId { + return VpnGatewayId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VpnGatewayName: vpnGatewayName, + } +} + +// ParseVpnGatewayID parses 'input' into a VpnGatewayId +func ParseVpnGatewayID(input string) (*VpnGatewayId, error) { + parser := resourceids.NewParserFromResourceIdType(&VpnGatewayId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VpnGatewayId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseVpnGatewayIDInsensitively parses 'input' case-insensitively into a VpnGatewayId +// note: this method should only be used for API response data and not user input +func ParseVpnGatewayIDInsensitively(input string) (*VpnGatewayId, error) { + parser := resourceids.NewParserFromResourceIdType(&VpnGatewayId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VpnGatewayId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *VpnGatewayId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VpnGatewayName, ok = input.Parsed["vpnGatewayName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "vpnGatewayName", input) + } + + return nil +} + +// ValidateVpnGatewayID checks that 'input' can be parsed as a Vpn Gateway ID +func ValidateVpnGatewayID(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 := ParseVpnGatewayID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Vpn Gateway ID +func (id VpnGatewayId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/vpnGateways/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VpnGatewayName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Vpn Gateway ID +func (id VpnGatewayId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVpnGateways", "vpnGateways", "vpnGateways"), + resourceids.UserSpecifiedSegment("vpnGatewayName", "vpnGatewayValue"), + } +} + +// String returns a human-readable description of this Vpn Gateway ID +func (id VpnGatewayId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Vpn Gateway Name: %q", id.VpnGatewayName), + } + return fmt.Sprintf("Vpn Gateway (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/vpngateways/id_vpngateway_test.go b/resource-manager/network/2024-01-01/vpngateways/id_vpngateway_test.go new file mode 100644 index 00000000000..56adaca8584 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/id_vpngateway_test.go @@ -0,0 +1,282 @@ +package vpngateways + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &VpnGatewayId{} + +func TestNewVpnGatewayID(t *testing.T) { + id := NewVpnGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VpnGatewayName != "vpnGatewayValue" { + t.Fatalf("Expected %q but got %q for Segment 'VpnGatewayName'", id.VpnGatewayName, "vpnGatewayValue") + } +} + +func TestFormatVpnGatewayID(t *testing.T) { + actual := NewVpnGatewayID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseVpnGatewayID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VpnGatewayId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue", + Expected: &VpnGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VpnGatewayName: "vpnGatewayValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVpnGatewayID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VpnGatewayName != v.Expected.VpnGatewayName { + t.Fatalf("Expected %q but got %q for VpnGatewayName", v.Expected.VpnGatewayName, actual.VpnGatewayName) + } + + } +} + +func TestParseVpnGatewayIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VpnGatewayId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue", + Expected: &VpnGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VpnGatewayName: "vpnGatewayValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs/vPnGaTeWaYvAlUe", + Expected: &VpnGatewayId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VpnGatewayName: "vPnGaTeWaYvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs/vPnGaTeWaYvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVpnGatewayIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VpnGatewayName != v.Expected.VpnGatewayName { + t.Fatalf("Expected %q but got %q for VpnGatewayName", v.Expected.VpnGatewayName, actual.VpnGatewayName) + } + + } +} + +func TestSegmentsForVpnGatewayId(t *testing.T) { + segments := VpnGatewayId{}.Segments() + if len(segments) == 0 { + t.Fatalf("VpnGatewayId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/vpngateways/method_reset.go b/resource-manager/network/2024-01-01/vpngateways/method_reset.go new file mode 100644 index 00000000000..ca8defc383b --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/method_reset.go @@ -0,0 +1,99 @@ +package vpngateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResetOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VpnGateway +} + +type ResetOperationOptions struct { + IPConfigurationId *string +} + +func DefaultResetOperationOptions() ResetOperationOptions { + return ResetOperationOptions{} +} + +func (o ResetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o ResetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o ResetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.IPConfigurationId != nil { + out.Append("ipConfigurationId", fmt.Sprintf("%v", *o.IPConfigurationId)) + } + return &out +} + +// Reset ... +func (c VpnGatewaysClient) Reset(ctx context.Context, id VpnGatewayId, options ResetOperationOptions) (result ResetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/reset", id.ID()), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// ResetThenPoll performs Reset then polls until it's completed +func (c VpnGatewaysClient) ResetThenPoll(ctx context.Context, id VpnGatewayId, options ResetOperationOptions) error { + result, err := c.Reset(ctx, id, options) + if err != nil { + return fmt.Errorf("performing Reset: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Reset: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/vpngateways/method_startpacketcapture.go b/resource-manager/network/2024-01-01/vpngateways/method_startpacketcapture.go new file mode 100644 index 00000000000..939a677ec57 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/method_startpacketcapture.go @@ -0,0 +1,75 @@ +package vpngateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StartPacketCaptureOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *string +} + +// StartPacketCapture ... +func (c VpnGatewaysClient) StartPacketCapture(ctx context.Context, id VpnGatewayId, input VpnGatewayPacketCaptureStartParameters) (result StartPacketCaptureOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/startpacketcapture", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// StartPacketCaptureThenPoll performs StartPacketCapture then polls until it's completed +func (c VpnGatewaysClient) StartPacketCaptureThenPoll(ctx context.Context, id VpnGatewayId, input VpnGatewayPacketCaptureStartParameters) error { + result, err := c.StartPacketCapture(ctx, id, input) + if err != nil { + return fmt.Errorf("performing StartPacketCapture: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after StartPacketCapture: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/vpngateways/method_stoppacketcapture.go b/resource-manager/network/2024-01-01/vpngateways/method_stoppacketcapture.go new file mode 100644 index 00000000000..52d225da3ca --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/method_stoppacketcapture.go @@ -0,0 +1,75 @@ +package vpngateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StopPacketCaptureOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *string +} + +// StopPacketCapture ... +func (c VpnGatewaysClient) StopPacketCapture(ctx context.Context, id VpnGatewayId, input VpnGatewayPacketCaptureStopParameters) (result StopPacketCaptureOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/stoppacketcapture", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// StopPacketCaptureThenPoll performs StopPacketCapture then polls until it's completed +func (c VpnGatewaysClient) StopPacketCaptureThenPoll(ctx context.Context, id VpnGatewayId, input VpnGatewayPacketCaptureStopParameters) error { + result, err := c.StopPacketCapture(ctx, id, input) + if err != nil { + return fmt.Errorf("performing StopPacketCapture: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after StopPacketCapture: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/vpngateways/method_updatetags.go b/resource-manager/network/2024-01-01/vpngateways/method_updatetags.go new file mode 100644 index 00000000000..9149232ae67 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/method_updatetags.go @@ -0,0 +1,75 @@ +package vpngateways + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData + Model *VpnGateway +} + +// UpdateTags ... +func (c VpnGatewaysClient) UpdateTags(ctx context.Context, id VpnGatewayId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// UpdateTagsThenPoll performs UpdateTags then polls until it's completed +func (c VpnGatewaysClient) UpdateTagsThenPoll(ctx context.Context, id VpnGatewayId, input TagsObject) error { + result, err := c.UpdateTags(ctx, id, input) + if err != nil { + return fmt.Errorf("performing UpdateTags: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after UpdateTags: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_bgpsettings.go b/resource-manager/network/2024-01-01/vpngateways/model_bgpsettings.go new file mode 100644 index 00000000000..f2627d16bf7 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_bgpsettings.go @@ -0,0 +1,11 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BgpSettings struct { + Asn *int64 `json:"asn,omitempty"` + BgpPeeringAddress *string `json:"bgpPeeringAddress,omitempty"` + BgpPeeringAddresses *[]IPConfigurationBgpPeeringAddress `json:"bgpPeeringAddresses,omitempty"` + PeerWeight *int64 `json:"peerWeight,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_gatewaycustombgpipaddressipconfiguration.go b/resource-manager/network/2024-01-01/vpngateways/model_gatewaycustombgpipaddressipconfiguration.go new file mode 100644 index 00000000000..6b30604f2da --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_gatewaycustombgpipaddressipconfiguration.go @@ -0,0 +1,9 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayCustomBgpIPAddressIPConfiguration struct { + CustomBgpIPAddress string `json:"customBgpIpAddress"` + IPConfigurationId string `json:"ipConfigurationId"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_ipconfigurationbgppeeringaddress.go b/resource-manager/network/2024-01-01/vpngateways/model_ipconfigurationbgppeeringaddress.go new file mode 100644 index 00000000000..c3e0e46c541 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_ipconfigurationbgppeeringaddress.go @@ -0,0 +1,11 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationBgpPeeringAddress struct { + CustomBgpIPAddresses *[]string `json:"customBgpIpAddresses,omitempty"` + DefaultBgpIPAddresses *[]string `json:"defaultBgpIpAddresses,omitempty"` + IPconfigurationId *string `json:"ipconfigurationId,omitempty"` + TunnelIPAddresses *[]string `json:"tunnelIpAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_ipsecpolicy.go b/resource-manager/network/2024-01-01/vpngateways/model_ipsecpolicy.go new file mode 100644 index 00000000000..63c4e9184df --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_ipsecpolicy.go @@ -0,0 +1,15 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPsecPolicy struct { + DhGroup DhGroup `json:"dhGroup"` + IPsecEncryption IPsecEncryption `json:"ipsecEncryption"` + IPsecIntegrity IPsecIntegrity `json:"ipsecIntegrity"` + IkeEncryption IkeEncryption `json:"ikeEncryption"` + IkeIntegrity IkeIntegrity `json:"ikeIntegrity"` + PfsGroup PfsGroup `json:"pfsGroup"` + SaDataSizeKilobytes int64 `json:"saDataSizeKilobytes"` + SaLifeTimeSeconds int64 `json:"saLifeTimeSeconds"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_propagatedroutetable.go b/resource-manager/network/2024-01-01/vpngateways/model_propagatedroutetable.go new file mode 100644 index 00000000000..e838e6e2dc7 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_propagatedroutetable.go @@ -0,0 +1,9 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PropagatedRouteTable struct { + Ids *[]SubResource `json:"ids,omitempty"` + Labels *[]string `json:"labels,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_routingconfiguration.go b/resource-manager/network/2024-01-01/vpngateways/model_routingconfiguration.go new file mode 100644 index 00000000000..fe2fd37804f --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_routingconfiguration.go @@ -0,0 +1,12 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutingConfiguration struct { + AssociatedRouteTable *SubResource `json:"associatedRouteTable,omitempty"` + InboundRouteMap *SubResource `json:"inboundRouteMap,omitempty"` + OutboundRouteMap *SubResource `json:"outboundRouteMap,omitempty"` + PropagatedRouteTables *PropagatedRouteTable `json:"propagatedRouteTables,omitempty"` + VnetRoutes *VnetRoute `json:"vnetRoutes,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_staticroute.go b/resource-manager/network/2024-01-01/vpngateways/model_staticroute.go new file mode 100644 index 00000000000..90806109c8c --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_staticroute.go @@ -0,0 +1,10 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StaticRoute struct { + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + Name *string `json:"name,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_staticroutesconfig.go b/resource-manager/network/2024-01-01/vpngateways/model_staticroutesconfig.go new file mode 100644 index 00000000000..b973c853be2 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_staticroutesconfig.go @@ -0,0 +1,9 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StaticRoutesConfig struct { + PropagateStaticRoutes *bool `json:"propagateStaticRoutes,omitempty"` + VnetLocalRouteOverrideCriteria *VnetLocalRouteOverrideCriteria `json:"vnetLocalRouteOverrideCriteria,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_subresource.go b/resource-manager/network/2024-01-01/vpngateways/model_subresource.go new file mode 100644 index 00000000000..cf0dbcdeb10 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_subresource.go @@ -0,0 +1,8 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_tagsobject.go b/resource-manager/network/2024-01-01/vpngateways/model_tagsobject.go new file mode 100644 index 00000000000..dd09a7e7f34 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_tagsobject.go @@ -0,0 +1,8 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_trafficselectorpolicy.go b/resource-manager/network/2024-01-01/vpngateways/model_trafficselectorpolicy.go new file mode 100644 index 00000000000..b65874d225f --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_trafficselectorpolicy.go @@ -0,0 +1,9 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficSelectorPolicy struct { + LocalAddressRanges []string `json:"localAddressRanges"` + RemoteAddressRanges []string `json:"remoteAddressRanges"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_vnetroute.go b/resource-manager/network/2024-01-01/vpngateways/model_vnetroute.go new file mode 100644 index 00000000000..31f211b1d1d --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_vnetroute.go @@ -0,0 +1,10 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VnetRoute struct { + BgpConnections *[]SubResource `json:"bgpConnections,omitempty"` + StaticRoutes *[]StaticRoute `json:"staticRoutes,omitempty"` + StaticRoutesConfig *StaticRoutesConfig `json:"staticRoutesConfig,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_vpnconnection.go b/resource-manager/network/2024-01-01/vpngateways/model_vpnconnection.go new file mode 100644 index 00000000000..a65d73ea9e8 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_vpnconnection.go @@ -0,0 +1,11 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VpnConnectionProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_vpnconnectionproperties.go b/resource-manager/network/2024-01-01/vpngateways/model_vpnconnectionproperties.go new file mode 100644 index 00000000000..df2da84d685 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_vpnconnectionproperties.go @@ -0,0 +1,26 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnConnectionProperties struct { + ConnectionBandwidth *int64 `json:"connectionBandwidth,omitempty"` + ConnectionStatus *VpnConnectionStatus `json:"connectionStatus,omitempty"` + DpdTimeoutSeconds *int64 `json:"dpdTimeoutSeconds,omitempty"` + EgressBytesTransferred *int64 `json:"egressBytesTransferred,omitempty"` + EnableBgp *bool `json:"enableBgp,omitempty"` + EnableInternetSecurity *bool `json:"enableInternetSecurity,omitempty"` + EnableRateLimiting *bool `json:"enableRateLimiting,omitempty"` + IPsecPolicies *[]IPsecPolicy `json:"ipsecPolicies,omitempty"` + IngressBytesTransferred *int64 `json:"ingressBytesTransferred,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RemoteVpnSite *SubResource `json:"remoteVpnSite,omitempty"` + RoutingConfiguration *RoutingConfiguration `json:"routingConfiguration,omitempty"` + RoutingWeight *int64 `json:"routingWeight,omitempty"` + SharedKey *string `json:"sharedKey,omitempty"` + TrafficSelectorPolicies *[]TrafficSelectorPolicy `json:"trafficSelectorPolicies,omitempty"` + UseLocalAzureIPAddress *bool `json:"useLocalAzureIpAddress,omitempty"` + UsePolicyBasedTrafficSelectors *bool `json:"usePolicyBasedTrafficSelectors,omitempty"` + VpnConnectionProtocolType *VirtualNetworkGatewayConnectionProtocol `json:"vpnConnectionProtocolType,omitempty"` + VpnLinkConnections *[]VpnSiteLinkConnection `json:"vpnLinkConnections,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_vpngateway.go b/resource-manager/network/2024-01-01/vpngateways/model_vpngateway.go new file mode 100644 index 00000000000..8117006b3a9 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_vpngateway.go @@ -0,0 +1,14 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VpnGatewayProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_vpngatewayipconfiguration.go b/resource-manager/network/2024-01-01/vpngateways/model_vpngatewayipconfiguration.go new file mode 100644 index 00000000000..703d0c1d833 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_vpngatewayipconfiguration.go @@ -0,0 +1,10 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnGatewayIPConfiguration struct { + Id *string `json:"id,omitempty"` + PrivateIPAddress *string `json:"privateIpAddress,omitempty"` + PublicIPAddress *string `json:"publicIpAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_vpngatewaynatrule.go b/resource-manager/network/2024-01-01/vpngateways/model_vpngatewaynatrule.go new file mode 100644 index 00000000000..833a44f9a3d --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_vpngatewaynatrule.go @@ -0,0 +1,12 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnGatewayNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VpnGatewayNatRuleProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_vpngatewaynatruleproperties.go b/resource-manager/network/2024-01-01/vpngateways/model_vpngatewaynatruleproperties.go new file mode 100644 index 00000000000..240415bacef --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_vpngatewaynatruleproperties.go @@ -0,0 +1,15 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnGatewayNatRuleProperties struct { + EgressVpnSiteLinkConnections *[]SubResource `json:"egressVpnSiteLinkConnections,omitempty"` + ExternalMappings *[]VpnNatRuleMapping `json:"externalMappings,omitempty"` + IPConfigurationId *string `json:"ipConfigurationId,omitempty"` + IngressVpnSiteLinkConnections *[]SubResource `json:"ingressVpnSiteLinkConnections,omitempty"` + InternalMappings *[]VpnNatRuleMapping `json:"internalMappings,omitempty"` + Mode *VpnNatRuleMode `json:"mode,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Type *VpnNatRuleType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_vpngatewaypacketcapturestartparameters.go b/resource-manager/network/2024-01-01/vpngateways/model_vpngatewaypacketcapturestartparameters.go new file mode 100644 index 00000000000..4afb62c2a68 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_vpngatewaypacketcapturestartparameters.go @@ -0,0 +1,8 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnGatewayPacketCaptureStartParameters struct { + FilterData *string `json:"filterData,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_vpngatewaypacketcapturestopparameters.go b/resource-manager/network/2024-01-01/vpngateways/model_vpngatewaypacketcapturestopparameters.go new file mode 100644 index 00000000000..ca9fe7cf71d --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_vpngatewaypacketcapturestopparameters.go @@ -0,0 +1,8 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnGatewayPacketCaptureStopParameters struct { + SasUrl *string `json:"sasUrl,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_vpngatewayproperties.go b/resource-manager/network/2024-01-01/vpngateways/model_vpngatewayproperties.go new file mode 100644 index 00000000000..aa5ac3cbf6c --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_vpngatewayproperties.go @@ -0,0 +1,16 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnGatewayProperties struct { + BgpSettings *BgpSettings `json:"bgpSettings,omitempty"` + Connections *[]VpnConnection `json:"connections,omitempty"` + EnableBgpRouteTranslationForNat *bool `json:"enableBgpRouteTranslationForNat,omitempty"` + IPConfigurations *[]VpnGatewayIPConfiguration `json:"ipConfigurations,omitempty"` + IsRoutingPreferenceInternet *bool `json:"isRoutingPreferenceInternet,omitempty"` + NatRules *[]VpnGatewayNatRule `json:"natRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualHub *SubResource `json:"virtualHub,omitempty"` + VpnGatewayScaleUnit *int64 `json:"vpnGatewayScaleUnit,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_vpnnatrulemapping.go b/resource-manager/network/2024-01-01/vpngateways/model_vpnnatrulemapping.go new file mode 100644 index 00000000000..3cd7718da11 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_vpnnatrulemapping.go @@ -0,0 +1,9 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnNatRuleMapping struct { + AddressSpace *string `json:"addressSpace,omitempty"` + PortRange *string `json:"portRange,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_vpnsitelinkconnection.go b/resource-manager/network/2024-01-01/vpngateways/model_vpnsitelinkconnection.go new file mode 100644 index 00000000000..874a627b999 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_vpnsitelinkconnection.go @@ -0,0 +1,12 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnSiteLinkConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VpnSiteLinkConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/model_vpnsitelinkconnectionproperties.go b/resource-manager/network/2024-01-01/vpngateways/model_vpnsitelinkconnectionproperties.go new file mode 100644 index 00000000000..26f15913a23 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/model_vpnsitelinkconnectionproperties.go @@ -0,0 +1,26 @@ +package vpngateways + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnSiteLinkConnectionProperties struct { + ConnectionBandwidth *int64 `json:"connectionBandwidth,omitempty"` + ConnectionStatus *VpnConnectionStatus `json:"connectionStatus,omitempty"` + DpdTimeoutSeconds *int64 `json:"dpdTimeoutSeconds,omitempty"` + EgressBytesTransferred *int64 `json:"egressBytesTransferred,omitempty"` + EgressNatRules *[]SubResource `json:"egressNatRules,omitempty"` + EnableBgp *bool `json:"enableBgp,omitempty"` + EnableRateLimiting *bool `json:"enableRateLimiting,omitempty"` + IPsecPolicies *[]IPsecPolicy `json:"ipsecPolicies,omitempty"` + IngressBytesTransferred *int64 `json:"ingressBytesTransferred,omitempty"` + IngressNatRules *[]SubResource `json:"ingressNatRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RoutingWeight *int64 `json:"routingWeight,omitempty"` + SharedKey *string `json:"sharedKey,omitempty"` + UseLocalAzureIPAddress *bool `json:"useLocalAzureIpAddress,omitempty"` + UsePolicyBasedTrafficSelectors *bool `json:"usePolicyBasedTrafficSelectors,omitempty"` + VpnConnectionProtocolType *VirtualNetworkGatewayConnectionProtocol `json:"vpnConnectionProtocolType,omitempty"` + VpnGatewayCustomBgpAddresses *[]GatewayCustomBgpIPAddressIPConfiguration `json:"vpnGatewayCustomBgpAddresses,omitempty"` + VpnLinkConnectionMode *VpnLinkConnectionMode `json:"vpnLinkConnectionMode,omitempty"` + VpnSiteLink *SubResource `json:"vpnSiteLink,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpngateways/version.go b/resource-manager/network/2024-01-01/vpngateways/version.go new file mode 100644 index 00000000000..0b2cda557b0 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpngateways/version.go @@ -0,0 +1,12 @@ +package vpngateways + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/vpngateways/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/vpnlinkconnections/client.go b/resource-manager/network/2024-01-01/vpnlinkconnections/client.go new file mode 100644 index 00000000000..3fbef685129 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnlinkconnections/client.go @@ -0,0 +1,26 @@ +package vpnlinkconnections + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnLinkConnectionsClient struct { + Client *resourcemanager.Client +} + +func NewVpnLinkConnectionsClientWithBaseURI(sdkApi sdkEnv.Api) (*VpnLinkConnectionsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "vpnlinkconnections", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating VpnLinkConnectionsClient: %+v", err) + } + + return &VpnLinkConnectionsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/vpnlinkconnections/id_vpnlinkconnection.go b/resource-manager/network/2024-01-01/vpnlinkconnections/id_vpnlinkconnection.go new file mode 100644 index 00000000000..e1dd95afd3a --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnlinkconnections/id_vpnlinkconnection.go @@ -0,0 +1,148 @@ +package vpnlinkconnections + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&VpnLinkConnectionId{}) +} + +var _ resourceids.ResourceId = &VpnLinkConnectionId{} + +// VpnLinkConnectionId is a struct representing the Resource ID for a Vpn Link Connection +type VpnLinkConnectionId struct { + SubscriptionId string + ResourceGroupName string + VpnGatewayName string + VpnConnectionName string + VpnLinkConnectionName string +} + +// NewVpnLinkConnectionID returns a new VpnLinkConnectionId struct +func NewVpnLinkConnectionID(subscriptionId string, resourceGroupName string, vpnGatewayName string, vpnConnectionName string, vpnLinkConnectionName string) VpnLinkConnectionId { + return VpnLinkConnectionId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VpnGatewayName: vpnGatewayName, + VpnConnectionName: vpnConnectionName, + VpnLinkConnectionName: vpnLinkConnectionName, + } +} + +// ParseVpnLinkConnectionID parses 'input' into a VpnLinkConnectionId +func ParseVpnLinkConnectionID(input string) (*VpnLinkConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&VpnLinkConnectionId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VpnLinkConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseVpnLinkConnectionIDInsensitively parses 'input' case-insensitively into a VpnLinkConnectionId +// note: this method should only be used for API response data and not user input +func ParseVpnLinkConnectionIDInsensitively(input string) (*VpnLinkConnectionId, error) { + parser := resourceids.NewParserFromResourceIdType(&VpnLinkConnectionId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VpnLinkConnectionId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *VpnLinkConnectionId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VpnGatewayName, ok = input.Parsed["vpnGatewayName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "vpnGatewayName", input) + } + + if id.VpnConnectionName, ok = input.Parsed["vpnConnectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "vpnConnectionName", input) + } + + if id.VpnLinkConnectionName, ok = input.Parsed["vpnLinkConnectionName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "vpnLinkConnectionName", input) + } + + return nil +} + +// ValidateVpnLinkConnectionID checks that 'input' can be parsed as a Vpn Link Connection ID +func ValidateVpnLinkConnectionID(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 := ParseVpnLinkConnectionID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Vpn Link Connection ID +func (id VpnLinkConnectionId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/vpnGateways/%s/vpnConnections/%s/vpnLinkConnections/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VpnGatewayName, id.VpnConnectionName, id.VpnLinkConnectionName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Vpn Link Connection ID +func (id VpnLinkConnectionId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVpnGateways", "vpnGateways", "vpnGateways"), + resourceids.UserSpecifiedSegment("vpnGatewayName", "vpnGatewayValue"), + resourceids.StaticSegment("staticVpnConnections", "vpnConnections", "vpnConnections"), + resourceids.UserSpecifiedSegment("vpnConnectionName", "vpnConnectionValue"), + resourceids.StaticSegment("staticVpnLinkConnections", "vpnLinkConnections", "vpnLinkConnections"), + resourceids.UserSpecifiedSegment("vpnLinkConnectionName", "vpnLinkConnectionValue"), + } +} + +// String returns a human-readable description of this Vpn Link Connection ID +func (id VpnLinkConnectionId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Vpn Gateway Name: %q", id.VpnGatewayName), + fmt.Sprintf("Vpn Connection Name: %q", id.VpnConnectionName), + fmt.Sprintf("Vpn Link Connection Name: %q", id.VpnLinkConnectionName), + } + return fmt.Sprintf("Vpn Link Connection (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/vpnlinkconnections/id_vpnlinkconnection_test.go b/resource-manager/network/2024-01-01/vpnlinkconnections/id_vpnlinkconnection_test.go new file mode 100644 index 00000000000..adc8d44297b --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnlinkconnections/id_vpnlinkconnection_test.go @@ -0,0 +1,372 @@ +package vpnlinkconnections + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &VpnLinkConnectionId{} + +func TestNewVpnLinkConnectionID(t *testing.T) { + id := NewVpnLinkConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue", "vpnConnectionValue", "vpnLinkConnectionValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VpnGatewayName != "vpnGatewayValue" { + t.Fatalf("Expected %q but got %q for Segment 'VpnGatewayName'", id.VpnGatewayName, "vpnGatewayValue") + } + + if id.VpnConnectionName != "vpnConnectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'VpnConnectionName'", id.VpnConnectionName, "vpnConnectionValue") + } + + if id.VpnLinkConnectionName != "vpnLinkConnectionValue" { + t.Fatalf("Expected %q but got %q for Segment 'VpnLinkConnectionName'", id.VpnLinkConnectionName, "vpnLinkConnectionValue") + } +} + +func TestFormatVpnLinkConnectionID(t *testing.T) { + actual := NewVpnLinkConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnGatewayValue", "vpnConnectionValue", "vpnLinkConnectionValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/vpnConnections/vpnConnectionValue/vpnLinkConnections/vpnLinkConnectionValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseVpnLinkConnectionID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VpnLinkConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/vpnConnections", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/vpnConnections/vpnConnectionValue", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/vpnConnections/vpnConnectionValue/vpnLinkConnections", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/vpnConnections/vpnConnectionValue/vpnLinkConnections/vpnLinkConnectionValue", + Expected: &VpnLinkConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VpnGatewayName: "vpnGatewayValue", + VpnConnectionName: "vpnConnectionValue", + VpnLinkConnectionName: "vpnLinkConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/vpnConnections/vpnConnectionValue/vpnLinkConnections/vpnLinkConnectionValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVpnLinkConnectionID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VpnGatewayName != v.Expected.VpnGatewayName { + t.Fatalf("Expected %q but got %q for VpnGatewayName", v.Expected.VpnGatewayName, actual.VpnGatewayName) + } + + if actual.VpnConnectionName != v.Expected.VpnConnectionName { + t.Fatalf("Expected %q but got %q for VpnConnectionName", v.Expected.VpnConnectionName, actual.VpnConnectionName) + } + + if actual.VpnLinkConnectionName != v.Expected.VpnLinkConnectionName { + t.Fatalf("Expected %q but got %q for VpnLinkConnectionName", v.Expected.VpnLinkConnectionName, actual.VpnLinkConnectionName) + } + + } +} + +func TestParseVpnLinkConnectionIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VpnLinkConnectionId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs/vPnGaTeWaYvAlUe", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/vpnConnections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs/vPnGaTeWaYvAlUe/vPnCoNnEcTiOnS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/vpnConnections/vpnConnectionValue", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs/vPnGaTeWaYvAlUe/vPnCoNnEcTiOnS/vPnCoNnEcTiOnVaLuE", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/vpnConnections/vpnConnectionValue/vpnLinkConnections", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs/vPnGaTeWaYvAlUe/vPnCoNnEcTiOnS/vPnCoNnEcTiOnVaLuE/vPnLiNkCoNnEcTiOnS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/vpnConnections/vpnConnectionValue/vpnLinkConnections/vpnLinkConnectionValue", + Expected: &VpnLinkConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VpnGatewayName: "vpnGatewayValue", + VpnConnectionName: "vpnConnectionValue", + VpnLinkConnectionName: "vpnLinkConnectionValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnGateways/vpnGatewayValue/vpnConnections/vpnConnectionValue/vpnLinkConnections/vpnLinkConnectionValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs/vPnGaTeWaYvAlUe/vPnCoNnEcTiOnS/vPnCoNnEcTiOnVaLuE/vPnLiNkCoNnEcTiOnS/vPnLiNkCoNnEcTiOnVaLuE", + Expected: &VpnLinkConnectionId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VpnGatewayName: "vPnGaTeWaYvAlUe", + VpnConnectionName: "vPnCoNnEcTiOnVaLuE", + VpnLinkConnectionName: "vPnLiNkCoNnEcTiOnVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnGaTeWaYs/vPnGaTeWaYvAlUe/vPnCoNnEcTiOnS/vPnCoNnEcTiOnVaLuE/vPnLiNkCoNnEcTiOnS/vPnLiNkCoNnEcTiOnVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVpnLinkConnectionIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VpnGatewayName != v.Expected.VpnGatewayName { + t.Fatalf("Expected %q but got %q for VpnGatewayName", v.Expected.VpnGatewayName, actual.VpnGatewayName) + } + + if actual.VpnConnectionName != v.Expected.VpnConnectionName { + t.Fatalf("Expected %q but got %q for VpnConnectionName", v.Expected.VpnConnectionName, actual.VpnConnectionName) + } + + if actual.VpnLinkConnectionName != v.Expected.VpnLinkConnectionName { + t.Fatalf("Expected %q but got %q for VpnLinkConnectionName", v.Expected.VpnLinkConnectionName, actual.VpnLinkConnectionName) + } + + } +} + +func TestSegmentsForVpnLinkConnectionId(t *testing.T) { + segments := VpnLinkConnectionId{}.Segments() + if len(segments) == 0 { + t.Fatalf("VpnLinkConnectionId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/vpnlinkconnections/method_resetconnection.go b/resource-manager/network/2024-01-01/vpnlinkconnections/method_resetconnection.go new file mode 100644 index 00000000000..526963414ea --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnlinkconnections/method_resetconnection.go @@ -0,0 +1,69 @@ +package vpnlinkconnections + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResetConnectionOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// ResetConnection ... +func (c VpnLinkConnectionsClient) ResetConnection(ctx context.Context, id VpnLinkConnectionId) (result ResetConnectionOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + }, + HttpMethod: http.MethodPost, + Path: fmt.Sprintf("%s/resetconnection", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// ResetConnectionThenPoll performs ResetConnection then polls until it's completed +func (c VpnLinkConnectionsClient) ResetConnectionThenPoll(ctx context.Context, id VpnLinkConnectionId) error { + result, err := c.ResetConnection(ctx, id) + if err != nil { + return fmt.Errorf("performing ResetConnection: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after ResetConnection: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/vpnlinkconnections/version.go b/resource-manager/network/2024-01-01/vpnlinkconnections/version.go new file mode 100644 index 00000000000..4576acb893d --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnlinkconnections/version.go @@ -0,0 +1,12 @@ +package vpnlinkconnections + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/vpnlinkconnections/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/README.md b/resource-manager/network/2024-01-01/vpnserverconfigurations/README.md new file mode 100644 index 00000000000..bfc3f2c04d8 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/README.md @@ -0,0 +1,41 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/vpnserverconfigurations` Documentation + +The `vpnserverconfigurations` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/vpnserverconfigurations" +``` + + +### Client Initialization + +```go +client := vpnserverconfigurations.NewVpnServerConfigurationsClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `VpnServerConfigurationsClient.UpdateTags` + +```go +ctx := context.TODO() +id := vpnserverconfigurations.NewVpnServerConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnServerConfigurationValue") + +payload := vpnserverconfigurations.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/client.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/client.go new file mode 100644 index 00000000000..6209cc6af8d --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/client.go @@ -0,0 +1,26 @@ +package vpnserverconfigurations + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigurationsClient struct { + Client *resourcemanager.Client +} + +func NewVpnServerConfigurationsClientWithBaseURI(sdkApi sdkEnv.Api) (*VpnServerConfigurationsClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "vpnserverconfigurations", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating VpnServerConfigurationsClient: %+v", err) + } + + return &VpnServerConfigurationsClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/constants.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/constants.go new file mode 100644 index 00000000000..f297d6e8b17 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/constants.go @@ -0,0 +1,572 @@ +package vpnserverconfigurations + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DhGroup string + +const ( + DhGroupDHGroupOne DhGroup = "DHGroup1" + DhGroupDHGroupOneFour DhGroup = "DHGroup14" + DhGroupDHGroupTwo DhGroup = "DHGroup2" + DhGroupDHGroupTwoFour DhGroup = "DHGroup24" + DhGroupDHGroupTwoZeroFourEight DhGroup = "DHGroup2048" + DhGroupECPThreeEightFour DhGroup = "ECP384" + DhGroupECPTwoFiveSix DhGroup = "ECP256" + DhGroupNone DhGroup = "None" +) + +func PossibleValuesForDhGroup() []string { + return []string{ + string(DhGroupDHGroupOne), + string(DhGroupDHGroupOneFour), + string(DhGroupDHGroupTwo), + string(DhGroupDHGroupTwoFour), + string(DhGroupDHGroupTwoZeroFourEight), + string(DhGroupECPThreeEightFour), + string(DhGroupECPTwoFiveSix), + string(DhGroupNone), + } +} + +func (s *DhGroup) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDhGroup(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDhGroup(input string) (*DhGroup, error) { + vals := map[string]DhGroup{ + "dhgroup1": DhGroupDHGroupOne, + "dhgroup14": DhGroupDHGroupOneFour, + "dhgroup2": DhGroupDHGroupTwo, + "dhgroup24": DhGroupDHGroupTwoFour, + "dhgroup2048": DhGroupDHGroupTwoZeroFourEight, + "ecp384": DhGroupECPThreeEightFour, + "ecp256": DhGroupECPTwoFiveSix, + "none": DhGroupNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DhGroup(input) + return &out, nil +} + +type IPsecEncryption string + +const ( + IPsecEncryptionAESOneNineTwo IPsecEncryption = "AES192" + IPsecEncryptionAESOneTwoEight IPsecEncryption = "AES128" + IPsecEncryptionAESTwoFiveSix IPsecEncryption = "AES256" + IPsecEncryptionDES IPsecEncryption = "DES" + IPsecEncryptionDESThree IPsecEncryption = "DES3" + IPsecEncryptionGCMAESOneNineTwo IPsecEncryption = "GCMAES192" + IPsecEncryptionGCMAESOneTwoEight IPsecEncryption = "GCMAES128" + IPsecEncryptionGCMAESTwoFiveSix IPsecEncryption = "GCMAES256" + IPsecEncryptionNone IPsecEncryption = "None" +) + +func PossibleValuesForIPsecEncryption() []string { + return []string{ + string(IPsecEncryptionAESOneNineTwo), + string(IPsecEncryptionAESOneTwoEight), + string(IPsecEncryptionAESTwoFiveSix), + string(IPsecEncryptionDES), + string(IPsecEncryptionDESThree), + string(IPsecEncryptionGCMAESOneNineTwo), + string(IPsecEncryptionGCMAESOneTwoEight), + string(IPsecEncryptionGCMAESTwoFiveSix), + string(IPsecEncryptionNone), + } +} + +func (s *IPsecEncryption) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPsecEncryption(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPsecEncryption(input string) (*IPsecEncryption, error) { + vals := map[string]IPsecEncryption{ + "aes192": IPsecEncryptionAESOneNineTwo, + "aes128": IPsecEncryptionAESOneTwoEight, + "aes256": IPsecEncryptionAESTwoFiveSix, + "des": IPsecEncryptionDES, + "des3": IPsecEncryptionDESThree, + "gcmaes192": IPsecEncryptionGCMAESOneNineTwo, + "gcmaes128": IPsecEncryptionGCMAESOneTwoEight, + "gcmaes256": IPsecEncryptionGCMAESTwoFiveSix, + "none": IPsecEncryptionNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPsecEncryption(input) + return &out, nil +} + +type IPsecIntegrity string + +const ( + IPsecIntegrityGCMAESOneNineTwo IPsecIntegrity = "GCMAES192" + IPsecIntegrityGCMAESOneTwoEight IPsecIntegrity = "GCMAES128" + IPsecIntegrityGCMAESTwoFiveSix IPsecIntegrity = "GCMAES256" + IPsecIntegrityMDFive IPsecIntegrity = "MD5" + IPsecIntegritySHAOne IPsecIntegrity = "SHA1" + IPsecIntegritySHATwoFiveSix IPsecIntegrity = "SHA256" +) + +func PossibleValuesForIPsecIntegrity() []string { + return []string{ + string(IPsecIntegrityGCMAESOneNineTwo), + string(IPsecIntegrityGCMAESOneTwoEight), + string(IPsecIntegrityGCMAESTwoFiveSix), + string(IPsecIntegrityMDFive), + string(IPsecIntegritySHAOne), + string(IPsecIntegritySHATwoFiveSix), + } +} + +func (s *IPsecIntegrity) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPsecIntegrity(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPsecIntegrity(input string) (*IPsecIntegrity, error) { + vals := map[string]IPsecIntegrity{ + "gcmaes192": IPsecIntegrityGCMAESOneNineTwo, + "gcmaes128": IPsecIntegrityGCMAESOneTwoEight, + "gcmaes256": IPsecIntegrityGCMAESTwoFiveSix, + "md5": IPsecIntegrityMDFive, + "sha1": IPsecIntegritySHAOne, + "sha256": IPsecIntegritySHATwoFiveSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPsecIntegrity(input) + return &out, nil +} + +type IkeEncryption string + +const ( + IkeEncryptionAESOneNineTwo IkeEncryption = "AES192" + IkeEncryptionAESOneTwoEight IkeEncryption = "AES128" + IkeEncryptionAESTwoFiveSix IkeEncryption = "AES256" + IkeEncryptionDES IkeEncryption = "DES" + IkeEncryptionDESThree IkeEncryption = "DES3" + IkeEncryptionGCMAESOneTwoEight IkeEncryption = "GCMAES128" + IkeEncryptionGCMAESTwoFiveSix IkeEncryption = "GCMAES256" +) + +func PossibleValuesForIkeEncryption() []string { + return []string{ + string(IkeEncryptionAESOneNineTwo), + string(IkeEncryptionAESOneTwoEight), + string(IkeEncryptionAESTwoFiveSix), + string(IkeEncryptionDES), + string(IkeEncryptionDESThree), + string(IkeEncryptionGCMAESOneTwoEight), + string(IkeEncryptionGCMAESTwoFiveSix), + } +} + +func (s *IkeEncryption) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIkeEncryption(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIkeEncryption(input string) (*IkeEncryption, error) { + vals := map[string]IkeEncryption{ + "aes192": IkeEncryptionAESOneNineTwo, + "aes128": IkeEncryptionAESOneTwoEight, + "aes256": IkeEncryptionAESTwoFiveSix, + "des": IkeEncryptionDES, + "des3": IkeEncryptionDESThree, + "gcmaes128": IkeEncryptionGCMAESOneTwoEight, + "gcmaes256": IkeEncryptionGCMAESTwoFiveSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IkeEncryption(input) + return &out, nil +} + +type IkeIntegrity string + +const ( + IkeIntegrityGCMAESOneTwoEight IkeIntegrity = "GCMAES128" + IkeIntegrityGCMAESTwoFiveSix IkeIntegrity = "GCMAES256" + IkeIntegrityMDFive IkeIntegrity = "MD5" + IkeIntegritySHAOne IkeIntegrity = "SHA1" + IkeIntegritySHAThreeEightFour IkeIntegrity = "SHA384" + IkeIntegritySHATwoFiveSix IkeIntegrity = "SHA256" +) + +func PossibleValuesForIkeIntegrity() []string { + return []string{ + string(IkeIntegrityGCMAESOneTwoEight), + string(IkeIntegrityGCMAESTwoFiveSix), + string(IkeIntegrityMDFive), + string(IkeIntegritySHAOne), + string(IkeIntegritySHAThreeEightFour), + string(IkeIntegritySHATwoFiveSix), + } +} + +func (s *IkeIntegrity) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIkeIntegrity(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIkeIntegrity(input string) (*IkeIntegrity, error) { + vals := map[string]IkeIntegrity{ + "gcmaes128": IkeIntegrityGCMAESOneTwoEight, + "gcmaes256": IkeIntegrityGCMAESTwoFiveSix, + "md5": IkeIntegrityMDFive, + "sha1": IkeIntegritySHAOne, + "sha384": IkeIntegritySHAThreeEightFour, + "sha256": IkeIntegritySHATwoFiveSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IkeIntegrity(input) + return &out, nil +} + +type PfsGroup string + +const ( + PfsGroupECPThreeEightFour PfsGroup = "ECP384" + PfsGroupECPTwoFiveSix PfsGroup = "ECP256" + PfsGroupNone PfsGroup = "None" + PfsGroupPFSMM PfsGroup = "PFSMM" + PfsGroupPFSOne PfsGroup = "PFS1" + PfsGroupPFSOneFour PfsGroup = "PFS14" + PfsGroupPFSTwo PfsGroup = "PFS2" + PfsGroupPFSTwoFour PfsGroup = "PFS24" + PfsGroupPFSTwoZeroFourEight PfsGroup = "PFS2048" +) + +func PossibleValuesForPfsGroup() []string { + return []string{ + string(PfsGroupECPThreeEightFour), + string(PfsGroupECPTwoFiveSix), + string(PfsGroupNone), + string(PfsGroupPFSMM), + string(PfsGroupPFSOne), + string(PfsGroupPFSOneFour), + string(PfsGroupPFSTwo), + string(PfsGroupPFSTwoFour), + string(PfsGroupPFSTwoZeroFourEight), + } +} + +func (s *PfsGroup) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePfsGroup(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePfsGroup(input string) (*PfsGroup, error) { + vals := map[string]PfsGroup{ + "ecp384": PfsGroupECPThreeEightFour, + "ecp256": PfsGroupECPTwoFiveSix, + "none": PfsGroupNone, + "pfsmm": PfsGroupPFSMM, + "pfs1": PfsGroupPFSOne, + "pfs14": PfsGroupPFSOneFour, + "pfs2": PfsGroupPFSTwo, + "pfs24": PfsGroupPFSTwoFour, + "pfs2048": PfsGroupPFSTwoZeroFourEight, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PfsGroup(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type VnetLocalRouteOverrideCriteria string + +const ( + VnetLocalRouteOverrideCriteriaContains VnetLocalRouteOverrideCriteria = "Contains" + VnetLocalRouteOverrideCriteriaEqual VnetLocalRouteOverrideCriteria = "Equal" +) + +func PossibleValuesForVnetLocalRouteOverrideCriteria() []string { + return []string{ + string(VnetLocalRouteOverrideCriteriaContains), + string(VnetLocalRouteOverrideCriteriaEqual), + } +} + +func (s *VnetLocalRouteOverrideCriteria) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVnetLocalRouteOverrideCriteria(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVnetLocalRouteOverrideCriteria(input string) (*VnetLocalRouteOverrideCriteria, error) { + vals := map[string]VnetLocalRouteOverrideCriteria{ + "contains": VnetLocalRouteOverrideCriteriaContains, + "equal": VnetLocalRouteOverrideCriteriaEqual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VnetLocalRouteOverrideCriteria(input) + return &out, nil +} + +type VpnAuthenticationType string + +const ( + VpnAuthenticationTypeAAD VpnAuthenticationType = "AAD" + VpnAuthenticationTypeCertificate VpnAuthenticationType = "Certificate" + VpnAuthenticationTypeRadius VpnAuthenticationType = "Radius" +) + +func PossibleValuesForVpnAuthenticationType() []string { + return []string{ + string(VpnAuthenticationTypeAAD), + string(VpnAuthenticationTypeCertificate), + string(VpnAuthenticationTypeRadius), + } +} + +func (s *VpnAuthenticationType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnAuthenticationType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnAuthenticationType(input string) (*VpnAuthenticationType, error) { + vals := map[string]VpnAuthenticationType{ + "aad": VpnAuthenticationTypeAAD, + "certificate": VpnAuthenticationTypeCertificate, + "radius": VpnAuthenticationTypeRadius, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnAuthenticationType(input) + return &out, nil +} + +type VpnGatewayTunnelingProtocol string + +const ( + VpnGatewayTunnelingProtocolIkeVTwo VpnGatewayTunnelingProtocol = "IkeV2" + VpnGatewayTunnelingProtocolOpenVPN VpnGatewayTunnelingProtocol = "OpenVPN" +) + +func PossibleValuesForVpnGatewayTunnelingProtocol() []string { + return []string{ + string(VpnGatewayTunnelingProtocolIkeVTwo), + string(VpnGatewayTunnelingProtocolOpenVPN), + } +} + +func (s *VpnGatewayTunnelingProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnGatewayTunnelingProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnGatewayTunnelingProtocol(input string) (*VpnGatewayTunnelingProtocol, error) { + vals := map[string]VpnGatewayTunnelingProtocol{ + "ikev2": VpnGatewayTunnelingProtocolIkeVTwo, + "openvpn": VpnGatewayTunnelingProtocolOpenVPN, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnGatewayTunnelingProtocol(input) + return &out, nil +} + +type VpnPolicyMemberAttributeType string + +const ( + VpnPolicyMemberAttributeTypeAADGroupId VpnPolicyMemberAttributeType = "AADGroupId" + VpnPolicyMemberAttributeTypeCertificateGroupId VpnPolicyMemberAttributeType = "CertificateGroupId" + VpnPolicyMemberAttributeTypeRadiusAzureGroupId VpnPolicyMemberAttributeType = "RadiusAzureGroupId" +) + +func PossibleValuesForVpnPolicyMemberAttributeType() []string { + return []string{ + string(VpnPolicyMemberAttributeTypeAADGroupId), + string(VpnPolicyMemberAttributeTypeCertificateGroupId), + string(VpnPolicyMemberAttributeTypeRadiusAzureGroupId), + } +} + +func (s *VpnPolicyMemberAttributeType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVpnPolicyMemberAttributeType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVpnPolicyMemberAttributeType(input string) (*VpnPolicyMemberAttributeType, error) { + vals := map[string]VpnPolicyMemberAttributeType{ + "aadgroupid": VpnPolicyMemberAttributeTypeAADGroupId, + "certificategroupid": VpnPolicyMemberAttributeTypeCertificateGroupId, + "radiusazuregroupid": VpnPolicyMemberAttributeTypeRadiusAzureGroupId, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VpnPolicyMemberAttributeType(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/id_vpnserverconfiguration.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/id_vpnserverconfiguration.go new file mode 100644 index 00000000000..56b67386806 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/id_vpnserverconfiguration.go @@ -0,0 +1,130 @@ +package vpnserverconfigurations + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&VpnServerConfigurationId{}) +} + +var _ resourceids.ResourceId = &VpnServerConfigurationId{} + +// VpnServerConfigurationId is a struct representing the Resource ID for a Vpn Server Configuration +type VpnServerConfigurationId struct { + SubscriptionId string + ResourceGroupName string + VpnServerConfigurationName string +} + +// NewVpnServerConfigurationID returns a new VpnServerConfigurationId struct +func NewVpnServerConfigurationID(subscriptionId string, resourceGroupName string, vpnServerConfigurationName string) VpnServerConfigurationId { + return VpnServerConfigurationId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VpnServerConfigurationName: vpnServerConfigurationName, + } +} + +// ParseVpnServerConfigurationID parses 'input' into a VpnServerConfigurationId +func ParseVpnServerConfigurationID(input string) (*VpnServerConfigurationId, error) { + parser := resourceids.NewParserFromResourceIdType(&VpnServerConfigurationId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VpnServerConfigurationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseVpnServerConfigurationIDInsensitively parses 'input' case-insensitively into a VpnServerConfigurationId +// note: this method should only be used for API response data and not user input +func ParseVpnServerConfigurationIDInsensitively(input string) (*VpnServerConfigurationId, error) { + parser := resourceids.NewParserFromResourceIdType(&VpnServerConfigurationId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VpnServerConfigurationId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *VpnServerConfigurationId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VpnServerConfigurationName, ok = input.Parsed["vpnServerConfigurationName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "vpnServerConfigurationName", input) + } + + return nil +} + +// ValidateVpnServerConfigurationID checks that 'input' can be parsed as a Vpn Server Configuration ID +func ValidateVpnServerConfigurationID(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 := ParseVpnServerConfigurationID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Vpn Server Configuration ID +func (id VpnServerConfigurationId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/vpnServerConfigurations/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VpnServerConfigurationName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Vpn Server Configuration ID +func (id VpnServerConfigurationId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVpnServerConfigurations", "vpnServerConfigurations", "vpnServerConfigurations"), + resourceids.UserSpecifiedSegment("vpnServerConfigurationName", "vpnServerConfigurationValue"), + } +} + +// String returns a human-readable description of this Vpn Server Configuration ID +func (id VpnServerConfigurationId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Vpn Server Configuration Name: %q", id.VpnServerConfigurationName), + } + return fmt.Sprintf("Vpn Server Configuration (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/id_vpnserverconfiguration_test.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/id_vpnserverconfiguration_test.go new file mode 100644 index 00000000000..9a0a657eea1 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/id_vpnserverconfiguration_test.go @@ -0,0 +1,282 @@ +package vpnserverconfigurations + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &VpnServerConfigurationId{} + +func TestNewVpnServerConfigurationID(t *testing.T) { + id := NewVpnServerConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnServerConfigurationValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VpnServerConfigurationName != "vpnServerConfigurationValue" { + t.Fatalf("Expected %q but got %q for Segment 'VpnServerConfigurationName'", id.VpnServerConfigurationName, "vpnServerConfigurationValue") + } +} + +func TestFormatVpnServerConfigurationID(t *testing.T) { + actual := NewVpnServerConfigurationID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnServerConfigurationValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations/vpnServerConfigurationValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseVpnServerConfigurationID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VpnServerConfigurationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations/vpnServerConfigurationValue", + Expected: &VpnServerConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VpnServerConfigurationName: "vpnServerConfigurationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations/vpnServerConfigurationValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVpnServerConfigurationID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VpnServerConfigurationName != v.Expected.VpnServerConfigurationName { + t.Fatalf("Expected %q but got %q for VpnServerConfigurationName", v.Expected.VpnServerConfigurationName, actual.VpnServerConfigurationName) + } + + } +} + +func TestParseVpnServerConfigurationIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VpnServerConfigurationId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnSeRvErCoNfIgUrAtIoNs", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations/vpnServerConfigurationValue", + Expected: &VpnServerConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VpnServerConfigurationName: "vpnServerConfigurationValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnServerConfigurations/vpnServerConfigurationValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnSeRvErCoNfIgUrAtIoNs/vPnSeRvErCoNfIgUrAtIoNvAlUe", + Expected: &VpnServerConfigurationId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VpnServerConfigurationName: "vPnSeRvErCoNfIgUrAtIoNvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnSeRvErCoNfIgUrAtIoNs/vPnSeRvErCoNfIgUrAtIoNvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVpnServerConfigurationIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VpnServerConfigurationName != v.Expected.VpnServerConfigurationName { + t.Fatalf("Expected %q but got %q for VpnServerConfigurationName", v.Expected.VpnServerConfigurationName, actual.VpnServerConfigurationName) + } + + } +} + +func TestSegmentsForVpnServerConfigurationId(t *testing.T) { + segments := VpnServerConfigurationId{}.Segments() + if len(segments) == 0 { + t.Fatalf("VpnServerConfigurationId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/method_updatetags.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/method_updatetags.go new file mode 100644 index 00000000000..7a675d1584d --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/method_updatetags.go @@ -0,0 +1,58 @@ +package vpnserverconfigurations + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VpnServerConfiguration +} + +// UpdateTags ... +func (c VpnServerConfigurationsClient) UpdateTags(ctx context.Context, id VpnServerConfigurationId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VpnServerConfiguration + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_aadauthenticationparameters.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_aadauthenticationparameters.go new file mode 100644 index 00000000000..8751fdb95f4 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_aadauthenticationparameters.go @@ -0,0 +1,10 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AadAuthenticationParameters struct { + AadAudience *string `json:"aadAudience,omitempty"` + AadIssuer *string `json:"aadIssuer,omitempty"` + AadTenant *string `json:"aadTenant,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_addressspace.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_addressspace.go new file mode 100644 index 00000000000..9a83a3bb7bf --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_addressspace.go @@ -0,0 +1,8 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AddressSpace struct { + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_ipsecpolicy.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_ipsecpolicy.go new file mode 100644 index 00000000000..82c3d0cee04 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_ipsecpolicy.go @@ -0,0 +1,15 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPsecPolicy struct { + DhGroup DhGroup `json:"dhGroup"` + IPsecEncryption IPsecEncryption `json:"ipsecEncryption"` + IPsecIntegrity IPsecIntegrity `json:"ipsecIntegrity"` + IkeEncryption IkeEncryption `json:"ikeEncryption"` + IkeIntegrity IkeIntegrity `json:"ikeIntegrity"` + PfsGroup PfsGroup `json:"pfsGroup"` + SaDataSizeKilobytes int64 `json:"saDataSizeKilobytes"` + SaLifeTimeSeconds int64 `json:"saLifeTimeSeconds"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_p2sconnectionconfiguration.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_p2sconnectionconfiguration.go new file mode 100644 index 00000000000..a5da2b6e9f5 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_p2sconnectionconfiguration.go @@ -0,0 +1,11 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type P2SConnectionConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *P2SConnectionConfigurationProperties `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_p2sconnectionconfigurationproperties.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_p2sconnectionconfigurationproperties.go new file mode 100644 index 00000000000..5409c6397bf --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_p2sconnectionconfigurationproperties.go @@ -0,0 +1,13 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type P2SConnectionConfigurationProperties struct { + ConfigurationPolicyGroupAssociations *[]SubResource `json:"configurationPolicyGroupAssociations,omitempty"` + EnableInternetSecurity *bool `json:"enableInternetSecurity,omitempty"` + PreviousConfigurationPolicyGroupAssociations *[]VpnServerConfigurationPolicyGroup `json:"previousConfigurationPolicyGroupAssociations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RoutingConfiguration *RoutingConfiguration `json:"routingConfiguration,omitempty"` + VpnClientAddressPool *AddressSpace `json:"vpnClientAddressPool,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_p2svpngateway.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_p2svpngateway.go new file mode 100644 index 00000000000..048301aca56 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_p2svpngateway.go @@ -0,0 +1,14 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type P2SVpnGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *P2SVpnGatewayProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_p2svpngatewayproperties.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_p2svpngatewayproperties.go new file mode 100644 index 00000000000..fcd2e68d61e --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_p2svpngatewayproperties.go @@ -0,0 +1,15 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type P2SVpnGatewayProperties struct { + CustomDnsServers *[]string `json:"customDnsServers,omitempty"` + IsRoutingPreferenceInternet *bool `json:"isRoutingPreferenceInternet,omitempty"` + P2SConnectionConfigurations *[]P2SConnectionConfiguration `json:"p2SConnectionConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualHub *SubResource `json:"virtualHub,omitempty"` + VpnClientConnectionHealth *VpnClientConnectionHealth `json:"vpnClientConnectionHealth,omitempty"` + VpnGatewayScaleUnit *int64 `json:"vpnGatewayScaleUnit,omitempty"` + VpnServerConfiguration *SubResource `json:"vpnServerConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_propagatedroutetable.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_propagatedroutetable.go new file mode 100644 index 00000000000..d9197431e38 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_propagatedroutetable.go @@ -0,0 +1,9 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PropagatedRouteTable struct { + Ids *[]SubResource `json:"ids,omitempty"` + Labels *[]string `json:"labels,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_radiusserver.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_radiusserver.go new file mode 100644 index 00000000000..0a8e8ea7a2b --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_radiusserver.go @@ -0,0 +1,10 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RadiusServer struct { + RadiusServerAddress string `json:"radiusServerAddress"` + RadiusServerScore *int64 `json:"radiusServerScore,omitempty"` + RadiusServerSecret *string `json:"radiusServerSecret,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_routingconfiguration.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_routingconfiguration.go new file mode 100644 index 00000000000..418b0d86c12 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_routingconfiguration.go @@ -0,0 +1,12 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutingConfiguration struct { + AssociatedRouteTable *SubResource `json:"associatedRouteTable,omitempty"` + InboundRouteMap *SubResource `json:"inboundRouteMap,omitempty"` + OutboundRouteMap *SubResource `json:"outboundRouteMap,omitempty"` + PropagatedRouteTables *PropagatedRouteTable `json:"propagatedRouteTables,omitempty"` + VnetRoutes *VnetRoute `json:"vnetRoutes,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_staticroute.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_staticroute.go new file mode 100644 index 00000000000..d9a40cf7abe --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_staticroute.go @@ -0,0 +1,10 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StaticRoute struct { + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + Name *string `json:"name,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_staticroutesconfig.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_staticroutesconfig.go new file mode 100644 index 00000000000..0d9a0db3cfd --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_staticroutesconfig.go @@ -0,0 +1,9 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type StaticRoutesConfig struct { + PropagateStaticRoutes *bool `json:"propagateStaticRoutes,omitempty"` + VnetLocalRouteOverrideCriteria *VnetLocalRouteOverrideCriteria `json:"vnetLocalRouteOverrideCriteria,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_subresource.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_subresource.go new file mode 100644 index 00000000000..b06b768283f --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_subresource.go @@ -0,0 +1,8 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_tagsobject.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_tagsobject.go new file mode 100644 index 00000000000..73b0464bd7d --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_tagsobject.go @@ -0,0 +1,8 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vnetroute.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vnetroute.go new file mode 100644 index 00000000000..26ac1388d05 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vnetroute.go @@ -0,0 +1,10 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VnetRoute struct { + BgpConnections *[]SubResource `json:"bgpConnections,omitempty"` + StaticRoutes *[]StaticRoute `json:"staticRoutes,omitempty"` + StaticRoutesConfig *StaticRoutesConfig `json:"staticRoutesConfig,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnclientconnectionhealth.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnclientconnectionhealth.go new file mode 100644 index 00000000000..f4b6bee5adb --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnclientconnectionhealth.go @@ -0,0 +1,11 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnClientConnectionHealth struct { + AllocatedIPAddresses *[]string `json:"allocatedIpAddresses,omitempty"` + TotalEgressBytesTransferred *int64 `json:"totalEgressBytesTransferred,omitempty"` + TotalIngressBytesTransferred *int64 `json:"totalIngressBytesTransferred,omitempty"` + VpnClientConnectionsCount *int64 `json:"vpnClientConnectionsCount,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigradiusclientrootcertificate.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigradiusclientrootcertificate.go new file mode 100644 index 00000000000..32cd3b0c3ce --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigradiusclientrootcertificate.go @@ -0,0 +1,9 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigRadiusClientRootCertificate struct { + Name *string `json:"name,omitempty"` + Thumbprint *string `json:"thumbprint,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigradiusserverrootcertificate.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigradiusserverrootcertificate.go new file mode 100644 index 00000000000..f5a02d320d4 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigradiusserverrootcertificate.go @@ -0,0 +1,9 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigRadiusServerRootCertificate struct { + Name *string `json:"name,omitempty"` + PublicCertData *string `json:"publicCertData,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfiguration.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfiguration.go new file mode 100644 index 00000000000..1f8b56984ce --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfiguration.go @@ -0,0 +1,14 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VpnServerConfigurationProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigurationpolicygroup.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigurationpolicygroup.go new file mode 100644 index 00000000000..df7554b1ec5 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigurationpolicygroup.go @@ -0,0 +1,12 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigurationPolicyGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VpnServerConfigurationPolicyGroupProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigurationpolicygroupmember.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigurationpolicygroupmember.go new file mode 100644 index 00000000000..5f72d492483 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigurationpolicygroupmember.go @@ -0,0 +1,10 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigurationPolicyGroupMember struct { + AttributeType *VpnPolicyMemberAttributeType `json:"attributeType,omitempty"` + AttributeValue *string `json:"attributeValue,omitempty"` + Name *string `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigurationpolicygroupproperties.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigurationpolicygroupproperties.go new file mode 100644 index 00000000000..d1f956dc56b --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigurationpolicygroupproperties.go @@ -0,0 +1,12 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigurationPolicyGroupProperties struct { + IsDefault *bool `json:"isDefault,omitempty"` + P2SConnectionConfigurations *[]SubResource `json:"p2SConnectionConfigurations,omitempty"` + PolicyMembers *[]VpnServerConfigurationPolicyGroupMember `json:"policyMembers,omitempty"` + Priority *int64 `json:"priority,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigurationproperties.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigurationproperties.go new file mode 100644 index 00000000000..bba2bd56557 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigurationproperties.go @@ -0,0 +1,23 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigurationProperties struct { + AadAuthenticationParameters *AadAuthenticationParameters `json:"aadAuthenticationParameters,omitempty"` + ConfigurationPolicyGroups *[]VpnServerConfigurationPolicyGroup `json:"configurationPolicyGroups,omitempty"` + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + P2sVpnGateways *[]P2SVpnGateway `json:"p2SVpnGateways,omitempty"` + ProvisioningState *string `json:"provisioningState,omitempty"` + RadiusClientRootCertificates *[]VpnServerConfigRadiusClientRootCertificate `json:"radiusClientRootCertificates,omitempty"` + RadiusServerAddress *string `json:"radiusServerAddress,omitempty"` + RadiusServerRootCertificates *[]VpnServerConfigRadiusServerRootCertificate `json:"radiusServerRootCertificates,omitempty"` + RadiusServerSecret *string `json:"radiusServerSecret,omitempty"` + RadiusServers *[]RadiusServer `json:"radiusServers,omitempty"` + VpnAuthenticationTypes *[]VpnAuthenticationType `json:"vpnAuthenticationTypes,omitempty"` + VpnClientIPsecPolicies *[]IPsecPolicy `json:"vpnClientIpsecPolicies,omitempty"` + VpnClientRevokedCertificates *[]VpnServerConfigVpnClientRevokedCertificate `json:"vpnClientRevokedCertificates,omitempty"` + VpnClientRootCertificates *[]VpnServerConfigVpnClientRootCertificate `json:"vpnClientRootCertificates,omitempty"` + VpnProtocols *[]VpnGatewayTunnelingProtocol `json:"vpnProtocols,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigvpnclientrevokedcertificate.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigvpnclientrevokedcertificate.go new file mode 100644 index 00000000000..b2e7cac735e --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigvpnclientrevokedcertificate.go @@ -0,0 +1,9 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigVpnClientRevokedCertificate struct { + Name *string `json:"name,omitempty"` + Thumbprint *string `json:"thumbprint,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigvpnclientrootcertificate.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigvpnclientrootcertificate.go new file mode 100644 index 00000000000..eda4a0c8837 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/model_vpnserverconfigvpnclientrootcertificate.go @@ -0,0 +1,9 @@ +package vpnserverconfigurations + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnServerConfigVpnClientRootCertificate struct { + Name *string `json:"name,omitempty"` + PublicCertData *string `json:"publicCertData,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnserverconfigurations/version.go b/resource-manager/network/2024-01-01/vpnserverconfigurations/version.go new file mode 100644 index 00000000000..9d2d91dfef5 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnserverconfigurations/version.go @@ -0,0 +1,12 @@ +package vpnserverconfigurations + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/vpnserverconfigurations/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/vpnsites/README.md b/resource-manager/network/2024-01-01/vpnsites/README.md new file mode 100644 index 00000000000..e6a79e8bb2f --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnsites/README.md @@ -0,0 +1,41 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/vpnsites` Documentation + +The `vpnsites` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/vpnsites" +``` + + +### Client Initialization + +```go +client := vpnsites.NewVpnSitesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `VpnSitesClient.UpdateTags` + +```go +ctx := context.TODO() +id := vpnsites.NewVpnSiteID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnSiteValue") + +payload := vpnsites.TagsObject{ + // ... +} + + +read, err := client.UpdateTags(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` diff --git a/resource-manager/network/2024-01-01/vpnsites/client.go b/resource-manager/network/2024-01-01/vpnsites/client.go new file mode 100644 index 00000000000..241eb9e94ea --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnsites/client.go @@ -0,0 +1,26 @@ +package vpnsites + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnSitesClient struct { + Client *resourcemanager.Client +} + +func NewVpnSitesClientWithBaseURI(sdkApi sdkEnv.Api) (*VpnSitesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "vpnsites", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating VpnSitesClient: %+v", err) + } + + return &VpnSitesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/vpnsites/constants.go b/resource-manager/network/2024-01-01/vpnsites/constants.go new file mode 100644 index 00000000000..58eca968713 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnsites/constants.go @@ -0,0 +1,57 @@ +package vpnsites + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/vpnsites/id_vpnsite.go b/resource-manager/network/2024-01-01/vpnsites/id_vpnsite.go new file mode 100644 index 00000000000..4b42ecf0a1e --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnsites/id_vpnsite.go @@ -0,0 +1,130 @@ +package vpnsites + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&VpnSiteId{}) +} + +var _ resourceids.ResourceId = &VpnSiteId{} + +// VpnSiteId is a struct representing the Resource ID for a Vpn Site +type VpnSiteId struct { + SubscriptionId string + ResourceGroupName string + VpnSiteName string +} + +// NewVpnSiteID returns a new VpnSiteId struct +func NewVpnSiteID(subscriptionId string, resourceGroupName string, vpnSiteName string) VpnSiteId { + return VpnSiteId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + VpnSiteName: vpnSiteName, + } +} + +// ParseVpnSiteID parses 'input' into a VpnSiteId +func ParseVpnSiteID(input string) (*VpnSiteId, error) { + parser := resourceids.NewParserFromResourceIdType(&VpnSiteId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VpnSiteId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseVpnSiteIDInsensitively parses 'input' case-insensitively into a VpnSiteId +// note: this method should only be used for API response data and not user input +func ParseVpnSiteIDInsensitively(input string) (*VpnSiteId, error) { + parser := resourceids.NewParserFromResourceIdType(&VpnSiteId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := VpnSiteId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *VpnSiteId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.VpnSiteName, ok = input.Parsed["vpnSiteName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "vpnSiteName", input) + } + + return nil +} + +// ValidateVpnSiteID checks that 'input' can be parsed as a Vpn Site ID +func ValidateVpnSiteID(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 := ParseVpnSiteID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Vpn Site ID +func (id VpnSiteId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/vpnSites/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.VpnSiteName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Vpn Site ID +func (id VpnSiteId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticVpnSites", "vpnSites", "vpnSites"), + resourceids.UserSpecifiedSegment("vpnSiteName", "vpnSiteValue"), + } +} + +// String returns a human-readable description of this Vpn Site ID +func (id VpnSiteId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Vpn Site Name: %q", id.VpnSiteName), + } + return fmt.Sprintf("Vpn Site (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/vpnsites/id_vpnsite_test.go b/resource-manager/network/2024-01-01/vpnsites/id_vpnsite_test.go new file mode 100644 index 00000000000..302b3a6a24a --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnsites/id_vpnsite_test.go @@ -0,0 +1,282 @@ +package vpnsites + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &VpnSiteId{} + +func TestNewVpnSiteID(t *testing.T) { + id := NewVpnSiteID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnSiteValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.VpnSiteName != "vpnSiteValue" { + t.Fatalf("Expected %q but got %q for Segment 'VpnSiteName'", id.VpnSiteName, "vpnSiteValue") + } +} + +func TestFormatVpnSiteID(t *testing.T) { + actual := NewVpnSiteID("12345678-1234-9876-4563-123456789012", "example-resource-group", "vpnSiteValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites/vpnSiteValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseVpnSiteID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VpnSiteId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites/vpnSiteValue", + Expected: &VpnSiteId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VpnSiteName: "vpnSiteValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites/vpnSiteValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVpnSiteID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VpnSiteName != v.Expected.VpnSiteName { + t.Fatalf("Expected %q but got %q for VpnSiteName", v.Expected.VpnSiteName, actual.VpnSiteName) + } + + } +} + +func TestParseVpnSiteIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *VpnSiteId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnSiTeS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites/vpnSiteValue", + Expected: &VpnSiteId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + VpnSiteName: "vpnSiteValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/vpnSites/vpnSiteValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnSiTeS/vPnSiTeVaLuE", + Expected: &VpnSiteId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + VpnSiteName: "vPnSiTeVaLuE", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/vPnSiTeS/vPnSiTeVaLuE/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseVpnSiteIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.VpnSiteName != v.Expected.VpnSiteName { + t.Fatalf("Expected %q but got %q for VpnSiteName", v.Expected.VpnSiteName, actual.VpnSiteName) + } + + } +} + +func TestSegmentsForVpnSiteId(t *testing.T) { + segments := VpnSiteId{}.Segments() + if len(segments) == 0 { + t.Fatalf("VpnSiteId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/vpnsites/method_updatetags.go b/resource-manager/network/2024-01-01/vpnsites/method_updatetags.go new file mode 100644 index 00000000000..08341839986 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnsites/method_updatetags.go @@ -0,0 +1,58 @@ +package vpnsites + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type UpdateTagsOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *VpnSite +} + +// UpdateTags ... +func (c VpnSitesClient) UpdateTags(ctx context.Context, id VpnSiteId, input TagsObject) (result UpdateTagsOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodPatch, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model VpnSite + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/vpnsites/model_addressspace.go b/resource-manager/network/2024-01-01/vpnsites/model_addressspace.go new file mode 100644 index 00000000000..14ce21bc15a --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnsites/model_addressspace.go @@ -0,0 +1,8 @@ +package vpnsites + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AddressSpace struct { + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnsites/model_bgpsettings.go b/resource-manager/network/2024-01-01/vpnsites/model_bgpsettings.go new file mode 100644 index 00000000000..09643cee4ab --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnsites/model_bgpsettings.go @@ -0,0 +1,11 @@ +package vpnsites + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BgpSettings struct { + Asn *int64 `json:"asn,omitempty"` + BgpPeeringAddress *string `json:"bgpPeeringAddress,omitempty"` + BgpPeeringAddresses *[]IPConfigurationBgpPeeringAddress `json:"bgpPeeringAddresses,omitempty"` + PeerWeight *int64 `json:"peerWeight,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnsites/model_deviceproperties.go b/resource-manager/network/2024-01-01/vpnsites/model_deviceproperties.go new file mode 100644 index 00000000000..6b9a69dd5df --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnsites/model_deviceproperties.go @@ -0,0 +1,10 @@ +package vpnsites + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeviceProperties struct { + DeviceModel *string `json:"deviceModel,omitempty"` + DeviceVendor *string `json:"deviceVendor,omitempty"` + LinkSpeedInMbps *int64 `json:"linkSpeedInMbps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnsites/model_ipconfigurationbgppeeringaddress.go b/resource-manager/network/2024-01-01/vpnsites/model_ipconfigurationbgppeeringaddress.go new file mode 100644 index 00000000000..ce931dc8949 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnsites/model_ipconfigurationbgppeeringaddress.go @@ -0,0 +1,11 @@ +package vpnsites + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationBgpPeeringAddress struct { + CustomBgpIPAddresses *[]string `json:"customBgpIpAddresses,omitempty"` + DefaultBgpIPAddresses *[]string `json:"defaultBgpIpAddresses,omitempty"` + IPconfigurationId *string `json:"ipconfigurationId,omitempty"` + TunnelIPAddresses *[]string `json:"tunnelIpAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnsites/model_o365breakoutcategorypolicies.go b/resource-manager/network/2024-01-01/vpnsites/model_o365breakoutcategorypolicies.go new file mode 100644 index 00000000000..2d1e7f02cf9 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnsites/model_o365breakoutcategorypolicies.go @@ -0,0 +1,10 @@ +package vpnsites + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type O365BreakOutCategoryPolicies struct { + Allow *bool `json:"allow,omitempty"` + Default *bool `json:"default,omitempty"` + Optimize *bool `json:"optimize,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnsites/model_o365policyproperties.go b/resource-manager/network/2024-01-01/vpnsites/model_o365policyproperties.go new file mode 100644 index 00000000000..18b5f663387 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnsites/model_o365policyproperties.go @@ -0,0 +1,8 @@ +package vpnsites + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type O365PolicyProperties struct { + BreakOutCategories *O365BreakOutCategoryPolicies `json:"breakOutCategories,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnsites/model_subresource.go b/resource-manager/network/2024-01-01/vpnsites/model_subresource.go new file mode 100644 index 00000000000..2b90b3f784d --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnsites/model_subresource.go @@ -0,0 +1,8 @@ +package vpnsites + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnsites/model_tagsobject.go b/resource-manager/network/2024-01-01/vpnsites/model_tagsobject.go new file mode 100644 index 00000000000..c05667ddc1a --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnsites/model_tagsobject.go @@ -0,0 +1,8 @@ +package vpnsites + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TagsObject struct { + Tags *map[string]string `json:"tags,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnsites/model_vpnlinkbgpsettings.go b/resource-manager/network/2024-01-01/vpnsites/model_vpnlinkbgpsettings.go new file mode 100644 index 00000000000..cae11e9a335 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnsites/model_vpnlinkbgpsettings.go @@ -0,0 +1,9 @@ +package vpnsites + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnLinkBgpSettings struct { + Asn *int64 `json:"asn,omitempty"` + BgpPeeringAddress *string `json:"bgpPeeringAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnsites/model_vpnlinkproviderproperties.go b/resource-manager/network/2024-01-01/vpnsites/model_vpnlinkproviderproperties.go new file mode 100644 index 00000000000..aa802b7bc05 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnsites/model_vpnlinkproviderproperties.go @@ -0,0 +1,9 @@ +package vpnsites + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnLinkProviderProperties struct { + LinkProviderName *string `json:"linkProviderName,omitempty"` + LinkSpeedInMbps *int64 `json:"linkSpeedInMbps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnsites/model_vpnsite.go b/resource-manager/network/2024-01-01/vpnsites/model_vpnsite.go new file mode 100644 index 00000000000..a7ccb293a6c --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnsites/model_vpnsite.go @@ -0,0 +1,14 @@ +package vpnsites + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnSite struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VpnSiteProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnsites/model_vpnsitelink.go b/resource-manager/network/2024-01-01/vpnsites/model_vpnsitelink.go new file mode 100644 index 00000000000..0d815e3b164 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnsites/model_vpnsitelink.go @@ -0,0 +1,12 @@ +package vpnsites + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnSiteLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VpnSiteLinkProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnsites/model_vpnsitelinkproperties.go b/resource-manager/network/2024-01-01/vpnsites/model_vpnsitelinkproperties.go new file mode 100644 index 00000000000..3d9dedc099d --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnsites/model_vpnsitelinkproperties.go @@ -0,0 +1,12 @@ +package vpnsites + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnSiteLinkProperties struct { + BgpProperties *VpnLinkBgpSettings `json:"bgpProperties,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + LinkProperties *VpnLinkProviderProperties `json:"linkProperties,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnsites/model_vpnsiteproperties.go b/resource-manager/network/2024-01-01/vpnsites/model_vpnsiteproperties.go new file mode 100644 index 00000000000..b404c9ab09b --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnsites/model_vpnsiteproperties.go @@ -0,0 +1,17 @@ +package vpnsites + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VpnSiteProperties struct { + AddressSpace *AddressSpace `json:"addressSpace,omitempty"` + BgpProperties *BgpSettings `json:"bgpProperties,omitempty"` + DeviceProperties *DeviceProperties `json:"deviceProperties,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + IsSecuritySite *bool `json:"isSecuritySite,omitempty"` + O365Policy *O365PolicyProperties `json:"o365Policy,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SiteKey *string `json:"siteKey,omitempty"` + VirtualWAN *SubResource `json:"virtualWan,omitempty"` + VpnSiteLinks *[]VpnSiteLink `json:"vpnSiteLinks,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/vpnsites/version.go b/resource-manager/network/2024-01-01/vpnsites/version.go new file mode 100644 index 00000000000..3652c1c0185 --- /dev/null +++ b/resource-manager/network/2024-01-01/vpnsites/version.go @@ -0,0 +1,12 @@ +package vpnsites + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/vpnsites/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/README.md b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/README.md new file mode 100644 index 00000000000..f1ceafd24d4 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/README.md @@ -0,0 +1,104 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/webapplicationfirewallpolicies` Documentation + +The `webapplicationfirewallpolicies` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/webapplicationfirewallpolicies" +``` + + +### Client Initialization + +```go +client := webapplicationfirewallpolicies.NewWebApplicationFirewallPoliciesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `WebApplicationFirewallPoliciesClient.CreateOrUpdate` + +```go +ctx := context.TODO() +id := webapplicationfirewallpolicies.NewApplicationGatewayWebApplicationFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayWebApplicationFirewallPolicyValue") + +payload := webapplicationfirewallpolicies.WebApplicationFirewallPolicy{ + // ... +} + + +read, err := client.CreateOrUpdate(ctx, id, payload) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `WebApplicationFirewallPoliciesClient.Delete` + +```go +ctx := context.TODO() +id := webapplicationfirewallpolicies.NewApplicationGatewayWebApplicationFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayWebApplicationFirewallPolicyValue") + +if err := client.DeleteThenPoll(ctx, id); err != nil { + // handle the error +} +``` + + +### Example Usage: `WebApplicationFirewallPoliciesClient.Get` + +```go +ctx := context.TODO() +id := webapplicationfirewallpolicies.NewApplicationGatewayWebApplicationFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayWebApplicationFirewallPolicyValue") + +read, err := client.Get(ctx, id) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `WebApplicationFirewallPoliciesClient.List` + +```go +ctx := context.TODO() +id := commonids.NewResourceGroupID("12345678-1234-9876-4563-123456789012", "example-resource-group") + +// alternatively `client.List(ctx, id)` can be used to do batched pagination +items, err := client.ListComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` + + +### Example Usage: `WebApplicationFirewallPoliciesClient.ListAll` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.ListAll(ctx, id)` can be used to do batched pagination +items, err := client.ListAllComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/client.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/client.go new file mode 100644 index 00000000000..ac148c53733 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/client.go @@ -0,0 +1,26 @@ +package webapplicationfirewallpolicies + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type WebApplicationFirewallPoliciesClient struct { + Client *resourcemanager.Client +} + +func NewWebApplicationFirewallPoliciesClientWithBaseURI(sdkApi sdkEnv.Api) (*WebApplicationFirewallPoliciesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "webapplicationfirewallpolicies", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating WebApplicationFirewallPoliciesClient: %+v", err) + } + + return &WebApplicationFirewallPoliciesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/constants.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/constants.go new file mode 100644 index 00000000000..dea03cf19c8 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/constants.go @@ -0,0 +1,2936 @@ +package webapplicationfirewallpolicies + +import ( + "encoding/json" + "fmt" + "strings" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ActionType string + +const ( + ActionTypeAllow ActionType = "Allow" + ActionTypeAnomalyScoring ActionType = "AnomalyScoring" + ActionTypeBlock ActionType = "Block" + ActionTypeJSChallenge ActionType = "JSChallenge" + ActionTypeLog ActionType = "Log" +) + +func PossibleValuesForActionType() []string { + return []string{ + string(ActionTypeAllow), + string(ActionTypeAnomalyScoring), + string(ActionTypeBlock), + string(ActionTypeJSChallenge), + string(ActionTypeLog), + } +} + +func (s *ActionType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseActionType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseActionType(input string) (*ActionType, error) { + vals := map[string]ActionType{ + "allow": ActionTypeAllow, + "anomalyscoring": ActionTypeAnomalyScoring, + "block": ActionTypeBlock, + "jschallenge": ActionTypeJSChallenge, + "log": ActionTypeLog, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ActionType(input) + return &out, nil +} + +type ApplicationGatewayClientRevocationOptions string + +const ( + ApplicationGatewayClientRevocationOptionsNone ApplicationGatewayClientRevocationOptions = "None" + ApplicationGatewayClientRevocationOptionsOCSP ApplicationGatewayClientRevocationOptions = "OCSP" +) + +func PossibleValuesForApplicationGatewayClientRevocationOptions() []string { + return []string{ + string(ApplicationGatewayClientRevocationOptionsNone), + string(ApplicationGatewayClientRevocationOptionsOCSP), + } +} + +func (s *ApplicationGatewayClientRevocationOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayClientRevocationOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayClientRevocationOptions(input string) (*ApplicationGatewayClientRevocationOptions, error) { + vals := map[string]ApplicationGatewayClientRevocationOptions{ + "none": ApplicationGatewayClientRevocationOptionsNone, + "ocsp": ApplicationGatewayClientRevocationOptionsOCSP, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayClientRevocationOptions(input) + return &out, nil +} + +type ApplicationGatewayCookieBasedAffinity string + +const ( + ApplicationGatewayCookieBasedAffinityDisabled ApplicationGatewayCookieBasedAffinity = "Disabled" + ApplicationGatewayCookieBasedAffinityEnabled ApplicationGatewayCookieBasedAffinity = "Enabled" +) + +func PossibleValuesForApplicationGatewayCookieBasedAffinity() []string { + return []string{ + string(ApplicationGatewayCookieBasedAffinityDisabled), + string(ApplicationGatewayCookieBasedAffinityEnabled), + } +} + +func (s *ApplicationGatewayCookieBasedAffinity) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayCookieBasedAffinity(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayCookieBasedAffinity(input string) (*ApplicationGatewayCookieBasedAffinity, error) { + vals := map[string]ApplicationGatewayCookieBasedAffinity{ + "disabled": ApplicationGatewayCookieBasedAffinityDisabled, + "enabled": ApplicationGatewayCookieBasedAffinityEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayCookieBasedAffinity(input) + return &out, nil +} + +type ApplicationGatewayCustomErrorStatusCode string + +const ( + ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveHundred ApplicationGatewayCustomErrorStatusCode = "HttpStatus500" + ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveZeroFour ApplicationGatewayCustomErrorStatusCode = "HttpStatus504" + ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveZeroThree ApplicationGatewayCustomErrorStatusCode = "HttpStatus503" + ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveZeroTwo ApplicationGatewayCustomErrorStatusCode = "HttpStatus502" + ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourHundred ApplicationGatewayCustomErrorStatusCode = "HttpStatus400" + ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroEight ApplicationGatewayCustomErrorStatusCode = "HttpStatus408" + ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroFive ApplicationGatewayCustomErrorStatusCode = "HttpStatus405" + ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroFour ApplicationGatewayCustomErrorStatusCode = "HttpStatus404" + ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroThree ApplicationGatewayCustomErrorStatusCode = "HttpStatus403" +) + +func PossibleValuesForApplicationGatewayCustomErrorStatusCode() []string { + return []string{ + string(ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveHundred), + string(ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveZeroFour), + string(ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveZeroThree), + string(ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveZeroTwo), + string(ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourHundred), + string(ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroEight), + string(ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroFive), + string(ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroFour), + string(ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroThree), + } +} + +func (s *ApplicationGatewayCustomErrorStatusCode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayCustomErrorStatusCode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayCustomErrorStatusCode(input string) (*ApplicationGatewayCustomErrorStatusCode, error) { + vals := map[string]ApplicationGatewayCustomErrorStatusCode{ + "httpstatus500": ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveHundred, + "httpstatus504": ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveZeroFour, + "httpstatus503": ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveZeroThree, + "httpstatus502": ApplicationGatewayCustomErrorStatusCodeHTTPStatusFiveZeroTwo, + "httpstatus400": ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourHundred, + "httpstatus408": ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroEight, + "httpstatus405": ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroFive, + "httpstatus404": ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroFour, + "httpstatus403": ApplicationGatewayCustomErrorStatusCodeHTTPStatusFourZeroThree, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayCustomErrorStatusCode(input) + return &out, nil +} + +type ApplicationGatewayFirewallMode string + +const ( + ApplicationGatewayFirewallModeDetection ApplicationGatewayFirewallMode = "Detection" + ApplicationGatewayFirewallModePrevention ApplicationGatewayFirewallMode = "Prevention" +) + +func PossibleValuesForApplicationGatewayFirewallMode() []string { + return []string{ + string(ApplicationGatewayFirewallModeDetection), + string(ApplicationGatewayFirewallModePrevention), + } +} + +func (s *ApplicationGatewayFirewallMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayFirewallMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayFirewallMode(input string) (*ApplicationGatewayFirewallMode, error) { + vals := map[string]ApplicationGatewayFirewallMode{ + "detection": ApplicationGatewayFirewallModeDetection, + "prevention": ApplicationGatewayFirewallModePrevention, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayFirewallMode(input) + return &out, nil +} + +type ApplicationGatewayFirewallRateLimitDuration string + +const ( + ApplicationGatewayFirewallRateLimitDurationFiveMins ApplicationGatewayFirewallRateLimitDuration = "FiveMins" + ApplicationGatewayFirewallRateLimitDurationOneMin ApplicationGatewayFirewallRateLimitDuration = "OneMin" +) + +func PossibleValuesForApplicationGatewayFirewallRateLimitDuration() []string { + return []string{ + string(ApplicationGatewayFirewallRateLimitDurationFiveMins), + string(ApplicationGatewayFirewallRateLimitDurationOneMin), + } +} + +func (s *ApplicationGatewayFirewallRateLimitDuration) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayFirewallRateLimitDuration(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayFirewallRateLimitDuration(input string) (*ApplicationGatewayFirewallRateLimitDuration, error) { + vals := map[string]ApplicationGatewayFirewallRateLimitDuration{ + "fivemins": ApplicationGatewayFirewallRateLimitDurationFiveMins, + "onemin": ApplicationGatewayFirewallRateLimitDurationOneMin, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayFirewallRateLimitDuration(input) + return &out, nil +} + +type ApplicationGatewayFirewallUserSessionVariable string + +const ( + ApplicationGatewayFirewallUserSessionVariableClientAddr ApplicationGatewayFirewallUserSessionVariable = "ClientAddr" + ApplicationGatewayFirewallUserSessionVariableGeoLocation ApplicationGatewayFirewallUserSessionVariable = "GeoLocation" + ApplicationGatewayFirewallUserSessionVariableNone ApplicationGatewayFirewallUserSessionVariable = "None" +) + +func PossibleValuesForApplicationGatewayFirewallUserSessionVariable() []string { + return []string{ + string(ApplicationGatewayFirewallUserSessionVariableClientAddr), + string(ApplicationGatewayFirewallUserSessionVariableGeoLocation), + string(ApplicationGatewayFirewallUserSessionVariableNone), + } +} + +func (s *ApplicationGatewayFirewallUserSessionVariable) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayFirewallUserSessionVariable(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayFirewallUserSessionVariable(input string) (*ApplicationGatewayFirewallUserSessionVariable, error) { + vals := map[string]ApplicationGatewayFirewallUserSessionVariable{ + "clientaddr": ApplicationGatewayFirewallUserSessionVariableClientAddr, + "geolocation": ApplicationGatewayFirewallUserSessionVariableGeoLocation, + "none": ApplicationGatewayFirewallUserSessionVariableNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayFirewallUserSessionVariable(input) + return &out, nil +} + +type ApplicationGatewayLoadDistributionAlgorithm string + +const ( + ApplicationGatewayLoadDistributionAlgorithmIPHash ApplicationGatewayLoadDistributionAlgorithm = "IpHash" + ApplicationGatewayLoadDistributionAlgorithmLeastConnections ApplicationGatewayLoadDistributionAlgorithm = "LeastConnections" + ApplicationGatewayLoadDistributionAlgorithmRoundRobin ApplicationGatewayLoadDistributionAlgorithm = "RoundRobin" +) + +func PossibleValuesForApplicationGatewayLoadDistributionAlgorithm() []string { + return []string{ + string(ApplicationGatewayLoadDistributionAlgorithmIPHash), + string(ApplicationGatewayLoadDistributionAlgorithmLeastConnections), + string(ApplicationGatewayLoadDistributionAlgorithmRoundRobin), + } +} + +func (s *ApplicationGatewayLoadDistributionAlgorithm) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayLoadDistributionAlgorithm(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayLoadDistributionAlgorithm(input string) (*ApplicationGatewayLoadDistributionAlgorithm, error) { + vals := map[string]ApplicationGatewayLoadDistributionAlgorithm{ + "iphash": ApplicationGatewayLoadDistributionAlgorithmIPHash, + "leastconnections": ApplicationGatewayLoadDistributionAlgorithmLeastConnections, + "roundrobin": ApplicationGatewayLoadDistributionAlgorithmRoundRobin, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayLoadDistributionAlgorithm(input) + return &out, nil +} + +type ApplicationGatewayOperationalState string + +const ( + ApplicationGatewayOperationalStateRunning ApplicationGatewayOperationalState = "Running" + ApplicationGatewayOperationalStateStarting ApplicationGatewayOperationalState = "Starting" + ApplicationGatewayOperationalStateStopped ApplicationGatewayOperationalState = "Stopped" + ApplicationGatewayOperationalStateStopping ApplicationGatewayOperationalState = "Stopping" +) + +func PossibleValuesForApplicationGatewayOperationalState() []string { + return []string{ + string(ApplicationGatewayOperationalStateRunning), + string(ApplicationGatewayOperationalStateStarting), + string(ApplicationGatewayOperationalStateStopped), + string(ApplicationGatewayOperationalStateStopping), + } +} + +func (s *ApplicationGatewayOperationalState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayOperationalState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayOperationalState(input string) (*ApplicationGatewayOperationalState, error) { + vals := map[string]ApplicationGatewayOperationalState{ + "running": ApplicationGatewayOperationalStateRunning, + "starting": ApplicationGatewayOperationalStateStarting, + "stopped": ApplicationGatewayOperationalStateStopped, + "stopping": ApplicationGatewayOperationalStateStopping, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayOperationalState(input) + return &out, nil +} + +type ApplicationGatewayProtocol string + +const ( + ApplicationGatewayProtocolHTTP ApplicationGatewayProtocol = "Http" + ApplicationGatewayProtocolHTTPS ApplicationGatewayProtocol = "Https" + ApplicationGatewayProtocolTcp ApplicationGatewayProtocol = "Tcp" + ApplicationGatewayProtocolTls ApplicationGatewayProtocol = "Tls" +) + +func PossibleValuesForApplicationGatewayProtocol() []string { + return []string{ + string(ApplicationGatewayProtocolHTTP), + string(ApplicationGatewayProtocolHTTPS), + string(ApplicationGatewayProtocolTcp), + string(ApplicationGatewayProtocolTls), + } +} + +func (s *ApplicationGatewayProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayProtocol(input string) (*ApplicationGatewayProtocol, error) { + vals := map[string]ApplicationGatewayProtocol{ + "http": ApplicationGatewayProtocolHTTP, + "https": ApplicationGatewayProtocolHTTPS, + "tcp": ApplicationGatewayProtocolTcp, + "tls": ApplicationGatewayProtocolTls, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayProtocol(input) + return &out, nil +} + +type ApplicationGatewayRedirectType string + +const ( + ApplicationGatewayRedirectTypeFound ApplicationGatewayRedirectType = "Found" + ApplicationGatewayRedirectTypePermanent ApplicationGatewayRedirectType = "Permanent" + ApplicationGatewayRedirectTypeSeeOther ApplicationGatewayRedirectType = "SeeOther" + ApplicationGatewayRedirectTypeTemporary ApplicationGatewayRedirectType = "Temporary" +) + +func PossibleValuesForApplicationGatewayRedirectType() []string { + return []string{ + string(ApplicationGatewayRedirectTypeFound), + string(ApplicationGatewayRedirectTypePermanent), + string(ApplicationGatewayRedirectTypeSeeOther), + string(ApplicationGatewayRedirectTypeTemporary), + } +} + +func (s *ApplicationGatewayRedirectType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayRedirectType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayRedirectType(input string) (*ApplicationGatewayRedirectType, error) { + vals := map[string]ApplicationGatewayRedirectType{ + "found": ApplicationGatewayRedirectTypeFound, + "permanent": ApplicationGatewayRedirectTypePermanent, + "seeother": ApplicationGatewayRedirectTypeSeeOther, + "temporary": ApplicationGatewayRedirectTypeTemporary, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayRedirectType(input) + return &out, nil +} + +type ApplicationGatewayRequestRoutingRuleType string + +const ( + ApplicationGatewayRequestRoutingRuleTypeBasic ApplicationGatewayRequestRoutingRuleType = "Basic" + ApplicationGatewayRequestRoutingRuleTypePathBasedRouting ApplicationGatewayRequestRoutingRuleType = "PathBasedRouting" +) + +func PossibleValuesForApplicationGatewayRequestRoutingRuleType() []string { + return []string{ + string(ApplicationGatewayRequestRoutingRuleTypeBasic), + string(ApplicationGatewayRequestRoutingRuleTypePathBasedRouting), + } +} + +func (s *ApplicationGatewayRequestRoutingRuleType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayRequestRoutingRuleType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayRequestRoutingRuleType(input string) (*ApplicationGatewayRequestRoutingRuleType, error) { + vals := map[string]ApplicationGatewayRequestRoutingRuleType{ + "basic": ApplicationGatewayRequestRoutingRuleTypeBasic, + "pathbasedrouting": ApplicationGatewayRequestRoutingRuleTypePathBasedRouting, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayRequestRoutingRuleType(input) + return &out, nil +} + +type ApplicationGatewaySkuFamily string + +const ( + ApplicationGatewaySkuFamilyGenerationOne ApplicationGatewaySkuFamily = "Generation_1" + ApplicationGatewaySkuFamilyGenerationTwo ApplicationGatewaySkuFamily = "Generation_2" +) + +func PossibleValuesForApplicationGatewaySkuFamily() []string { + return []string{ + string(ApplicationGatewaySkuFamilyGenerationOne), + string(ApplicationGatewaySkuFamilyGenerationTwo), + } +} + +func (s *ApplicationGatewaySkuFamily) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewaySkuFamily(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewaySkuFamily(input string) (*ApplicationGatewaySkuFamily, error) { + vals := map[string]ApplicationGatewaySkuFamily{ + "generation_1": ApplicationGatewaySkuFamilyGenerationOne, + "generation_2": ApplicationGatewaySkuFamilyGenerationTwo, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewaySkuFamily(input) + return &out, nil +} + +type ApplicationGatewaySkuName string + +const ( + ApplicationGatewaySkuNameBasic ApplicationGatewaySkuName = "Basic" + ApplicationGatewaySkuNameStandardLarge ApplicationGatewaySkuName = "Standard_Large" + ApplicationGatewaySkuNameStandardMedium ApplicationGatewaySkuName = "Standard_Medium" + ApplicationGatewaySkuNameStandardSmall ApplicationGatewaySkuName = "Standard_Small" + ApplicationGatewaySkuNameStandardVTwo ApplicationGatewaySkuName = "Standard_v2" + ApplicationGatewaySkuNameWAFLarge ApplicationGatewaySkuName = "WAF_Large" + ApplicationGatewaySkuNameWAFMedium ApplicationGatewaySkuName = "WAF_Medium" + ApplicationGatewaySkuNameWAFVTwo ApplicationGatewaySkuName = "WAF_v2" +) + +func PossibleValuesForApplicationGatewaySkuName() []string { + return []string{ + string(ApplicationGatewaySkuNameBasic), + string(ApplicationGatewaySkuNameStandardLarge), + string(ApplicationGatewaySkuNameStandardMedium), + string(ApplicationGatewaySkuNameStandardSmall), + string(ApplicationGatewaySkuNameStandardVTwo), + string(ApplicationGatewaySkuNameWAFLarge), + string(ApplicationGatewaySkuNameWAFMedium), + string(ApplicationGatewaySkuNameWAFVTwo), + } +} + +func (s *ApplicationGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewaySkuName(input string) (*ApplicationGatewaySkuName, error) { + vals := map[string]ApplicationGatewaySkuName{ + "basic": ApplicationGatewaySkuNameBasic, + "standard_large": ApplicationGatewaySkuNameStandardLarge, + "standard_medium": ApplicationGatewaySkuNameStandardMedium, + "standard_small": ApplicationGatewaySkuNameStandardSmall, + "standard_v2": ApplicationGatewaySkuNameStandardVTwo, + "waf_large": ApplicationGatewaySkuNameWAFLarge, + "waf_medium": ApplicationGatewaySkuNameWAFMedium, + "waf_v2": ApplicationGatewaySkuNameWAFVTwo, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewaySkuName(input) + return &out, nil +} + +type ApplicationGatewaySslCipherSuite string + +const ( + ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESOneTwoEightCBCSHA ApplicationGatewaySslCipherSuite = "TLS_DHE_DSS_WITH_AES_128_CBC_SHA" + ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESOneTwoEightCBCSHATwoFiveSix ApplicationGatewaySslCipherSuite = "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256" + ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESTwoFiveSixCBCSHA ApplicationGatewaySslCipherSuite = "TLS_DHE_DSS_WITH_AES_256_CBC_SHA" + ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESTwoFiveSixCBCSHATwoFiveSix ApplicationGatewaySslCipherSuite = "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256" + ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHThreeDESEDECBCSHA ApplicationGatewaySslCipherSuite = "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA" + ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESOneTwoEightCBCSHA ApplicationGatewaySslCipherSuite = "TLS_DHE_RSA_WITH_AES_128_CBC_SHA" + ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESOneTwoEightGCMSHATwoFiveSix ApplicationGatewaySslCipherSuite = "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256" + ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESTwoFiveSixCBCSHA ApplicationGatewaySslCipherSuite = "TLS_DHE_RSA_WITH_AES_256_CBC_SHA" + ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESTwoFiveSixGCMSHAThreeEightFour ApplicationGatewaySslCipherSuite = "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384" + ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESOneTwoEightCBCSHA ApplicationGatewaySslCipherSuite = "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA" + ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESOneTwoEightCBCSHATwoFiveSix ApplicationGatewaySslCipherSuite = "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256" + ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESOneTwoEightGCMSHATwoFiveSix ApplicationGatewaySslCipherSuite = "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256" + ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESTwoFiveSixCBCSHA ApplicationGatewaySslCipherSuite = "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA" + ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESTwoFiveSixCBCSHAThreeEightFour ApplicationGatewaySslCipherSuite = "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384" + ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESTwoFiveSixGCMSHAThreeEightFour ApplicationGatewaySslCipherSuite = "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384" + ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESOneTwoEightCBCSHA ApplicationGatewaySslCipherSuite = "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA" + ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESOneTwoEightCBCSHATwoFiveSix ApplicationGatewaySslCipherSuite = "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256" + ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESOneTwoEightGCMSHATwoFiveSix ApplicationGatewaySslCipherSuite = "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" + ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESTwoFiveSixCBCSHA ApplicationGatewaySslCipherSuite = "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA" + ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESTwoFiveSixCBCSHAThreeEightFour ApplicationGatewaySslCipherSuite = "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384" + ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESTwoFiveSixGCMSHAThreeEightFour ApplicationGatewaySslCipherSuite = "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384" + ApplicationGatewaySslCipherSuiteTLSRSAWITHAESOneTwoEightCBCSHA ApplicationGatewaySslCipherSuite = "TLS_RSA_WITH_AES_128_CBC_SHA" + ApplicationGatewaySslCipherSuiteTLSRSAWITHAESOneTwoEightCBCSHATwoFiveSix ApplicationGatewaySslCipherSuite = "TLS_RSA_WITH_AES_128_CBC_SHA256" + ApplicationGatewaySslCipherSuiteTLSRSAWITHAESOneTwoEightGCMSHATwoFiveSix ApplicationGatewaySslCipherSuite = "TLS_RSA_WITH_AES_128_GCM_SHA256" + ApplicationGatewaySslCipherSuiteTLSRSAWITHAESTwoFiveSixCBCSHA ApplicationGatewaySslCipherSuite = "TLS_RSA_WITH_AES_256_CBC_SHA" + ApplicationGatewaySslCipherSuiteTLSRSAWITHAESTwoFiveSixCBCSHATwoFiveSix ApplicationGatewaySslCipherSuite = "TLS_RSA_WITH_AES_256_CBC_SHA256" + ApplicationGatewaySslCipherSuiteTLSRSAWITHAESTwoFiveSixGCMSHAThreeEightFour ApplicationGatewaySslCipherSuite = "TLS_RSA_WITH_AES_256_GCM_SHA384" + ApplicationGatewaySslCipherSuiteTLSRSAWITHThreeDESEDECBCSHA ApplicationGatewaySslCipherSuite = "TLS_RSA_WITH_3DES_EDE_CBC_SHA" +) + +func PossibleValuesForApplicationGatewaySslCipherSuite() []string { + return []string{ + string(ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESOneTwoEightCBCSHA), + string(ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESOneTwoEightCBCSHATwoFiveSix), + string(ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESTwoFiveSixCBCSHA), + string(ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESTwoFiveSixCBCSHATwoFiveSix), + string(ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHThreeDESEDECBCSHA), + string(ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESOneTwoEightCBCSHA), + string(ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESOneTwoEightGCMSHATwoFiveSix), + string(ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESTwoFiveSixCBCSHA), + string(ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESTwoFiveSixGCMSHAThreeEightFour), + string(ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESOneTwoEightCBCSHA), + string(ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESOneTwoEightCBCSHATwoFiveSix), + string(ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESOneTwoEightGCMSHATwoFiveSix), + string(ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESTwoFiveSixCBCSHA), + string(ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESTwoFiveSixCBCSHAThreeEightFour), + string(ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESTwoFiveSixGCMSHAThreeEightFour), + string(ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESOneTwoEightCBCSHA), + string(ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESOneTwoEightCBCSHATwoFiveSix), + string(ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESOneTwoEightGCMSHATwoFiveSix), + string(ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESTwoFiveSixCBCSHA), + string(ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESTwoFiveSixCBCSHAThreeEightFour), + string(ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESTwoFiveSixGCMSHAThreeEightFour), + string(ApplicationGatewaySslCipherSuiteTLSRSAWITHAESOneTwoEightCBCSHA), + string(ApplicationGatewaySslCipherSuiteTLSRSAWITHAESOneTwoEightCBCSHATwoFiveSix), + string(ApplicationGatewaySslCipherSuiteTLSRSAWITHAESOneTwoEightGCMSHATwoFiveSix), + string(ApplicationGatewaySslCipherSuiteTLSRSAWITHAESTwoFiveSixCBCSHA), + string(ApplicationGatewaySslCipherSuiteTLSRSAWITHAESTwoFiveSixCBCSHATwoFiveSix), + string(ApplicationGatewaySslCipherSuiteTLSRSAWITHAESTwoFiveSixGCMSHAThreeEightFour), + string(ApplicationGatewaySslCipherSuiteTLSRSAWITHThreeDESEDECBCSHA), + } +} + +func (s *ApplicationGatewaySslCipherSuite) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewaySslCipherSuite(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewaySslCipherSuite(input string) (*ApplicationGatewaySslCipherSuite, error) { + vals := map[string]ApplicationGatewaySslCipherSuite{ + "tls_dhe_dss_with_aes_128_cbc_sha": ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESOneTwoEightCBCSHA, + "tls_dhe_dss_with_aes_128_cbc_sha256": ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESOneTwoEightCBCSHATwoFiveSix, + "tls_dhe_dss_with_aes_256_cbc_sha": ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESTwoFiveSixCBCSHA, + "tls_dhe_dss_with_aes_256_cbc_sha256": ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHAESTwoFiveSixCBCSHATwoFiveSix, + "tls_dhe_dss_with_3des_ede_cbc_sha": ApplicationGatewaySslCipherSuiteTLSDHEDSSWITHThreeDESEDECBCSHA, + "tls_dhe_rsa_with_aes_128_cbc_sha": ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESOneTwoEightCBCSHA, + "tls_dhe_rsa_with_aes_128_gcm_sha256": ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESOneTwoEightGCMSHATwoFiveSix, + "tls_dhe_rsa_with_aes_256_cbc_sha": ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESTwoFiveSixCBCSHA, + "tls_dhe_rsa_with_aes_256_gcm_sha384": ApplicationGatewaySslCipherSuiteTLSDHERSAWITHAESTwoFiveSixGCMSHAThreeEightFour, + "tls_ecdhe_ecdsa_with_aes_128_cbc_sha": ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESOneTwoEightCBCSHA, + "tls_ecdhe_ecdsa_with_aes_128_cbc_sha256": ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESOneTwoEightCBCSHATwoFiveSix, + "tls_ecdhe_ecdsa_with_aes_128_gcm_sha256": ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESOneTwoEightGCMSHATwoFiveSix, + "tls_ecdhe_ecdsa_with_aes_256_cbc_sha": ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESTwoFiveSixCBCSHA, + "tls_ecdhe_ecdsa_with_aes_256_cbc_sha384": ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESTwoFiveSixCBCSHAThreeEightFour, + "tls_ecdhe_ecdsa_with_aes_256_gcm_sha384": ApplicationGatewaySslCipherSuiteTLSECDHEECDSAWITHAESTwoFiveSixGCMSHAThreeEightFour, + "tls_ecdhe_rsa_with_aes_128_cbc_sha": ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESOneTwoEightCBCSHA, + "tls_ecdhe_rsa_with_aes_128_cbc_sha256": ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESOneTwoEightCBCSHATwoFiveSix, + "tls_ecdhe_rsa_with_aes_128_gcm_sha256": ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESOneTwoEightGCMSHATwoFiveSix, + "tls_ecdhe_rsa_with_aes_256_cbc_sha": ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESTwoFiveSixCBCSHA, + "tls_ecdhe_rsa_with_aes_256_cbc_sha384": ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESTwoFiveSixCBCSHAThreeEightFour, + "tls_ecdhe_rsa_with_aes_256_gcm_sha384": ApplicationGatewaySslCipherSuiteTLSECDHERSAWITHAESTwoFiveSixGCMSHAThreeEightFour, + "tls_rsa_with_aes_128_cbc_sha": ApplicationGatewaySslCipherSuiteTLSRSAWITHAESOneTwoEightCBCSHA, + "tls_rsa_with_aes_128_cbc_sha256": ApplicationGatewaySslCipherSuiteTLSRSAWITHAESOneTwoEightCBCSHATwoFiveSix, + "tls_rsa_with_aes_128_gcm_sha256": ApplicationGatewaySslCipherSuiteTLSRSAWITHAESOneTwoEightGCMSHATwoFiveSix, + "tls_rsa_with_aes_256_cbc_sha": ApplicationGatewaySslCipherSuiteTLSRSAWITHAESTwoFiveSixCBCSHA, + "tls_rsa_with_aes_256_cbc_sha256": ApplicationGatewaySslCipherSuiteTLSRSAWITHAESTwoFiveSixCBCSHATwoFiveSix, + "tls_rsa_with_aes_256_gcm_sha384": ApplicationGatewaySslCipherSuiteTLSRSAWITHAESTwoFiveSixGCMSHAThreeEightFour, + "tls_rsa_with_3des_ede_cbc_sha": ApplicationGatewaySslCipherSuiteTLSRSAWITHThreeDESEDECBCSHA, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewaySslCipherSuite(input) + return &out, nil +} + +type ApplicationGatewaySslPolicyName string + +const ( + ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroOneFiveZeroFiveZeroOne ApplicationGatewaySslPolicyName = "AppGwSslPolicy20150501" + ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroOneSevenZeroFourZeroOne ApplicationGatewaySslPolicyName = "AppGwSslPolicy20170401" + ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroOneSevenZeroFourZeroOneS ApplicationGatewaySslPolicyName = "AppGwSslPolicy20170401S" + ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroTwoTwoZeroOneZeroOne ApplicationGatewaySslPolicyName = "AppGwSslPolicy20220101" + ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroTwoTwoZeroOneZeroOneS ApplicationGatewaySslPolicyName = "AppGwSslPolicy20220101S" +) + +func PossibleValuesForApplicationGatewaySslPolicyName() []string { + return []string{ + string(ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroOneFiveZeroFiveZeroOne), + string(ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroOneSevenZeroFourZeroOne), + string(ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroOneSevenZeroFourZeroOneS), + string(ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroTwoTwoZeroOneZeroOne), + string(ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroTwoTwoZeroOneZeroOneS), + } +} + +func (s *ApplicationGatewaySslPolicyName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewaySslPolicyName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewaySslPolicyName(input string) (*ApplicationGatewaySslPolicyName, error) { + vals := map[string]ApplicationGatewaySslPolicyName{ + "appgwsslpolicy20150501": ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroOneFiveZeroFiveZeroOne, + "appgwsslpolicy20170401": ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroOneSevenZeroFourZeroOne, + "appgwsslpolicy20170401s": ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroOneSevenZeroFourZeroOneS, + "appgwsslpolicy20220101": ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroTwoTwoZeroOneZeroOne, + "appgwsslpolicy20220101s": ApplicationGatewaySslPolicyNameAppGwSslPolicyTwoZeroTwoTwoZeroOneZeroOneS, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewaySslPolicyName(input) + return &out, nil +} + +type ApplicationGatewaySslPolicyType string + +const ( + ApplicationGatewaySslPolicyTypeCustom ApplicationGatewaySslPolicyType = "Custom" + ApplicationGatewaySslPolicyTypeCustomVTwo ApplicationGatewaySslPolicyType = "CustomV2" + ApplicationGatewaySslPolicyTypePredefined ApplicationGatewaySslPolicyType = "Predefined" +) + +func PossibleValuesForApplicationGatewaySslPolicyType() []string { + return []string{ + string(ApplicationGatewaySslPolicyTypeCustom), + string(ApplicationGatewaySslPolicyTypeCustomVTwo), + string(ApplicationGatewaySslPolicyTypePredefined), + } +} + +func (s *ApplicationGatewaySslPolicyType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewaySslPolicyType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewaySslPolicyType(input string) (*ApplicationGatewaySslPolicyType, error) { + vals := map[string]ApplicationGatewaySslPolicyType{ + "custom": ApplicationGatewaySslPolicyTypeCustom, + "customv2": ApplicationGatewaySslPolicyTypeCustomVTwo, + "predefined": ApplicationGatewaySslPolicyTypePredefined, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewaySslPolicyType(input) + return &out, nil +} + +type ApplicationGatewaySslProtocol string + +const ( + ApplicationGatewaySslProtocolTLSvOneOne ApplicationGatewaySslProtocol = "TLSv1_1" + ApplicationGatewaySslProtocolTLSvOneThree ApplicationGatewaySslProtocol = "TLSv1_3" + ApplicationGatewaySslProtocolTLSvOneTwo ApplicationGatewaySslProtocol = "TLSv1_2" + ApplicationGatewaySslProtocolTLSvOneZero ApplicationGatewaySslProtocol = "TLSv1_0" +) + +func PossibleValuesForApplicationGatewaySslProtocol() []string { + return []string{ + string(ApplicationGatewaySslProtocolTLSvOneOne), + string(ApplicationGatewaySslProtocolTLSvOneThree), + string(ApplicationGatewaySslProtocolTLSvOneTwo), + string(ApplicationGatewaySslProtocolTLSvOneZero), + } +} + +func (s *ApplicationGatewaySslProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewaySslProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewaySslProtocol(input string) (*ApplicationGatewaySslProtocol, error) { + vals := map[string]ApplicationGatewaySslProtocol{ + "tlsv1_1": ApplicationGatewaySslProtocolTLSvOneOne, + "tlsv1_3": ApplicationGatewaySslProtocolTLSvOneThree, + "tlsv1_2": ApplicationGatewaySslProtocolTLSvOneTwo, + "tlsv1_0": ApplicationGatewaySslProtocolTLSvOneZero, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewaySslProtocol(input) + return &out, nil +} + +type ApplicationGatewayTier string + +const ( + ApplicationGatewayTierBasic ApplicationGatewayTier = "Basic" + ApplicationGatewayTierStandard ApplicationGatewayTier = "Standard" + ApplicationGatewayTierStandardVTwo ApplicationGatewayTier = "Standard_v2" + ApplicationGatewayTierWAF ApplicationGatewayTier = "WAF" + ApplicationGatewayTierWAFVTwo ApplicationGatewayTier = "WAF_v2" +) + +func PossibleValuesForApplicationGatewayTier() []string { + return []string{ + string(ApplicationGatewayTierBasic), + string(ApplicationGatewayTierStandard), + string(ApplicationGatewayTierStandardVTwo), + string(ApplicationGatewayTierWAF), + string(ApplicationGatewayTierWAFVTwo), + } +} + +func (s *ApplicationGatewayTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseApplicationGatewayTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseApplicationGatewayTier(input string) (*ApplicationGatewayTier, error) { + vals := map[string]ApplicationGatewayTier{ + "basic": ApplicationGatewayTierBasic, + "standard": ApplicationGatewayTierStandard, + "standard_v2": ApplicationGatewayTierStandardVTwo, + "waf": ApplicationGatewayTierWAF, + "waf_v2": ApplicationGatewayTierWAFVTwo, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ApplicationGatewayTier(input) + return &out, nil +} + +type DdosSettingsProtectionMode string + +const ( + DdosSettingsProtectionModeDisabled DdosSettingsProtectionMode = "Disabled" + DdosSettingsProtectionModeEnabled DdosSettingsProtectionMode = "Enabled" + DdosSettingsProtectionModeVirtualNetworkInherited DdosSettingsProtectionMode = "VirtualNetworkInherited" +) + +func PossibleValuesForDdosSettingsProtectionMode() []string { + return []string{ + string(DdosSettingsProtectionModeDisabled), + string(DdosSettingsProtectionModeEnabled), + string(DdosSettingsProtectionModeVirtualNetworkInherited), + } +} + +func (s *DdosSettingsProtectionMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDdosSettingsProtectionMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDdosSettingsProtectionMode(input string) (*DdosSettingsProtectionMode, error) { + vals := map[string]DdosSettingsProtectionMode{ + "disabled": DdosSettingsProtectionModeDisabled, + "enabled": DdosSettingsProtectionModeEnabled, + "virtualnetworkinherited": DdosSettingsProtectionModeVirtualNetworkInherited, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DdosSettingsProtectionMode(input) + return &out, nil +} + +type DeleteOptions string + +const ( + DeleteOptionsDelete DeleteOptions = "Delete" + DeleteOptionsDetach DeleteOptions = "Detach" +) + +func PossibleValuesForDeleteOptions() []string { + return []string{ + string(DeleteOptionsDelete), + string(DeleteOptionsDetach), + } +} + +func (s *DeleteOptions) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseDeleteOptions(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseDeleteOptions(input string) (*DeleteOptions, error) { + vals := map[string]DeleteOptions{ + "delete": DeleteOptionsDelete, + "detach": DeleteOptionsDetach, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := DeleteOptions(input) + return &out, nil +} + +type FlowLogFormatType string + +const ( + FlowLogFormatTypeJSON FlowLogFormatType = "JSON" +) + +func PossibleValuesForFlowLogFormatType() []string { + return []string{ + string(FlowLogFormatTypeJSON), + } +} + +func (s *FlowLogFormatType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseFlowLogFormatType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseFlowLogFormatType(input string) (*FlowLogFormatType, error) { + vals := map[string]FlowLogFormatType{ + "json": FlowLogFormatTypeJSON, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := FlowLogFormatType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelInterfaceType string + +const ( + GatewayLoadBalancerTunnelInterfaceTypeExternal GatewayLoadBalancerTunnelInterfaceType = "External" + GatewayLoadBalancerTunnelInterfaceTypeInternal GatewayLoadBalancerTunnelInterfaceType = "Internal" + GatewayLoadBalancerTunnelInterfaceTypeNone GatewayLoadBalancerTunnelInterfaceType = "None" +) + +func PossibleValuesForGatewayLoadBalancerTunnelInterfaceType() []string { + return []string{ + string(GatewayLoadBalancerTunnelInterfaceTypeExternal), + string(GatewayLoadBalancerTunnelInterfaceTypeInternal), + string(GatewayLoadBalancerTunnelInterfaceTypeNone), + } +} + +func (s *GatewayLoadBalancerTunnelInterfaceType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelInterfaceType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelInterfaceType(input string) (*GatewayLoadBalancerTunnelInterfaceType, error) { + vals := map[string]GatewayLoadBalancerTunnelInterfaceType{ + "external": GatewayLoadBalancerTunnelInterfaceTypeExternal, + "internal": GatewayLoadBalancerTunnelInterfaceTypeInternal, + "none": GatewayLoadBalancerTunnelInterfaceTypeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelInterfaceType(input) + return &out, nil +} + +type GatewayLoadBalancerTunnelProtocol string + +const ( + GatewayLoadBalancerTunnelProtocolNative GatewayLoadBalancerTunnelProtocol = "Native" + GatewayLoadBalancerTunnelProtocolNone GatewayLoadBalancerTunnelProtocol = "None" + GatewayLoadBalancerTunnelProtocolVXLAN GatewayLoadBalancerTunnelProtocol = "VXLAN" +) + +func PossibleValuesForGatewayLoadBalancerTunnelProtocol() []string { + return []string{ + string(GatewayLoadBalancerTunnelProtocolNative), + string(GatewayLoadBalancerTunnelProtocolNone), + string(GatewayLoadBalancerTunnelProtocolVXLAN), + } +} + +func (s *GatewayLoadBalancerTunnelProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseGatewayLoadBalancerTunnelProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseGatewayLoadBalancerTunnelProtocol(input string) (*GatewayLoadBalancerTunnelProtocol, error) { + vals := map[string]GatewayLoadBalancerTunnelProtocol{ + "native": GatewayLoadBalancerTunnelProtocolNative, + "none": GatewayLoadBalancerTunnelProtocolNone, + "vxlan": GatewayLoadBalancerTunnelProtocolVXLAN, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := GatewayLoadBalancerTunnelProtocol(input) + return &out, nil +} + +type IPAllocationMethod string + +const ( + IPAllocationMethodDynamic IPAllocationMethod = "Dynamic" + IPAllocationMethodStatic IPAllocationMethod = "Static" +) + +func PossibleValuesForIPAllocationMethod() []string { + return []string{ + string(IPAllocationMethodDynamic), + string(IPAllocationMethodStatic), + } +} + +func (s *IPAllocationMethod) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPAllocationMethod(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPAllocationMethod(input string) (*IPAllocationMethod, error) { + vals := map[string]IPAllocationMethod{ + "dynamic": IPAllocationMethodDynamic, + "static": IPAllocationMethodStatic, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPAllocationMethod(input) + return &out, nil +} + +type IPVersion string + +const ( + IPVersionIPvFour IPVersion = "IPv4" + IPVersionIPvSix IPVersion = "IPv6" +) + +func PossibleValuesForIPVersion() []string { + return []string{ + string(IPVersionIPvFour), + string(IPVersionIPvSix), + } +} + +func (s *IPVersion) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseIPVersion(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseIPVersion(input string) (*IPVersion, error) { + vals := map[string]IPVersion{ + "ipv4": IPVersionIPvFour, + "ipv6": IPVersionIPvSix, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := IPVersion(input) + return &out, nil +} + +type LoadBalancerBackendAddressAdminState string + +const ( + LoadBalancerBackendAddressAdminStateDown LoadBalancerBackendAddressAdminState = "Down" + LoadBalancerBackendAddressAdminStateNone LoadBalancerBackendAddressAdminState = "None" + LoadBalancerBackendAddressAdminStateUp LoadBalancerBackendAddressAdminState = "Up" +) + +func PossibleValuesForLoadBalancerBackendAddressAdminState() []string { + return []string{ + string(LoadBalancerBackendAddressAdminStateDown), + string(LoadBalancerBackendAddressAdminStateNone), + string(LoadBalancerBackendAddressAdminStateUp), + } +} + +func (s *LoadBalancerBackendAddressAdminState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseLoadBalancerBackendAddressAdminState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseLoadBalancerBackendAddressAdminState(input string) (*LoadBalancerBackendAddressAdminState, error) { + vals := map[string]LoadBalancerBackendAddressAdminState{ + "down": LoadBalancerBackendAddressAdminStateDown, + "none": LoadBalancerBackendAddressAdminStateNone, + "up": LoadBalancerBackendAddressAdminStateUp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := LoadBalancerBackendAddressAdminState(input) + return &out, nil +} + +type ManagedRuleEnabledState string + +const ( + ManagedRuleEnabledStateDisabled ManagedRuleEnabledState = "Disabled" + ManagedRuleEnabledStateEnabled ManagedRuleEnabledState = "Enabled" +) + +func PossibleValuesForManagedRuleEnabledState() []string { + return []string{ + string(ManagedRuleEnabledStateDisabled), + string(ManagedRuleEnabledStateEnabled), + } +} + +func (s *ManagedRuleEnabledState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseManagedRuleEnabledState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseManagedRuleEnabledState(input string) (*ManagedRuleEnabledState, error) { + vals := map[string]ManagedRuleEnabledState{ + "disabled": ManagedRuleEnabledStateDisabled, + "enabled": ManagedRuleEnabledStateEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ManagedRuleEnabledState(input) + return &out, nil +} + +type NatGatewaySkuName string + +const ( + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +func PossibleValuesForNatGatewaySkuName() []string { + return []string{ + string(NatGatewaySkuNameStandard), + } +} + +func (s *NatGatewaySkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNatGatewaySkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNatGatewaySkuName(input string) (*NatGatewaySkuName, error) { + vals := map[string]NatGatewaySkuName{ + "standard": NatGatewaySkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NatGatewaySkuName(input) + return &out, nil +} + +type NetworkInterfaceAuxiliaryMode string + +const ( + NetworkInterfaceAuxiliaryModeAcceleratedConnections NetworkInterfaceAuxiliaryMode = "AcceleratedConnections" + NetworkInterfaceAuxiliaryModeFloating NetworkInterfaceAuxiliaryMode = "Floating" + NetworkInterfaceAuxiliaryModeMaxConnections NetworkInterfaceAuxiliaryMode = "MaxConnections" + NetworkInterfaceAuxiliaryModeNone NetworkInterfaceAuxiliaryMode = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliaryMode() []string { + return []string{ + string(NetworkInterfaceAuxiliaryModeAcceleratedConnections), + string(NetworkInterfaceAuxiliaryModeFloating), + string(NetworkInterfaceAuxiliaryModeMaxConnections), + string(NetworkInterfaceAuxiliaryModeNone), + } +} + +func (s *NetworkInterfaceAuxiliaryMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliaryMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliaryMode(input string) (*NetworkInterfaceAuxiliaryMode, error) { + vals := map[string]NetworkInterfaceAuxiliaryMode{ + "acceleratedconnections": NetworkInterfaceAuxiliaryModeAcceleratedConnections, + "floating": NetworkInterfaceAuxiliaryModeFloating, + "maxconnections": NetworkInterfaceAuxiliaryModeMaxConnections, + "none": NetworkInterfaceAuxiliaryModeNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliaryMode(input) + return &out, nil +} + +type NetworkInterfaceAuxiliarySku string + +const ( + NetworkInterfaceAuxiliarySkuAEight NetworkInterfaceAuxiliarySku = "A8" + NetworkInterfaceAuxiliarySkuAFour NetworkInterfaceAuxiliarySku = "A4" + NetworkInterfaceAuxiliarySkuAOne NetworkInterfaceAuxiliarySku = "A1" + NetworkInterfaceAuxiliarySkuATwo NetworkInterfaceAuxiliarySku = "A2" + NetworkInterfaceAuxiliarySkuNone NetworkInterfaceAuxiliarySku = "None" +) + +func PossibleValuesForNetworkInterfaceAuxiliarySku() []string { + return []string{ + string(NetworkInterfaceAuxiliarySkuAEight), + string(NetworkInterfaceAuxiliarySkuAFour), + string(NetworkInterfaceAuxiliarySkuAOne), + string(NetworkInterfaceAuxiliarySkuATwo), + string(NetworkInterfaceAuxiliarySkuNone), + } +} + +func (s *NetworkInterfaceAuxiliarySku) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceAuxiliarySku(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceAuxiliarySku(input string) (*NetworkInterfaceAuxiliarySku, error) { + vals := map[string]NetworkInterfaceAuxiliarySku{ + "a8": NetworkInterfaceAuxiliarySkuAEight, + "a4": NetworkInterfaceAuxiliarySkuAFour, + "a1": NetworkInterfaceAuxiliarySkuAOne, + "a2": NetworkInterfaceAuxiliarySkuATwo, + "none": NetworkInterfaceAuxiliarySkuNone, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceAuxiliarySku(input) + return &out, nil +} + +type NetworkInterfaceMigrationPhase string + +const ( + NetworkInterfaceMigrationPhaseAbort NetworkInterfaceMigrationPhase = "Abort" + NetworkInterfaceMigrationPhaseCommit NetworkInterfaceMigrationPhase = "Commit" + NetworkInterfaceMigrationPhaseCommitted NetworkInterfaceMigrationPhase = "Committed" + NetworkInterfaceMigrationPhaseNone NetworkInterfaceMigrationPhase = "None" + NetworkInterfaceMigrationPhasePrepare NetworkInterfaceMigrationPhase = "Prepare" +) + +func PossibleValuesForNetworkInterfaceMigrationPhase() []string { + return []string{ + string(NetworkInterfaceMigrationPhaseAbort), + string(NetworkInterfaceMigrationPhaseCommit), + string(NetworkInterfaceMigrationPhaseCommitted), + string(NetworkInterfaceMigrationPhaseNone), + string(NetworkInterfaceMigrationPhasePrepare), + } +} + +func (s *NetworkInterfaceMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceMigrationPhase(input string) (*NetworkInterfaceMigrationPhase, error) { + vals := map[string]NetworkInterfaceMigrationPhase{ + "abort": NetworkInterfaceMigrationPhaseAbort, + "commit": NetworkInterfaceMigrationPhaseCommit, + "committed": NetworkInterfaceMigrationPhaseCommitted, + "none": NetworkInterfaceMigrationPhaseNone, + "prepare": NetworkInterfaceMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceMigrationPhase(input) + return &out, nil +} + +type NetworkInterfaceNicType string + +const ( + NetworkInterfaceNicTypeElastic NetworkInterfaceNicType = "Elastic" + NetworkInterfaceNicTypeStandard NetworkInterfaceNicType = "Standard" +) + +func PossibleValuesForNetworkInterfaceNicType() []string { + return []string{ + string(NetworkInterfaceNicTypeElastic), + string(NetworkInterfaceNicTypeStandard), + } +} + +func (s *NetworkInterfaceNicType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseNetworkInterfaceNicType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseNetworkInterfaceNicType(input string) (*NetworkInterfaceNicType, error) { + vals := map[string]NetworkInterfaceNicType{ + "elastic": NetworkInterfaceNicTypeElastic, + "standard": NetworkInterfaceNicTypeStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := NetworkInterfaceNicType(input) + return &out, nil +} + +type OwaspCrsExclusionEntryMatchVariable string + +const ( + OwaspCrsExclusionEntryMatchVariableRequestArgKeys OwaspCrsExclusionEntryMatchVariable = "RequestArgKeys" + OwaspCrsExclusionEntryMatchVariableRequestArgNames OwaspCrsExclusionEntryMatchVariable = "RequestArgNames" + OwaspCrsExclusionEntryMatchVariableRequestArgValues OwaspCrsExclusionEntryMatchVariable = "RequestArgValues" + OwaspCrsExclusionEntryMatchVariableRequestCookieKeys OwaspCrsExclusionEntryMatchVariable = "RequestCookieKeys" + OwaspCrsExclusionEntryMatchVariableRequestCookieNames OwaspCrsExclusionEntryMatchVariable = "RequestCookieNames" + OwaspCrsExclusionEntryMatchVariableRequestCookieValues OwaspCrsExclusionEntryMatchVariable = "RequestCookieValues" + OwaspCrsExclusionEntryMatchVariableRequestHeaderKeys OwaspCrsExclusionEntryMatchVariable = "RequestHeaderKeys" + OwaspCrsExclusionEntryMatchVariableRequestHeaderNames OwaspCrsExclusionEntryMatchVariable = "RequestHeaderNames" + OwaspCrsExclusionEntryMatchVariableRequestHeaderValues OwaspCrsExclusionEntryMatchVariable = "RequestHeaderValues" +) + +func PossibleValuesForOwaspCrsExclusionEntryMatchVariable() []string { + return []string{ + string(OwaspCrsExclusionEntryMatchVariableRequestArgKeys), + string(OwaspCrsExclusionEntryMatchVariableRequestArgNames), + string(OwaspCrsExclusionEntryMatchVariableRequestArgValues), + string(OwaspCrsExclusionEntryMatchVariableRequestCookieKeys), + string(OwaspCrsExclusionEntryMatchVariableRequestCookieNames), + string(OwaspCrsExclusionEntryMatchVariableRequestCookieValues), + string(OwaspCrsExclusionEntryMatchVariableRequestHeaderKeys), + string(OwaspCrsExclusionEntryMatchVariableRequestHeaderNames), + string(OwaspCrsExclusionEntryMatchVariableRequestHeaderValues), + } +} + +func (s *OwaspCrsExclusionEntryMatchVariable) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseOwaspCrsExclusionEntryMatchVariable(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseOwaspCrsExclusionEntryMatchVariable(input string) (*OwaspCrsExclusionEntryMatchVariable, error) { + vals := map[string]OwaspCrsExclusionEntryMatchVariable{ + "requestargkeys": OwaspCrsExclusionEntryMatchVariableRequestArgKeys, + "requestargnames": OwaspCrsExclusionEntryMatchVariableRequestArgNames, + "requestargvalues": OwaspCrsExclusionEntryMatchVariableRequestArgValues, + "requestcookiekeys": OwaspCrsExclusionEntryMatchVariableRequestCookieKeys, + "requestcookienames": OwaspCrsExclusionEntryMatchVariableRequestCookieNames, + "requestcookievalues": OwaspCrsExclusionEntryMatchVariableRequestCookieValues, + "requestheaderkeys": OwaspCrsExclusionEntryMatchVariableRequestHeaderKeys, + "requestheadernames": OwaspCrsExclusionEntryMatchVariableRequestHeaderNames, + "requestheadervalues": OwaspCrsExclusionEntryMatchVariableRequestHeaderValues, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := OwaspCrsExclusionEntryMatchVariable(input) + return &out, nil +} + +type OwaspCrsExclusionEntrySelectorMatchOperator string + +const ( + OwaspCrsExclusionEntrySelectorMatchOperatorContains OwaspCrsExclusionEntrySelectorMatchOperator = "Contains" + OwaspCrsExclusionEntrySelectorMatchOperatorEndsWith OwaspCrsExclusionEntrySelectorMatchOperator = "EndsWith" + OwaspCrsExclusionEntrySelectorMatchOperatorEquals OwaspCrsExclusionEntrySelectorMatchOperator = "Equals" + OwaspCrsExclusionEntrySelectorMatchOperatorEqualsAny OwaspCrsExclusionEntrySelectorMatchOperator = "EqualsAny" + OwaspCrsExclusionEntrySelectorMatchOperatorStartsWith OwaspCrsExclusionEntrySelectorMatchOperator = "StartsWith" +) + +func PossibleValuesForOwaspCrsExclusionEntrySelectorMatchOperator() []string { + return []string{ + string(OwaspCrsExclusionEntrySelectorMatchOperatorContains), + string(OwaspCrsExclusionEntrySelectorMatchOperatorEndsWith), + string(OwaspCrsExclusionEntrySelectorMatchOperatorEquals), + string(OwaspCrsExclusionEntrySelectorMatchOperatorEqualsAny), + string(OwaspCrsExclusionEntrySelectorMatchOperatorStartsWith), + } +} + +func (s *OwaspCrsExclusionEntrySelectorMatchOperator) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseOwaspCrsExclusionEntrySelectorMatchOperator(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseOwaspCrsExclusionEntrySelectorMatchOperator(input string) (*OwaspCrsExclusionEntrySelectorMatchOperator, error) { + vals := map[string]OwaspCrsExclusionEntrySelectorMatchOperator{ + "contains": OwaspCrsExclusionEntrySelectorMatchOperatorContains, + "endswith": OwaspCrsExclusionEntrySelectorMatchOperatorEndsWith, + "equals": OwaspCrsExclusionEntrySelectorMatchOperatorEquals, + "equalsany": OwaspCrsExclusionEntrySelectorMatchOperatorEqualsAny, + "startswith": OwaspCrsExclusionEntrySelectorMatchOperatorStartsWith, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := OwaspCrsExclusionEntrySelectorMatchOperator(input) + return &out, nil +} + +type ProvisioningState string + +const ( + ProvisioningStateDeleting ProvisioningState = "Deleting" + ProvisioningStateFailed ProvisioningState = "Failed" + ProvisioningStateSucceeded ProvisioningState = "Succeeded" + ProvisioningStateUpdating ProvisioningState = "Updating" +) + +func PossibleValuesForProvisioningState() []string { + return []string{ + string(ProvisioningStateDeleting), + string(ProvisioningStateFailed), + string(ProvisioningStateSucceeded), + string(ProvisioningStateUpdating), + } +} + +func (s *ProvisioningState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseProvisioningState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseProvisioningState(input string) (*ProvisioningState, error) { + vals := map[string]ProvisioningState{ + "deleting": ProvisioningStateDeleting, + "failed": ProvisioningStateFailed, + "succeeded": ProvisioningStateSucceeded, + "updating": ProvisioningStateUpdating, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ProvisioningState(input) + return &out, nil +} + +type PublicIPAddressDnsSettingsDomainNameLabelScope string + +const ( + PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "NoReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "ResourceGroupReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "SubscriptionReuse" + PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse PublicIPAddressDnsSettingsDomainNameLabelScope = "TenantReuse" +) + +func PossibleValuesForPublicIPAddressDnsSettingsDomainNameLabelScope() []string { + return []string{ + string(PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse), + string(PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse), + } +} + +func (s *PublicIPAddressDnsSettingsDomainNameLabelScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressDnsSettingsDomainNameLabelScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressDnsSettingsDomainNameLabelScope(input string) (*PublicIPAddressDnsSettingsDomainNameLabelScope, error) { + vals := map[string]PublicIPAddressDnsSettingsDomainNameLabelScope{ + "noreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeNoReuse, + "resourcegroupreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeResourceGroupReuse, + "subscriptionreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeSubscriptionReuse, + "tenantreuse": PublicIPAddressDnsSettingsDomainNameLabelScopeTenantReuse, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressDnsSettingsDomainNameLabelScope(input) + return &out, nil +} + +type PublicIPAddressMigrationPhase string + +const ( + PublicIPAddressMigrationPhaseAbort PublicIPAddressMigrationPhase = "Abort" + PublicIPAddressMigrationPhaseCommit PublicIPAddressMigrationPhase = "Commit" + PublicIPAddressMigrationPhaseCommitted PublicIPAddressMigrationPhase = "Committed" + PublicIPAddressMigrationPhaseNone PublicIPAddressMigrationPhase = "None" + PublicIPAddressMigrationPhasePrepare PublicIPAddressMigrationPhase = "Prepare" +) + +func PossibleValuesForPublicIPAddressMigrationPhase() []string { + return []string{ + string(PublicIPAddressMigrationPhaseAbort), + string(PublicIPAddressMigrationPhaseCommit), + string(PublicIPAddressMigrationPhaseCommitted), + string(PublicIPAddressMigrationPhaseNone), + string(PublicIPAddressMigrationPhasePrepare), + } +} + +func (s *PublicIPAddressMigrationPhase) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressMigrationPhase(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressMigrationPhase(input string) (*PublicIPAddressMigrationPhase, error) { + vals := map[string]PublicIPAddressMigrationPhase{ + "abort": PublicIPAddressMigrationPhaseAbort, + "commit": PublicIPAddressMigrationPhaseCommit, + "committed": PublicIPAddressMigrationPhaseCommitted, + "none": PublicIPAddressMigrationPhaseNone, + "prepare": PublicIPAddressMigrationPhasePrepare, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressMigrationPhase(input) + return &out, nil +} + +type PublicIPAddressSkuName string + +const ( + PublicIPAddressSkuNameBasic PublicIPAddressSkuName = "Basic" + PublicIPAddressSkuNameStandard PublicIPAddressSkuName = "Standard" +) + +func PossibleValuesForPublicIPAddressSkuName() []string { + return []string{ + string(PublicIPAddressSkuNameBasic), + string(PublicIPAddressSkuNameStandard), + } +} + +func (s *PublicIPAddressSkuName) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuName(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuName(input string) (*PublicIPAddressSkuName, error) { + vals := map[string]PublicIPAddressSkuName{ + "basic": PublicIPAddressSkuNameBasic, + "standard": PublicIPAddressSkuNameStandard, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuName(input) + return &out, nil +} + +type PublicIPAddressSkuTier string + +const ( + PublicIPAddressSkuTierGlobal PublicIPAddressSkuTier = "Global" + PublicIPAddressSkuTierRegional PublicIPAddressSkuTier = "Regional" +) + +func PossibleValuesForPublicIPAddressSkuTier() []string { + return []string{ + string(PublicIPAddressSkuTierGlobal), + string(PublicIPAddressSkuTierRegional), + } +} + +func (s *PublicIPAddressSkuTier) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parsePublicIPAddressSkuTier(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parsePublicIPAddressSkuTier(input string) (*PublicIPAddressSkuTier, error) { + vals := map[string]PublicIPAddressSkuTier{ + "global": PublicIPAddressSkuTierGlobal, + "regional": PublicIPAddressSkuTierRegional, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := PublicIPAddressSkuTier(input) + return &out, nil +} + +type RouteNextHopType string + +const ( + RouteNextHopTypeInternet RouteNextHopType = "Internet" + RouteNextHopTypeNone RouteNextHopType = "None" + RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" + RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" + RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" +) + +func PossibleValuesForRouteNextHopType() []string { + return []string{ + string(RouteNextHopTypeInternet), + string(RouteNextHopTypeNone), + string(RouteNextHopTypeVirtualAppliance), + string(RouteNextHopTypeVirtualNetworkGateway), + string(RouteNextHopTypeVnetLocal), + } +} + +func (s *RouteNextHopType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseRouteNextHopType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseRouteNextHopType(input string) (*RouteNextHopType, error) { + vals := map[string]RouteNextHopType{ + "internet": RouteNextHopTypeInternet, + "none": RouteNextHopTypeNone, + "virtualappliance": RouteNextHopTypeVirtualAppliance, + "virtualnetworkgateway": RouteNextHopTypeVirtualNetworkGateway, + "vnetlocal": RouteNextHopTypeVnetLocal, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := RouteNextHopType(input) + return &out, nil +} + +type ScrubbingRuleEntryMatchOperator string + +const ( + ScrubbingRuleEntryMatchOperatorEquals ScrubbingRuleEntryMatchOperator = "Equals" + ScrubbingRuleEntryMatchOperatorEqualsAny ScrubbingRuleEntryMatchOperator = "EqualsAny" +) + +func PossibleValuesForScrubbingRuleEntryMatchOperator() []string { + return []string{ + string(ScrubbingRuleEntryMatchOperatorEquals), + string(ScrubbingRuleEntryMatchOperatorEqualsAny), + } +} + +func (s *ScrubbingRuleEntryMatchOperator) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseScrubbingRuleEntryMatchOperator(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseScrubbingRuleEntryMatchOperator(input string) (*ScrubbingRuleEntryMatchOperator, error) { + vals := map[string]ScrubbingRuleEntryMatchOperator{ + "equals": ScrubbingRuleEntryMatchOperatorEquals, + "equalsany": ScrubbingRuleEntryMatchOperatorEqualsAny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ScrubbingRuleEntryMatchOperator(input) + return &out, nil +} + +type ScrubbingRuleEntryMatchVariable string + +const ( + ScrubbingRuleEntryMatchVariableRequestArgNames ScrubbingRuleEntryMatchVariable = "RequestArgNames" + ScrubbingRuleEntryMatchVariableRequestCookieNames ScrubbingRuleEntryMatchVariable = "RequestCookieNames" + ScrubbingRuleEntryMatchVariableRequestHeaderNames ScrubbingRuleEntryMatchVariable = "RequestHeaderNames" + ScrubbingRuleEntryMatchVariableRequestIPAddress ScrubbingRuleEntryMatchVariable = "RequestIPAddress" + ScrubbingRuleEntryMatchVariableRequestJSONArgNames ScrubbingRuleEntryMatchVariable = "RequestJSONArgNames" + ScrubbingRuleEntryMatchVariableRequestPostArgNames ScrubbingRuleEntryMatchVariable = "RequestPostArgNames" +) + +func PossibleValuesForScrubbingRuleEntryMatchVariable() []string { + return []string{ + string(ScrubbingRuleEntryMatchVariableRequestArgNames), + string(ScrubbingRuleEntryMatchVariableRequestCookieNames), + string(ScrubbingRuleEntryMatchVariableRequestHeaderNames), + string(ScrubbingRuleEntryMatchVariableRequestIPAddress), + string(ScrubbingRuleEntryMatchVariableRequestJSONArgNames), + string(ScrubbingRuleEntryMatchVariableRequestPostArgNames), + } +} + +func (s *ScrubbingRuleEntryMatchVariable) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseScrubbingRuleEntryMatchVariable(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseScrubbingRuleEntryMatchVariable(input string) (*ScrubbingRuleEntryMatchVariable, error) { + vals := map[string]ScrubbingRuleEntryMatchVariable{ + "requestargnames": ScrubbingRuleEntryMatchVariableRequestArgNames, + "requestcookienames": ScrubbingRuleEntryMatchVariableRequestCookieNames, + "requestheadernames": ScrubbingRuleEntryMatchVariableRequestHeaderNames, + "requestipaddress": ScrubbingRuleEntryMatchVariableRequestIPAddress, + "requestjsonargnames": ScrubbingRuleEntryMatchVariableRequestJSONArgNames, + "requestpostargnames": ScrubbingRuleEntryMatchVariableRequestPostArgNames, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ScrubbingRuleEntryMatchVariable(input) + return &out, nil +} + +type ScrubbingRuleEntryState string + +const ( + ScrubbingRuleEntryStateDisabled ScrubbingRuleEntryState = "Disabled" + ScrubbingRuleEntryStateEnabled ScrubbingRuleEntryState = "Enabled" +) + +func PossibleValuesForScrubbingRuleEntryState() []string { + return []string{ + string(ScrubbingRuleEntryStateDisabled), + string(ScrubbingRuleEntryStateEnabled), + } +} + +func (s *ScrubbingRuleEntryState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseScrubbingRuleEntryState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseScrubbingRuleEntryState(input string) (*ScrubbingRuleEntryState, error) { + vals := map[string]ScrubbingRuleEntryState{ + "disabled": ScrubbingRuleEntryStateDisabled, + "enabled": ScrubbingRuleEntryStateEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := ScrubbingRuleEntryState(input) + return &out, nil +} + +type SecurityRuleAccess string + +const ( + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +func PossibleValuesForSecurityRuleAccess() []string { + return []string{ + string(SecurityRuleAccessAllow), + string(SecurityRuleAccessDeny), + } +} + +func (s *SecurityRuleAccess) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleAccess(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleAccess(input string) (*SecurityRuleAccess, error) { + vals := map[string]SecurityRuleAccess{ + "allow": SecurityRuleAccessAllow, + "deny": SecurityRuleAccessDeny, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleAccess(input) + return &out, nil +} + +type SecurityRuleDirection string + +const ( + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +func PossibleValuesForSecurityRuleDirection() []string { + return []string{ + string(SecurityRuleDirectionInbound), + string(SecurityRuleDirectionOutbound), + } +} + +func (s *SecurityRuleDirection) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleDirection(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleDirection(input string) (*SecurityRuleDirection, error) { + vals := map[string]SecurityRuleDirection{ + "inbound": SecurityRuleDirectionInbound, + "outbound": SecurityRuleDirectionOutbound, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleDirection(input) + return &out, nil +} + +type SecurityRuleProtocol string + +const ( + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + SecurityRuleProtocolAny SecurityRuleProtocol = "*" + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + SecurityRuleProtocolTcp SecurityRuleProtocol = "Tcp" + SecurityRuleProtocolUdp SecurityRuleProtocol = "Udp" +) + +func PossibleValuesForSecurityRuleProtocol() []string { + return []string{ + string(SecurityRuleProtocolAh), + string(SecurityRuleProtocolAny), + string(SecurityRuleProtocolEsp), + string(SecurityRuleProtocolIcmp), + string(SecurityRuleProtocolTcp), + string(SecurityRuleProtocolUdp), + } +} + +func (s *SecurityRuleProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSecurityRuleProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSecurityRuleProtocol(input string) (*SecurityRuleProtocol, error) { + vals := map[string]SecurityRuleProtocol{ + "ah": SecurityRuleProtocolAh, + "*": SecurityRuleProtocolAny, + "esp": SecurityRuleProtocolEsp, + "icmp": SecurityRuleProtocolIcmp, + "tcp": SecurityRuleProtocolTcp, + "udp": SecurityRuleProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SecurityRuleProtocol(input) + return &out, nil +} + +type SharingScope string + +const ( + SharingScopeDelegatedServices SharingScope = "DelegatedServices" + SharingScopeTenant SharingScope = "Tenant" +) + +func PossibleValuesForSharingScope() []string { + return []string{ + string(SharingScopeDelegatedServices), + string(SharingScopeTenant), + } +} + +func (s *SharingScope) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSharingScope(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSharingScope(input string) (*SharingScope, error) { + vals := map[string]SharingScope{ + "delegatedservices": SharingScopeDelegatedServices, + "tenant": SharingScopeTenant, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SharingScope(input) + return &out, nil +} + +type SyncMode string + +const ( + SyncModeAutomatic SyncMode = "Automatic" + SyncModeManual SyncMode = "Manual" +) + +func PossibleValuesForSyncMode() []string { + return []string{ + string(SyncModeAutomatic), + string(SyncModeManual), + } +} + +func (s *SyncMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseSyncMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseSyncMode(input string) (*SyncMode, error) { + vals := map[string]SyncMode{ + "automatic": SyncModeAutomatic, + "manual": SyncModeManual, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := SyncMode(input) + return &out, nil +} + +type TransportProtocol string + +const ( + TransportProtocolAll TransportProtocol = "All" + TransportProtocolTcp TransportProtocol = "Tcp" + TransportProtocolUdp TransportProtocol = "Udp" +) + +func PossibleValuesForTransportProtocol() []string { + return []string{ + string(TransportProtocolAll), + string(TransportProtocolTcp), + string(TransportProtocolUdp), + } +} + +func (s *TransportProtocol) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseTransportProtocol(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseTransportProtocol(input string) (*TransportProtocol, error) { + vals := map[string]TransportProtocol{ + "all": TransportProtocolAll, + "tcp": TransportProtocolTcp, + "udp": TransportProtocolUdp, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := TransportProtocol(input) + return &out, nil +} + +type VirtualNetworkPrivateEndpointNetworkPolicies string + +const ( + VirtualNetworkPrivateEndpointNetworkPoliciesDisabled VirtualNetworkPrivateEndpointNetworkPolicies = "Disabled" + VirtualNetworkPrivateEndpointNetworkPoliciesEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "Enabled" + VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "NetworkSecurityGroupEnabled" + VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled VirtualNetworkPrivateEndpointNetworkPolicies = "RouteTableEnabled" +) + +func PossibleValuesForVirtualNetworkPrivateEndpointNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateEndpointNetworkPoliciesDisabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled), + string(VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled), + } +} + +func (s *VirtualNetworkPrivateEndpointNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateEndpointNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateEndpointNetworkPolicies(input string) (*VirtualNetworkPrivateEndpointNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateEndpointNetworkPolicies{ + "disabled": VirtualNetworkPrivateEndpointNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateEndpointNetworkPoliciesEnabled, + "networksecuritygroupenabled": VirtualNetworkPrivateEndpointNetworkPoliciesNetworkSecurityGroupEnabled, + "routetableenabled": VirtualNetworkPrivateEndpointNetworkPoliciesRouteTableEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateEndpointNetworkPolicies(input) + return &out, nil +} + +type VirtualNetworkPrivateLinkServiceNetworkPolicies string + +const ( + VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Disabled" + VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled VirtualNetworkPrivateLinkServiceNetworkPolicies = "Enabled" +) + +func PossibleValuesForVirtualNetworkPrivateLinkServiceNetworkPolicies() []string { + return []string{ + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled), + string(VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled), + } +} + +func (s *VirtualNetworkPrivateLinkServiceNetworkPolicies) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseVirtualNetworkPrivateLinkServiceNetworkPolicies(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseVirtualNetworkPrivateLinkServiceNetworkPolicies(input string) (*VirtualNetworkPrivateLinkServiceNetworkPolicies, error) { + vals := map[string]VirtualNetworkPrivateLinkServiceNetworkPolicies{ + "disabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesDisabled, + "enabled": VirtualNetworkPrivateLinkServiceNetworkPoliciesEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := VirtualNetworkPrivateLinkServiceNetworkPolicies(input) + return &out, nil +} + +type WebApplicationFirewallAction string + +const ( + WebApplicationFirewallActionAllow WebApplicationFirewallAction = "Allow" + WebApplicationFirewallActionBlock WebApplicationFirewallAction = "Block" + WebApplicationFirewallActionJSChallenge WebApplicationFirewallAction = "JSChallenge" + WebApplicationFirewallActionLog WebApplicationFirewallAction = "Log" +) + +func PossibleValuesForWebApplicationFirewallAction() []string { + return []string{ + string(WebApplicationFirewallActionAllow), + string(WebApplicationFirewallActionBlock), + string(WebApplicationFirewallActionJSChallenge), + string(WebApplicationFirewallActionLog), + } +} + +func (s *WebApplicationFirewallAction) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseWebApplicationFirewallAction(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseWebApplicationFirewallAction(input string) (*WebApplicationFirewallAction, error) { + vals := map[string]WebApplicationFirewallAction{ + "allow": WebApplicationFirewallActionAllow, + "block": WebApplicationFirewallActionBlock, + "jschallenge": WebApplicationFirewallActionJSChallenge, + "log": WebApplicationFirewallActionLog, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := WebApplicationFirewallAction(input) + return &out, nil +} + +type WebApplicationFirewallEnabledState string + +const ( + WebApplicationFirewallEnabledStateDisabled WebApplicationFirewallEnabledState = "Disabled" + WebApplicationFirewallEnabledStateEnabled WebApplicationFirewallEnabledState = "Enabled" +) + +func PossibleValuesForWebApplicationFirewallEnabledState() []string { + return []string{ + string(WebApplicationFirewallEnabledStateDisabled), + string(WebApplicationFirewallEnabledStateEnabled), + } +} + +func (s *WebApplicationFirewallEnabledState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseWebApplicationFirewallEnabledState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseWebApplicationFirewallEnabledState(input string) (*WebApplicationFirewallEnabledState, error) { + vals := map[string]WebApplicationFirewallEnabledState{ + "disabled": WebApplicationFirewallEnabledStateDisabled, + "enabled": WebApplicationFirewallEnabledStateEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := WebApplicationFirewallEnabledState(input) + return &out, nil +} + +type WebApplicationFirewallMatchVariable string + +const ( + WebApplicationFirewallMatchVariablePostArgs WebApplicationFirewallMatchVariable = "PostArgs" + WebApplicationFirewallMatchVariableQueryString WebApplicationFirewallMatchVariable = "QueryString" + WebApplicationFirewallMatchVariableRemoteAddr WebApplicationFirewallMatchVariable = "RemoteAddr" + WebApplicationFirewallMatchVariableRequestBody WebApplicationFirewallMatchVariable = "RequestBody" + WebApplicationFirewallMatchVariableRequestCookies WebApplicationFirewallMatchVariable = "RequestCookies" + WebApplicationFirewallMatchVariableRequestHeaders WebApplicationFirewallMatchVariable = "RequestHeaders" + WebApplicationFirewallMatchVariableRequestMethod WebApplicationFirewallMatchVariable = "RequestMethod" + WebApplicationFirewallMatchVariableRequestUri WebApplicationFirewallMatchVariable = "RequestUri" +) + +func PossibleValuesForWebApplicationFirewallMatchVariable() []string { + return []string{ + string(WebApplicationFirewallMatchVariablePostArgs), + string(WebApplicationFirewallMatchVariableQueryString), + string(WebApplicationFirewallMatchVariableRemoteAddr), + string(WebApplicationFirewallMatchVariableRequestBody), + string(WebApplicationFirewallMatchVariableRequestCookies), + string(WebApplicationFirewallMatchVariableRequestHeaders), + string(WebApplicationFirewallMatchVariableRequestMethod), + string(WebApplicationFirewallMatchVariableRequestUri), + } +} + +func (s *WebApplicationFirewallMatchVariable) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseWebApplicationFirewallMatchVariable(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseWebApplicationFirewallMatchVariable(input string) (*WebApplicationFirewallMatchVariable, error) { + vals := map[string]WebApplicationFirewallMatchVariable{ + "postargs": WebApplicationFirewallMatchVariablePostArgs, + "querystring": WebApplicationFirewallMatchVariableQueryString, + "remoteaddr": WebApplicationFirewallMatchVariableRemoteAddr, + "requestbody": WebApplicationFirewallMatchVariableRequestBody, + "requestcookies": WebApplicationFirewallMatchVariableRequestCookies, + "requestheaders": WebApplicationFirewallMatchVariableRequestHeaders, + "requestmethod": WebApplicationFirewallMatchVariableRequestMethod, + "requesturi": WebApplicationFirewallMatchVariableRequestUri, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := WebApplicationFirewallMatchVariable(input) + return &out, nil +} + +type WebApplicationFirewallMode string + +const ( + WebApplicationFirewallModeDetection WebApplicationFirewallMode = "Detection" + WebApplicationFirewallModePrevention WebApplicationFirewallMode = "Prevention" +) + +func PossibleValuesForWebApplicationFirewallMode() []string { + return []string{ + string(WebApplicationFirewallModeDetection), + string(WebApplicationFirewallModePrevention), + } +} + +func (s *WebApplicationFirewallMode) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseWebApplicationFirewallMode(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseWebApplicationFirewallMode(input string) (*WebApplicationFirewallMode, error) { + vals := map[string]WebApplicationFirewallMode{ + "detection": WebApplicationFirewallModeDetection, + "prevention": WebApplicationFirewallModePrevention, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := WebApplicationFirewallMode(input) + return &out, nil +} + +type WebApplicationFirewallOperator string + +const ( + WebApplicationFirewallOperatorAny WebApplicationFirewallOperator = "Any" + WebApplicationFirewallOperatorBeginsWith WebApplicationFirewallOperator = "BeginsWith" + WebApplicationFirewallOperatorContains WebApplicationFirewallOperator = "Contains" + WebApplicationFirewallOperatorEndsWith WebApplicationFirewallOperator = "EndsWith" + WebApplicationFirewallOperatorEqual WebApplicationFirewallOperator = "Equal" + WebApplicationFirewallOperatorGeoMatch WebApplicationFirewallOperator = "GeoMatch" + WebApplicationFirewallOperatorGreaterThan WebApplicationFirewallOperator = "GreaterThan" + WebApplicationFirewallOperatorGreaterThanOrEqual WebApplicationFirewallOperator = "GreaterThanOrEqual" + WebApplicationFirewallOperatorIPMatch WebApplicationFirewallOperator = "IPMatch" + WebApplicationFirewallOperatorLessThan WebApplicationFirewallOperator = "LessThan" + WebApplicationFirewallOperatorLessThanOrEqual WebApplicationFirewallOperator = "LessThanOrEqual" + WebApplicationFirewallOperatorRegex WebApplicationFirewallOperator = "Regex" +) + +func PossibleValuesForWebApplicationFirewallOperator() []string { + return []string{ + string(WebApplicationFirewallOperatorAny), + string(WebApplicationFirewallOperatorBeginsWith), + string(WebApplicationFirewallOperatorContains), + string(WebApplicationFirewallOperatorEndsWith), + string(WebApplicationFirewallOperatorEqual), + string(WebApplicationFirewallOperatorGeoMatch), + string(WebApplicationFirewallOperatorGreaterThan), + string(WebApplicationFirewallOperatorGreaterThanOrEqual), + string(WebApplicationFirewallOperatorIPMatch), + string(WebApplicationFirewallOperatorLessThan), + string(WebApplicationFirewallOperatorLessThanOrEqual), + string(WebApplicationFirewallOperatorRegex), + } +} + +func (s *WebApplicationFirewallOperator) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseWebApplicationFirewallOperator(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseWebApplicationFirewallOperator(input string) (*WebApplicationFirewallOperator, error) { + vals := map[string]WebApplicationFirewallOperator{ + "any": WebApplicationFirewallOperatorAny, + "beginswith": WebApplicationFirewallOperatorBeginsWith, + "contains": WebApplicationFirewallOperatorContains, + "endswith": WebApplicationFirewallOperatorEndsWith, + "equal": WebApplicationFirewallOperatorEqual, + "geomatch": WebApplicationFirewallOperatorGeoMatch, + "greaterthan": WebApplicationFirewallOperatorGreaterThan, + "greaterthanorequal": WebApplicationFirewallOperatorGreaterThanOrEqual, + "ipmatch": WebApplicationFirewallOperatorIPMatch, + "lessthan": WebApplicationFirewallOperatorLessThan, + "lessthanorequal": WebApplicationFirewallOperatorLessThanOrEqual, + "regex": WebApplicationFirewallOperatorRegex, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := WebApplicationFirewallOperator(input) + return &out, nil +} + +type WebApplicationFirewallPolicyResourceState string + +const ( + WebApplicationFirewallPolicyResourceStateCreating WebApplicationFirewallPolicyResourceState = "Creating" + WebApplicationFirewallPolicyResourceStateDeleting WebApplicationFirewallPolicyResourceState = "Deleting" + WebApplicationFirewallPolicyResourceStateDisabled WebApplicationFirewallPolicyResourceState = "Disabled" + WebApplicationFirewallPolicyResourceStateDisabling WebApplicationFirewallPolicyResourceState = "Disabling" + WebApplicationFirewallPolicyResourceStateEnabled WebApplicationFirewallPolicyResourceState = "Enabled" + WebApplicationFirewallPolicyResourceStateEnabling WebApplicationFirewallPolicyResourceState = "Enabling" +) + +func PossibleValuesForWebApplicationFirewallPolicyResourceState() []string { + return []string{ + string(WebApplicationFirewallPolicyResourceStateCreating), + string(WebApplicationFirewallPolicyResourceStateDeleting), + string(WebApplicationFirewallPolicyResourceStateDisabled), + string(WebApplicationFirewallPolicyResourceStateDisabling), + string(WebApplicationFirewallPolicyResourceStateEnabled), + string(WebApplicationFirewallPolicyResourceStateEnabling), + } +} + +func (s *WebApplicationFirewallPolicyResourceState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseWebApplicationFirewallPolicyResourceState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseWebApplicationFirewallPolicyResourceState(input string) (*WebApplicationFirewallPolicyResourceState, error) { + vals := map[string]WebApplicationFirewallPolicyResourceState{ + "creating": WebApplicationFirewallPolicyResourceStateCreating, + "deleting": WebApplicationFirewallPolicyResourceStateDeleting, + "disabled": WebApplicationFirewallPolicyResourceStateDisabled, + "disabling": WebApplicationFirewallPolicyResourceStateDisabling, + "enabled": WebApplicationFirewallPolicyResourceStateEnabled, + "enabling": WebApplicationFirewallPolicyResourceStateEnabling, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := WebApplicationFirewallPolicyResourceState(input) + return &out, nil +} + +type WebApplicationFirewallRuleType string + +const ( + WebApplicationFirewallRuleTypeInvalid WebApplicationFirewallRuleType = "Invalid" + WebApplicationFirewallRuleTypeMatchRule WebApplicationFirewallRuleType = "MatchRule" + WebApplicationFirewallRuleTypeRateLimitRule WebApplicationFirewallRuleType = "RateLimitRule" +) + +func PossibleValuesForWebApplicationFirewallRuleType() []string { + return []string{ + string(WebApplicationFirewallRuleTypeInvalid), + string(WebApplicationFirewallRuleTypeMatchRule), + string(WebApplicationFirewallRuleTypeRateLimitRule), + } +} + +func (s *WebApplicationFirewallRuleType) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseWebApplicationFirewallRuleType(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseWebApplicationFirewallRuleType(input string) (*WebApplicationFirewallRuleType, error) { + vals := map[string]WebApplicationFirewallRuleType{ + "invalid": WebApplicationFirewallRuleTypeInvalid, + "matchrule": WebApplicationFirewallRuleTypeMatchRule, + "ratelimitrule": WebApplicationFirewallRuleTypeRateLimitRule, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := WebApplicationFirewallRuleType(input) + return &out, nil +} + +type WebApplicationFirewallScrubbingState string + +const ( + WebApplicationFirewallScrubbingStateDisabled WebApplicationFirewallScrubbingState = "Disabled" + WebApplicationFirewallScrubbingStateEnabled WebApplicationFirewallScrubbingState = "Enabled" +) + +func PossibleValuesForWebApplicationFirewallScrubbingState() []string { + return []string{ + string(WebApplicationFirewallScrubbingStateDisabled), + string(WebApplicationFirewallScrubbingStateEnabled), + } +} + +func (s *WebApplicationFirewallScrubbingState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseWebApplicationFirewallScrubbingState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseWebApplicationFirewallScrubbingState(input string) (*WebApplicationFirewallScrubbingState, error) { + vals := map[string]WebApplicationFirewallScrubbingState{ + "disabled": WebApplicationFirewallScrubbingStateDisabled, + "enabled": WebApplicationFirewallScrubbingStateEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := WebApplicationFirewallScrubbingState(input) + return &out, nil +} + +type WebApplicationFirewallState string + +const ( + WebApplicationFirewallStateDisabled WebApplicationFirewallState = "Disabled" + WebApplicationFirewallStateEnabled WebApplicationFirewallState = "Enabled" +) + +func PossibleValuesForWebApplicationFirewallState() []string { + return []string{ + string(WebApplicationFirewallStateDisabled), + string(WebApplicationFirewallStateEnabled), + } +} + +func (s *WebApplicationFirewallState) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseWebApplicationFirewallState(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseWebApplicationFirewallState(input string) (*WebApplicationFirewallState, error) { + vals := map[string]WebApplicationFirewallState{ + "disabled": WebApplicationFirewallStateDisabled, + "enabled": WebApplicationFirewallStateEnabled, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := WebApplicationFirewallState(input) + return &out, nil +} + +type WebApplicationFirewallTransform string + +const ( + WebApplicationFirewallTransformHtmlEntityDecode WebApplicationFirewallTransform = "HtmlEntityDecode" + WebApplicationFirewallTransformLowercase WebApplicationFirewallTransform = "Lowercase" + WebApplicationFirewallTransformRemoveNulls WebApplicationFirewallTransform = "RemoveNulls" + WebApplicationFirewallTransformTrim WebApplicationFirewallTransform = "Trim" + WebApplicationFirewallTransformUppercase WebApplicationFirewallTransform = "Uppercase" + WebApplicationFirewallTransformUrlDecode WebApplicationFirewallTransform = "UrlDecode" + WebApplicationFirewallTransformUrlEncode WebApplicationFirewallTransform = "UrlEncode" +) + +func PossibleValuesForWebApplicationFirewallTransform() []string { + return []string{ + string(WebApplicationFirewallTransformHtmlEntityDecode), + string(WebApplicationFirewallTransformLowercase), + string(WebApplicationFirewallTransformRemoveNulls), + string(WebApplicationFirewallTransformTrim), + string(WebApplicationFirewallTransformUppercase), + string(WebApplicationFirewallTransformUrlDecode), + string(WebApplicationFirewallTransformUrlEncode), + } +} + +func (s *WebApplicationFirewallTransform) UnmarshalJSON(bytes []byte) error { + var decoded string + if err := json.Unmarshal(bytes, &decoded); err != nil { + return fmt.Errorf("unmarshaling: %+v", err) + } + out, err := parseWebApplicationFirewallTransform(decoded) + if err != nil { + return fmt.Errorf("parsing %q: %+v", decoded, err) + } + *s = *out + return nil +} + +func parseWebApplicationFirewallTransform(input string) (*WebApplicationFirewallTransform, error) { + vals := map[string]WebApplicationFirewallTransform{ + "htmlentitydecode": WebApplicationFirewallTransformHtmlEntityDecode, + "lowercase": WebApplicationFirewallTransformLowercase, + "removenulls": WebApplicationFirewallTransformRemoveNulls, + "trim": WebApplicationFirewallTransformTrim, + "uppercase": WebApplicationFirewallTransformUppercase, + "urldecode": WebApplicationFirewallTransformUrlDecode, + "urlencode": WebApplicationFirewallTransformUrlEncode, + } + if v, ok := vals[strings.ToLower(input)]; ok { + return &v, nil + } + + // otherwise presume it's an undefined value and best-effort it + out := WebApplicationFirewallTransform(input) + return &out, nil +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/id_applicationgatewaywebapplicationfirewallpolicy.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/id_applicationgatewaywebapplicationfirewallpolicy.go new file mode 100644 index 00000000000..9c48316d9e7 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/id_applicationgatewaywebapplicationfirewallpolicy.go @@ -0,0 +1,130 @@ +package webapplicationfirewallpolicies + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&ApplicationGatewayWebApplicationFirewallPolicyId{}) +} + +var _ resourceids.ResourceId = &ApplicationGatewayWebApplicationFirewallPolicyId{} + +// ApplicationGatewayWebApplicationFirewallPolicyId is a struct representing the Resource ID for a Application Gateway Web Application Firewall Policy +type ApplicationGatewayWebApplicationFirewallPolicyId struct { + SubscriptionId string + ResourceGroupName string + ApplicationGatewayWebApplicationFirewallPolicyName string +} + +// NewApplicationGatewayWebApplicationFirewallPolicyID returns a new ApplicationGatewayWebApplicationFirewallPolicyId struct +func NewApplicationGatewayWebApplicationFirewallPolicyID(subscriptionId string, resourceGroupName string, applicationGatewayWebApplicationFirewallPolicyName string) ApplicationGatewayWebApplicationFirewallPolicyId { + return ApplicationGatewayWebApplicationFirewallPolicyId{ + SubscriptionId: subscriptionId, + ResourceGroupName: resourceGroupName, + ApplicationGatewayWebApplicationFirewallPolicyName: applicationGatewayWebApplicationFirewallPolicyName, + } +} + +// ParseApplicationGatewayWebApplicationFirewallPolicyID parses 'input' into a ApplicationGatewayWebApplicationFirewallPolicyId +func ParseApplicationGatewayWebApplicationFirewallPolicyID(input string) (*ApplicationGatewayWebApplicationFirewallPolicyId, error) { + parser := resourceids.NewParserFromResourceIdType(&ApplicationGatewayWebApplicationFirewallPolicyId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ApplicationGatewayWebApplicationFirewallPolicyId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseApplicationGatewayWebApplicationFirewallPolicyIDInsensitively parses 'input' case-insensitively into a ApplicationGatewayWebApplicationFirewallPolicyId +// note: this method should only be used for API response data and not user input +func ParseApplicationGatewayWebApplicationFirewallPolicyIDInsensitively(input string) (*ApplicationGatewayWebApplicationFirewallPolicyId, error) { + parser := resourceids.NewParserFromResourceIdType(&ApplicationGatewayWebApplicationFirewallPolicyId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := ApplicationGatewayWebApplicationFirewallPolicyId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *ApplicationGatewayWebApplicationFirewallPolicyId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.ResourceGroupName, ok = input.Parsed["resourceGroupName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", input) + } + + if id.ApplicationGatewayWebApplicationFirewallPolicyName, ok = input.Parsed["applicationGatewayWebApplicationFirewallPolicyName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "applicationGatewayWebApplicationFirewallPolicyName", input) + } + + return nil +} + +// ValidateApplicationGatewayWebApplicationFirewallPolicyID checks that 'input' can be parsed as a Application Gateway Web Application Firewall Policy ID +func ValidateApplicationGatewayWebApplicationFirewallPolicyID(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 := ParseApplicationGatewayWebApplicationFirewallPolicyID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Application Gateway Web Application Firewall Policy ID +func (id ApplicationGatewayWebApplicationFirewallPolicyId) ID() string { + fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ApplicationGatewayWebApplicationFirewallPolicyName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Application Gateway Web Application Firewall Policy ID +func (id ApplicationGatewayWebApplicationFirewallPolicyId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticResourceGroups", "resourceGroups", "resourceGroups"), + resourceids.ResourceGroupSegment("resourceGroupName", "example-resource-group"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticApplicationGatewayWebApplicationFirewallPolicies", "applicationGatewayWebApplicationFirewallPolicies", "applicationGatewayWebApplicationFirewallPolicies"), + resourceids.UserSpecifiedSegment("applicationGatewayWebApplicationFirewallPolicyName", "applicationGatewayWebApplicationFirewallPolicyValue"), + } +} + +// String returns a human-readable description of this Application Gateway Web Application Firewall Policy ID +func (id ApplicationGatewayWebApplicationFirewallPolicyId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName), + fmt.Sprintf("Application Gateway Web Application Firewall Policy Name: %q", id.ApplicationGatewayWebApplicationFirewallPolicyName), + } + return fmt.Sprintf("Application Gateway Web Application Firewall Policy (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/id_applicationgatewaywebapplicationfirewallpolicy_test.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/id_applicationgatewaywebapplicationfirewallpolicy_test.go new file mode 100644 index 00000000000..6b50388308f --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/id_applicationgatewaywebapplicationfirewallpolicy_test.go @@ -0,0 +1,282 @@ +package webapplicationfirewallpolicies + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &ApplicationGatewayWebApplicationFirewallPolicyId{} + +func TestNewApplicationGatewayWebApplicationFirewallPolicyID(t *testing.T) { + id := NewApplicationGatewayWebApplicationFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayWebApplicationFirewallPolicyValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.ResourceGroupName != "example-resource-group" { + t.Fatalf("Expected %q but got %q for Segment 'ResourceGroupName'", id.ResourceGroupName, "example-resource-group") + } + + if id.ApplicationGatewayWebApplicationFirewallPolicyName != "applicationGatewayWebApplicationFirewallPolicyValue" { + t.Fatalf("Expected %q but got %q for Segment 'ApplicationGatewayWebApplicationFirewallPolicyName'", id.ApplicationGatewayWebApplicationFirewallPolicyName, "applicationGatewayWebApplicationFirewallPolicyValue") + } +} + +func TestFormatApplicationGatewayWebApplicationFirewallPolicyID(t *testing.T) { + actual := NewApplicationGatewayWebApplicationFirewallPolicyID("12345678-1234-9876-4563-123456789012", "example-resource-group", "applicationGatewayWebApplicationFirewallPolicyValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/applicationGatewayWebApplicationFirewallPolicyValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseApplicationGatewayWebApplicationFirewallPolicyID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ApplicationGatewayWebApplicationFirewallPolicyId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/applicationGatewayWebApplicationFirewallPolicyValue", + Expected: &ApplicationGatewayWebApplicationFirewallPolicyId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ApplicationGatewayWebApplicationFirewallPolicyName: "applicationGatewayWebApplicationFirewallPolicyValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/applicationGatewayWebApplicationFirewallPolicyValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseApplicationGatewayWebApplicationFirewallPolicyID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ApplicationGatewayWebApplicationFirewallPolicyName != v.Expected.ApplicationGatewayWebApplicationFirewallPolicyName { + t.Fatalf("Expected %q but got %q for ApplicationGatewayWebApplicationFirewallPolicyName", v.Expected.ApplicationGatewayWebApplicationFirewallPolicyName, actual.ApplicationGatewayWebApplicationFirewallPolicyName) + } + + } +} + +func TestParseApplicationGatewayWebApplicationFirewallPolicyIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *ApplicationGatewayWebApplicationFirewallPolicyId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnGaTeWaYwEbApPlIcAtIoNfIrEwAlLpOlIcIeS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/applicationGatewayWebApplicationFirewallPolicyValue", + Expected: &ApplicationGatewayWebApplicationFirewallPolicyId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "example-resource-group", + ApplicationGatewayWebApplicationFirewallPolicyName: "applicationGatewayWebApplicationFirewallPolicyValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/applicationGatewayWebApplicationFirewallPolicyValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnGaTeWaYwEbApPlIcAtIoNfIrEwAlLpOlIcIeS/aPpLiCaTiOnGaTeWaYwEbApPlIcAtIoNfIrEwAlLpOlIcYvAlUe", + Expected: &ApplicationGatewayWebApplicationFirewallPolicyId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + ResourceGroupName: "eXaMpLe-rEsOuRcE-GrOuP", + ApplicationGatewayWebApplicationFirewallPolicyName: "aPpLiCaTiOnGaTeWaYwEbApPlIcAtIoNfIrEwAlLpOlIcYvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/rEsOuRcEgRoUpS/eXaMpLe-rEsOuRcE-GrOuP/pRoViDeRs/mIcRoSoFt.nEtWoRk/aPpLiCaTiOnGaTeWaYwEbApPlIcAtIoNfIrEwAlLpOlIcIeS/aPpLiCaTiOnGaTeWaYwEbApPlIcAtIoNfIrEwAlLpOlIcYvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseApplicationGatewayWebApplicationFirewallPolicyIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.ResourceGroupName != v.Expected.ResourceGroupName { + t.Fatalf("Expected %q but got %q for ResourceGroupName", v.Expected.ResourceGroupName, actual.ResourceGroupName) + } + + if actual.ApplicationGatewayWebApplicationFirewallPolicyName != v.Expected.ApplicationGatewayWebApplicationFirewallPolicyName { + t.Fatalf("Expected %q but got %q for ApplicationGatewayWebApplicationFirewallPolicyName", v.Expected.ApplicationGatewayWebApplicationFirewallPolicyName, actual.ApplicationGatewayWebApplicationFirewallPolicyName) + } + + } +} + +func TestSegmentsForApplicationGatewayWebApplicationFirewallPolicyId(t *testing.T) { + segments := ApplicationGatewayWebApplicationFirewallPolicyId{}.Segments() + if len(segments) == 0 { + t.Fatalf("ApplicationGatewayWebApplicationFirewallPolicyId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/method_createorupdate.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/method_createorupdate.go new file mode 100644 index 00000000000..a30ca59994f --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/method_createorupdate.go @@ -0,0 +1,59 @@ +package webapplicationfirewallpolicies + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CreateOrUpdateOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *WebApplicationFirewallPolicy +} + +// CreateOrUpdate ... +func (c WebApplicationFirewallPoliciesClient) CreateOrUpdate(ctx context.Context, id ApplicationGatewayWebApplicationFirewallPolicyId, input WebApplicationFirewallPolicy) (result CreateOrUpdateOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusCreated, + http.StatusOK, + }, + HttpMethod: http.MethodPut, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + if err = req.Marshal(input); err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model WebApplicationFirewallPolicy + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/method_delete.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/method_delete.go new file mode 100644 index 00000000000..c4547e95952 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/method_delete.go @@ -0,0 +1,71 @@ +package webapplicationfirewallpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/client/pollers" + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DeleteOperationResponse struct { + Poller pollers.Poller + HttpResponse *http.Response + OData *odata.OData +} + +// Delete ... +func (c WebApplicationFirewallPoliciesClient) Delete(ctx context.Context, id ApplicationGatewayWebApplicationFirewallPolicyId) (result DeleteOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusAccepted, + http.StatusNoContent, + http.StatusOK, + }, + HttpMethod: http.MethodDelete, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + result.Poller, err = resourcemanager.PollerFromResponse(resp, c.Client) + if err != nil { + return + } + + return +} + +// DeleteThenPoll performs Delete then polls until it's completed +func (c WebApplicationFirewallPoliciesClient) DeleteThenPoll(ctx context.Context, id ApplicationGatewayWebApplicationFirewallPolicyId) error { + result, err := c.Delete(ctx, id) + if err != nil { + return fmt.Errorf("performing Delete: %+v", err) + } + + if err := result.Poller.PollUntilDone(ctx); err != nil { + return fmt.Errorf("polling after Delete: %+v", err) + } + + return nil +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/method_get.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/method_get.go new file mode 100644 index 00000000000..03919558699 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/method_get.go @@ -0,0 +1,54 @@ +package webapplicationfirewallpolicies + +import ( + "context" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *WebApplicationFirewallPolicy +} + +// Get ... +func (c WebApplicationFirewallPoliciesClient) Get(ctx context.Context, id ApplicationGatewayWebApplicationFirewallPolicyId) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model WebApplicationFirewallPolicy + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/method_list.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/method_list.go new file mode 100644 index 00000000000..dbe94a8ef0e --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/method_list.go @@ -0,0 +1,93 @@ +package webapplicationfirewallpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]WebApplicationFirewallPolicy +} + +type ListCompleteResult struct { + LatestHttpResponse *http.Response + Items []WebApplicationFirewallPolicy +} + +// List ... +func (c WebApplicationFirewallPoliciesClient) List(ctx context.Context, id commonids.ResourceGroupId) (result ListOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]WebApplicationFirewallPolicy `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListComplete retrieves all the results into a single object +func (c WebApplicationFirewallPoliciesClient) ListComplete(ctx context.Context, id commonids.ResourceGroupId) (ListCompleteResult, error) { + return c.ListCompleteMatchingPredicate(ctx, id, WebApplicationFirewallPolicyOperationPredicate{}) +} + +// ListCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c WebApplicationFirewallPoliciesClient) ListCompleteMatchingPredicate(ctx context.Context, id commonids.ResourceGroupId, predicate WebApplicationFirewallPolicyOperationPredicate) (result ListCompleteResult, err error) { + items := make([]WebApplicationFirewallPolicy, 0) + + resp, err := c.List(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/method_listall.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/method_listall.go new file mode 100644 index 00000000000..652df162aed --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/method_listall.go @@ -0,0 +1,93 @@ +package webapplicationfirewallpolicies + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListAllOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]WebApplicationFirewallPolicy +} + +type ListAllCompleteResult struct { + LatestHttpResponse *http.Response + Items []WebApplicationFirewallPolicy +} + +// ListAll ... +func (c WebApplicationFirewallPoliciesClient) ListAll(ctx context.Context, id commonids.SubscriptionId) (result ListAllOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]WebApplicationFirewallPolicy `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListAllComplete retrieves all the results into a single object +func (c WebApplicationFirewallPoliciesClient) ListAllComplete(ctx context.Context, id commonids.SubscriptionId) (ListAllCompleteResult, error) { + return c.ListAllCompleteMatchingPredicate(ctx, id, WebApplicationFirewallPolicyOperationPredicate{}) +} + +// ListAllCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c WebApplicationFirewallPoliciesClient) ListAllCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate WebApplicationFirewallPolicyOperationPredicate) (result ListAllCompleteResult, err error) { + items := make([]WebApplicationFirewallPolicy, 0) + + resp, err := c.ListAll(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListAllCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgateway.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgateway.go new file mode 100644 index 00000000000..69aa82140ea --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgateway.go @@ -0,0 +1,21 @@ +package webapplicationfirewallpolicies + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayauthenticationcertificate.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayauthenticationcertificate.go new file mode 100644 index 00000000000..74175523bc1 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayauthenticationcertificate.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayAuthenticationCertificate struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayAuthenticationCertificatePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayauthenticationcertificatepropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayauthenticationcertificatepropertiesformat.go new file mode 100644 index 00000000000..7536ffa2439 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayauthenticationcertificatepropertiesformat.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayAuthenticationCertificatePropertiesFormat struct { + Data *string `json:"data,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayautoscaleconfiguration.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayautoscaleconfiguration.go new file mode 100644 index 00000000000..06e7df4e24e --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayautoscaleconfiguration.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayAutoscaleConfiguration struct { + MaxCapacity *int64 `json:"maxCapacity,omitempty"` + MinCapacity int64 `json:"minCapacity"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaybackendaddress.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaybackendaddress.go new file mode 100644 index 00000000000..dcc624a13aa --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaybackendaddress.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddress struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaybackendaddresspool.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaybackendaddresspool.go new file mode 100644 index 00000000000..0f188b359ad --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaybackendaddresspool.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaybackendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaybackendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..64a4ed2e836 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaybackendaddresspoolpropertiesformat.go @@ -0,0 +1,10 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendAddressPoolPropertiesFormat struct { + BackendAddresses *[]ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"` + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaybackendhttpsettings.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaybackendhttpsettings.go new file mode 100644 index 00000000000..052f312d7b3 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaybackendhttpsettings.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendHTTPSettings struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendHTTPSettingsPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaybackendhttpsettingspropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaybackendhttpsettingspropertiesformat.go new file mode 100644 index 00000000000..16305b5de81 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaybackendhttpsettingspropertiesformat.go @@ -0,0 +1,21 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendHTTPSettingsPropertiesFormat struct { + AffinityCookieName *string `json:"affinityCookieName,omitempty"` + AuthenticationCertificates *[]SubResource `json:"authenticationCertificates,omitempty"` + ConnectionDraining *ApplicationGatewayConnectionDraining `json:"connectionDraining,omitempty"` + CookieBasedAffinity *ApplicationGatewayCookieBasedAffinity `json:"cookieBasedAffinity,omitempty"` + HostName *string `json:"hostName,omitempty"` + Path *string `json:"path,omitempty"` + PickHostNameFromBackendAddress *bool `json:"pickHostNameFromBackendAddress,omitempty"` + Port *int64 `json:"port,omitempty"` + Probe *SubResource `json:"probe,omitempty"` + ProbeEnabled *bool `json:"probeEnabled,omitempty"` + Protocol *ApplicationGatewayProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestTimeout *int64 `json:"requestTimeout,omitempty"` + TrustedRootCertificates *[]SubResource `json:"trustedRootCertificates,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaybackendsettings.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaybackendsettings.go new file mode 100644 index 00000000000..1bc8a5c5fe1 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaybackendsettings.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendSettings struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayBackendSettingsPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaybackendsettingspropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaybackendsettingspropertiesformat.go new file mode 100644 index 00000000000..5d5f77f3c8d --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaybackendsettingspropertiesformat.go @@ -0,0 +1,15 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayBackendSettingsPropertiesFormat struct { + HostName *string `json:"hostName,omitempty"` + PickHostNameFromBackendAddress *bool `json:"pickHostNameFromBackendAddress,omitempty"` + Port *int64 `json:"port,omitempty"` + Probe *SubResource `json:"probe,omitempty"` + Protocol *ApplicationGatewayProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Timeout *int64 `json:"timeout,omitempty"` + TrustedRootCertificates *[]SubResource `json:"trustedRootCertificates,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayclientauthconfiguration.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayclientauthconfiguration.go new file mode 100644 index 00000000000..36e0f43021d --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayclientauthconfiguration.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayClientAuthConfiguration struct { + VerifyClientCertIssuerDN *bool `json:"verifyClientCertIssuerDN,omitempty"` + VerifyClientRevocation *ApplicationGatewayClientRevocationOptions `json:"verifyClientRevocation,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayconnectiondraining.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayconnectiondraining.go new file mode 100644 index 00000000000..369c8494e6f --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayconnectiondraining.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayConnectionDraining struct { + DrainTimeoutInSec int64 `json:"drainTimeoutInSec"` + Enabled bool `json:"enabled"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaycustomerror.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaycustomerror.go new file mode 100644 index 00000000000..82f3501791c --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaycustomerror.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayCustomError struct { + CustomErrorPageUrl *string `json:"customErrorPageUrl,omitempty"` + StatusCode *ApplicationGatewayCustomErrorStatusCode `json:"statusCode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayfirewalldisabledrulegroup.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayfirewalldisabledrulegroup.go new file mode 100644 index 00000000000..c88a33b735c --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayfirewalldisabledrulegroup.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayFirewallDisabledRuleGroup struct { + RuleGroupName string `json:"ruleGroupName"` + Rules *[]int64 `json:"rules,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayfirewallexclusion.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayfirewallexclusion.go new file mode 100644 index 00000000000..541e5052e8f --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayfirewallexclusion.go @@ -0,0 +1,10 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayFirewallExclusion struct { + MatchVariable string `json:"matchVariable"` + Selector string `json:"selector"` + SelectorMatchOperator string `json:"selectorMatchOperator"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayfrontendipconfiguration.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayfrontendipconfiguration.go new file mode 100644 index 00000000000..f5f9c5bebc7 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayfrontendipconfiguration.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayFrontendIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayFrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayfrontendipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayfrontendipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..1b61dc71c1d --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayfrontendipconfigurationpropertiesformat.go @@ -0,0 +1,13 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayFrontendIPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + PrivateLinkConfiguration *SubResource `json:"privateLinkConfiguration,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *SubResource `json:"publicIPAddress,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayfrontendport.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayfrontendport.go new file mode 100644 index 00000000000..dfcb5e52ee3 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayfrontendport.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayFrontendPort struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayFrontendPortPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayfrontendportpropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayfrontendportpropertiesformat.go new file mode 100644 index 00000000000..d37b168d0aa --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayfrontendportpropertiesformat.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayFrontendPortPropertiesFormat struct { + Port *int64 `json:"port,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayglobalconfiguration.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayglobalconfiguration.go new file mode 100644 index 00000000000..b80dabed9a0 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayglobalconfiguration.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayGlobalConfiguration struct { + EnableRequestBuffering *bool `json:"enableRequestBuffering,omitempty"` + EnableResponseBuffering *bool `json:"enableResponseBuffering,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayheaderconfiguration.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayheaderconfiguration.go new file mode 100644 index 00000000000..7ffc4b3c8c8 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayheaderconfiguration.go @@ -0,0 +1,10 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayHeaderConfiguration struct { + HeaderName *string `json:"headerName,omitempty"` + HeaderValue *string `json:"headerValue,omitempty"` + HeaderValueMatcher *HeaderValueMatcher `json:"headerValueMatcher,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayhttplistener.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayhttplistener.go new file mode 100644 index 00000000000..0fd70bac201 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayhttplistener.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayHTTPListener struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayHTTPListenerPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayhttplistenerpropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayhttplistenerpropertiesformat.go new file mode 100644 index 00000000000..9c4eb515f42 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayhttplistenerpropertiesformat.go @@ -0,0 +1,18 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayHTTPListenerPropertiesFormat struct { + CustomErrorConfigurations *[]ApplicationGatewayCustomError `json:"customErrorConfigurations,omitempty"` + FirewallPolicy *SubResource `json:"firewallPolicy,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *SubResource `json:"frontendPort,omitempty"` + HostName *string `json:"hostName,omitempty"` + HostNames *[]string `json:"hostNames,omitempty"` + Protocol *ApplicationGatewayProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequireServerNameIndication *bool `json:"requireServerNameIndication,omitempty"` + SslCertificate *SubResource `json:"sslCertificate,omitempty"` + SslProfile *SubResource `json:"sslProfile,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayipconfiguration.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayipconfiguration.go new file mode 100644 index 00000000000..6ffd65f71c2 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayipconfiguration.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..e8482b21e60 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayipconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayIPConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaylistener.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaylistener.go new file mode 100644 index 00000000000..71fe702c98e --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaylistener.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayListener struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayListenerPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaylistenerpropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaylistenerpropertiesformat.go new file mode 100644 index 00000000000..ceffb59e3b1 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaylistenerpropertiesformat.go @@ -0,0 +1,14 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayListenerPropertiesFormat struct { + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *SubResource `json:"frontendPort,omitempty"` + HostNames *[]string `json:"hostNames,omitempty"` + Protocol *ApplicationGatewayProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SslCertificate *SubResource `json:"sslCertificate,omitempty"` + SslProfile *SubResource `json:"sslProfile,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayloaddistributionpolicy.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayloaddistributionpolicy.go new file mode 100644 index 00000000000..55e8713746c --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayloaddistributionpolicy.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayLoadDistributionPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayLoadDistributionPolicyPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayloaddistributionpolicypropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayloaddistributionpolicypropertiesformat.go new file mode 100644 index 00000000000..fe721166bf2 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayloaddistributionpolicypropertiesformat.go @@ -0,0 +1,10 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayLoadDistributionPolicyPropertiesFormat struct { + LoadDistributionAlgorithm *ApplicationGatewayLoadDistributionAlgorithm `json:"loadDistributionAlgorithm,omitempty"` + LoadDistributionTargets *[]ApplicationGatewayLoadDistributionTarget `json:"loadDistributionTargets,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayloaddistributiontarget.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayloaddistributiontarget.go new file mode 100644 index 00000000000..d361c4e3d97 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayloaddistributiontarget.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayLoadDistributionTarget struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayLoadDistributionTargetPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayloaddistributiontargetpropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayloaddistributiontargetpropertiesformat.go new file mode 100644 index 00000000000..6ba821b2e82 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayloaddistributiontargetpropertiesformat.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayLoadDistributionTargetPropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + WeightPerServer *int64 `json:"weightPerServer,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaypathrule.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaypathrule.go new file mode 100644 index 00000000000..992b948c558 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaypathrule.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPathRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayPathRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaypathrulepropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaypathrulepropertiesformat.go new file mode 100644 index 00000000000..5c8b00da085 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaypathrulepropertiesformat.go @@ -0,0 +1,15 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPathRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendHTTPSettings *SubResource `json:"backendHttpSettings,omitempty"` + FirewallPolicy *SubResource `json:"firewallPolicy,omitempty"` + LoadDistributionPolicy *SubResource `json:"loadDistributionPolicy,omitempty"` + Paths *[]string `json:"paths,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RedirectConfiguration *SubResource `json:"redirectConfiguration,omitempty"` + RewriteRuleSet *SubResource `json:"rewriteRuleSet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprivateendpointconnection.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprivateendpointconnection.go new file mode 100644 index 00000000000..5b45596cedc --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprivateendpointconnection.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayPrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprivateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprivateendpointconnectionproperties.go new file mode 100644 index 00000000000..c6a900feb31 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprivateendpointconnectionproperties.go @@ -0,0 +1,11 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprivatelinkconfiguration.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprivatelinkconfiguration.go new file mode 100644 index 00000000000..73e8756981a --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprivatelinkconfiguration.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPrivateLinkConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayPrivateLinkConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprivatelinkconfigurationproperties.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprivatelinkconfigurationproperties.go new file mode 100644 index 00000000000..8855a67b9ce --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprivatelinkconfigurationproperties.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPrivateLinkConfigurationProperties struct { + IPConfigurations *[]ApplicationGatewayPrivateLinkIPConfiguration `json:"ipConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprivatelinkipconfiguration.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprivatelinkipconfiguration.go new file mode 100644 index 00000000000..ce8e67a68d0 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprivatelinkipconfiguration.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPrivateLinkIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayPrivateLinkIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprivatelinkipconfigurationproperties.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprivatelinkipconfigurationproperties.go new file mode 100644 index 00000000000..ff68d2052d7 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprivatelinkipconfigurationproperties.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPrivateLinkIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprobe.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprobe.go new file mode 100644 index 00000000000..9c935a9fbba --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprobe.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayProbe struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayProbePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprobehealthresponsematch.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprobehealthresponsematch.go new file mode 100644 index 00000000000..20c18109ec0 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprobehealthresponsematch.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayProbeHealthResponseMatch struct { + Body *string `json:"body,omitempty"` + StatusCodes *[]string `json:"statusCodes,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprobepropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprobepropertiesformat.go new file mode 100644 index 00000000000..b36845c57bf --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayprobepropertiesformat.go @@ -0,0 +1,19 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayProbePropertiesFormat struct { + Host *string `json:"host,omitempty"` + Interval *int64 `json:"interval,omitempty"` + Match *ApplicationGatewayProbeHealthResponseMatch `json:"match,omitempty"` + MinServers *int64 `json:"minServers,omitempty"` + Path *string `json:"path,omitempty"` + PickHostNameFromBackendHTTPSettings *bool `json:"pickHostNameFromBackendHttpSettings,omitempty"` + PickHostNameFromBackendSettings *bool `json:"pickHostNameFromBackendSettings,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *ApplicationGatewayProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Timeout *int64 `json:"timeout,omitempty"` + UnhealthyThreshold *int64 `json:"unhealthyThreshold,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaypropertiesformat.go new file mode 100644 index 00000000000..f4f485b405b --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaypropertiesformat.go @@ -0,0 +1,43 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayPropertiesFormat struct { + AuthenticationCertificates *[]ApplicationGatewayAuthenticationCertificate `json:"authenticationCertificates,omitempty"` + AutoscaleConfiguration *ApplicationGatewayAutoscaleConfiguration `json:"autoscaleConfiguration,omitempty"` + BackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"backendAddressPools,omitempty"` + BackendHTTPSettingsCollection *[]ApplicationGatewayBackendHTTPSettings `json:"backendHttpSettingsCollection,omitempty"` + BackendSettingsCollection *[]ApplicationGatewayBackendSettings `json:"backendSettingsCollection,omitempty"` + CustomErrorConfigurations *[]ApplicationGatewayCustomError `json:"customErrorConfigurations,omitempty"` + DefaultPredefinedSslPolicy *ApplicationGatewaySslPolicyName `json:"defaultPredefinedSslPolicy,omitempty"` + EnableFips *bool `json:"enableFips,omitempty"` + EnableHTTP2 *bool `json:"enableHttp2,omitempty"` + FirewallPolicy *SubResource `json:"firewallPolicy,omitempty"` + ForceFirewallPolicyAssociation *bool `json:"forceFirewallPolicyAssociation,omitempty"` + FrontendIPConfigurations *[]ApplicationGatewayFrontendIPConfiguration `json:"frontendIPConfigurations,omitempty"` + FrontendPorts *[]ApplicationGatewayFrontendPort `json:"frontendPorts,omitempty"` + GatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"gatewayIPConfigurations,omitempty"` + GlobalConfiguration *ApplicationGatewayGlobalConfiguration `json:"globalConfiguration,omitempty"` + HTTPListeners *[]ApplicationGatewayHTTPListener `json:"httpListeners,omitempty"` + Listeners *[]ApplicationGatewayListener `json:"listeners,omitempty"` + LoadDistributionPolicies *[]ApplicationGatewayLoadDistributionPolicy `json:"loadDistributionPolicies,omitempty"` + OperationalState *ApplicationGatewayOperationalState `json:"operationalState,omitempty"` + PrivateEndpointConnections *[]ApplicationGatewayPrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + PrivateLinkConfigurations *[]ApplicationGatewayPrivateLinkConfiguration `json:"privateLinkConfigurations,omitempty"` + Probes *[]ApplicationGatewayProbe `json:"probes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RedirectConfigurations *[]ApplicationGatewayRedirectConfiguration `json:"redirectConfigurations,omitempty"` + RequestRoutingRules *[]ApplicationGatewayRequestRoutingRule `json:"requestRoutingRules,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + RewriteRuleSets *[]ApplicationGatewayRewriteRuleSet `json:"rewriteRuleSets,omitempty"` + RoutingRules *[]ApplicationGatewayRoutingRule `json:"routingRules,omitempty"` + Sku *ApplicationGatewaySku `json:"sku,omitempty"` + SslCertificates *[]ApplicationGatewaySslCertificate `json:"sslCertificates,omitempty"` + SslPolicy *ApplicationGatewaySslPolicy `json:"sslPolicy,omitempty"` + SslProfiles *[]ApplicationGatewaySslProfile `json:"sslProfiles,omitempty"` + TrustedClientCertificates *[]ApplicationGatewayTrustedClientCertificate `json:"trustedClientCertificates,omitempty"` + TrustedRootCertificates *[]ApplicationGatewayTrustedRootCertificate `json:"trustedRootCertificates,omitempty"` + UrlPathMaps *[]ApplicationGatewayUrlPathMap `json:"urlPathMaps,omitempty"` + WebApplicationFirewallConfiguration *ApplicationGatewayWebApplicationFirewallConfiguration `json:"webApplicationFirewallConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayredirectconfiguration.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayredirectconfiguration.go new file mode 100644 index 00000000000..85eed147eb2 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayredirectconfiguration.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayRedirectConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayRedirectConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayredirectconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayredirectconfigurationpropertiesformat.go new file mode 100644 index 00000000000..7808c57c7f7 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayredirectconfigurationpropertiesformat.go @@ -0,0 +1,15 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayRedirectConfigurationPropertiesFormat struct { + IncludePath *bool `json:"includePath,omitempty"` + IncludeQueryString *bool `json:"includeQueryString,omitempty"` + PathRules *[]SubResource `json:"pathRules,omitempty"` + RedirectType *ApplicationGatewayRedirectType `json:"redirectType,omitempty"` + RequestRoutingRules *[]SubResource `json:"requestRoutingRules,omitempty"` + TargetListener *SubResource `json:"targetListener,omitempty"` + TargetUrl *string `json:"targetUrl,omitempty"` + UrlPathMaps *[]SubResource `json:"urlPathMaps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayrequestroutingrule.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayrequestroutingrule.go new file mode 100644 index 00000000000..9eb6ffe9c4a --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayrequestroutingrule.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayRequestRoutingRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayRequestRoutingRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayrequestroutingrulepropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayrequestroutingrulepropertiesformat.go new file mode 100644 index 00000000000..53dc9f99474 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayrequestroutingrulepropertiesformat.go @@ -0,0 +1,17 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayRequestRoutingRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendHTTPSettings *SubResource `json:"backendHttpSettings,omitempty"` + HTTPListener *SubResource `json:"httpListener,omitempty"` + LoadDistributionPolicy *SubResource `json:"loadDistributionPolicy,omitempty"` + Priority *int64 `json:"priority,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RedirectConfiguration *SubResource `json:"redirectConfiguration,omitempty"` + RewriteRuleSet *SubResource `json:"rewriteRuleSet,omitempty"` + RuleType *ApplicationGatewayRequestRoutingRuleType `json:"ruleType,omitempty"` + UrlPathMap *SubResource `json:"urlPathMap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayrewriterule.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayrewriterule.go new file mode 100644 index 00000000000..21ce81c5a24 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayrewriterule.go @@ -0,0 +1,11 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayRewriteRule struct { + ActionSet *ApplicationGatewayRewriteRuleActionSet `json:"actionSet,omitempty"` + Conditions *[]ApplicationGatewayRewriteRuleCondition `json:"conditions,omitempty"` + Name *string `json:"name,omitempty"` + RuleSequence *int64 `json:"ruleSequence,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayrewriteruleactionset.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayrewriteruleactionset.go new file mode 100644 index 00000000000..ed418b0d4a5 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayrewriteruleactionset.go @@ -0,0 +1,10 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayRewriteRuleActionSet struct { + RequestHeaderConfigurations *[]ApplicationGatewayHeaderConfiguration `json:"requestHeaderConfigurations,omitempty"` + ResponseHeaderConfigurations *[]ApplicationGatewayHeaderConfiguration `json:"responseHeaderConfigurations,omitempty"` + UrlConfiguration *ApplicationGatewayUrlConfiguration `json:"urlConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayrewriterulecondition.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayrewriterulecondition.go new file mode 100644 index 00000000000..1e70a94ea80 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayrewriterulecondition.go @@ -0,0 +1,11 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayRewriteRuleCondition struct { + IgnoreCase *bool `json:"ignoreCase,omitempty"` + Negate *bool `json:"negate,omitempty"` + Pattern *string `json:"pattern,omitempty"` + Variable *string `json:"variable,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayrewriteruleset.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayrewriteruleset.go new file mode 100644 index 00000000000..a25c70e4a05 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayrewriteruleset.go @@ -0,0 +1,11 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayRewriteRuleSet struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayRewriteRuleSetPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayrewriterulesetpropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayrewriterulesetpropertiesformat.go new file mode 100644 index 00000000000..3a1e3374217 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayrewriterulesetpropertiesformat.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayRewriteRuleSetPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RewriteRules *[]ApplicationGatewayRewriteRule `json:"rewriteRules,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayroutingrule.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayroutingrule.go new file mode 100644 index 00000000000..78053b23a9c --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayroutingrule.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayRoutingRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayRoutingRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayroutingrulepropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayroutingrulepropertiesformat.go new file mode 100644 index 00000000000..05ed98ab597 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayroutingrulepropertiesformat.go @@ -0,0 +1,13 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayRoutingRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendSettings *SubResource `json:"backendSettings,omitempty"` + Listener *SubResource `json:"listener,omitempty"` + Priority int64 `json:"priority"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RuleType *ApplicationGatewayRequestRoutingRuleType `json:"ruleType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaysku.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaysku.go new file mode 100644 index 00000000000..af2d1c3c1e8 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaysku.go @@ -0,0 +1,11 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewaySku struct { + Capacity *int64 `json:"capacity,omitempty"` + Family *ApplicationGatewaySkuFamily `json:"family,omitempty"` + Name *ApplicationGatewaySkuName `json:"name,omitempty"` + Tier *ApplicationGatewayTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaysslcertificate.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaysslcertificate.go new file mode 100644 index 00000000000..328f6a90d88 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaysslcertificate.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewaySslCertificate struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewaySslCertificatePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaysslcertificatepropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaysslcertificatepropertiesformat.go new file mode 100644 index 00000000000..f087bfec9a8 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaysslcertificatepropertiesformat.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewaySslCertificatePropertiesFormat struct { + Data *string `json:"data,omitempty"` + KeyVaultSecretId *string `json:"keyVaultSecretId,omitempty"` + Password *string `json:"password,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicCertData *string `json:"publicCertData,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaysslpolicy.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaysslpolicy.go new file mode 100644 index 00000000000..ae860f1460f --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaysslpolicy.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewaySslPolicy struct { + CipherSuites *[]ApplicationGatewaySslCipherSuite `json:"cipherSuites,omitempty"` + DisabledSslProtocols *[]ApplicationGatewaySslProtocol `json:"disabledSslProtocols,omitempty"` + MinProtocolVersion *ApplicationGatewaySslProtocol `json:"minProtocolVersion,omitempty"` + PolicyName *ApplicationGatewaySslPolicyName `json:"policyName,omitempty"` + PolicyType *ApplicationGatewaySslPolicyType `json:"policyType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaysslprofile.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaysslprofile.go new file mode 100644 index 00000000000..8c1d0630c2f --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaysslprofile.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewaySslProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewaySslProfilePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaysslprofilepropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaysslprofilepropertiesformat.go new file mode 100644 index 00000000000..b89279b0c7f --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaysslprofilepropertiesformat.go @@ -0,0 +1,11 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewaySslProfilePropertiesFormat struct { + ClientAuthConfiguration *ApplicationGatewayClientAuthConfiguration `json:"clientAuthConfiguration,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SslPolicy *ApplicationGatewaySslPolicy `json:"sslPolicy,omitempty"` + TrustedClientCertificates *[]SubResource `json:"trustedClientCertificates,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaytrustedclientcertificate.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaytrustedclientcertificate.go new file mode 100644 index 00000000000..f2fb2244e71 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaytrustedclientcertificate.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayTrustedClientCertificate struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayTrustedClientCertificatePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaytrustedclientcertificatepropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaytrustedclientcertificatepropertiesformat.go new file mode 100644 index 00000000000..ac7454cb8f4 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaytrustedclientcertificatepropertiesformat.go @@ -0,0 +1,11 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayTrustedClientCertificatePropertiesFormat struct { + ClientCertIssuerDN *string `json:"clientCertIssuerDN,omitempty"` + Data *string `json:"data,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ValidatedCertData *string `json:"validatedCertData,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaytrustedrootcertificate.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaytrustedrootcertificate.go new file mode 100644 index 00000000000..9deacd55fe8 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaytrustedrootcertificate.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayTrustedRootCertificate struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayTrustedRootCertificatePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaytrustedrootcertificatepropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaytrustedrootcertificatepropertiesformat.go new file mode 100644 index 00000000000..f79bf663f76 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaytrustedrootcertificatepropertiesformat.go @@ -0,0 +1,10 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayTrustedRootCertificatePropertiesFormat struct { + Data *string `json:"data,omitempty"` + KeyVaultSecretId *string `json:"keyVaultSecretId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayurlconfiguration.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayurlconfiguration.go new file mode 100644 index 00000000000..03021e43980 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayurlconfiguration.go @@ -0,0 +1,10 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayUrlConfiguration struct { + ModifiedPath *string `json:"modifiedPath,omitempty"` + ModifiedQueryString *string `json:"modifiedQueryString,omitempty"` + Reroute *bool `json:"reroute,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayurlpathmap.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayurlpathmap.go new file mode 100644 index 00000000000..57b9cac7aa3 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayurlpathmap.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayUrlPathMap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationGatewayUrlPathMapPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayurlpathmappropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayurlpathmappropertiesformat.go new file mode 100644 index 00000000000..e69ae8cbde4 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewayurlpathmappropertiesformat.go @@ -0,0 +1,14 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayUrlPathMapPropertiesFormat struct { + DefaultBackendAddressPool *SubResource `json:"defaultBackendAddressPool,omitempty"` + DefaultBackendHTTPSettings *SubResource `json:"defaultBackendHttpSettings,omitempty"` + DefaultLoadDistributionPolicy *SubResource `json:"defaultLoadDistributionPolicy,omitempty"` + DefaultRedirectConfiguration *SubResource `json:"defaultRedirectConfiguration,omitempty"` + DefaultRewriteRuleSet *SubResource `json:"defaultRewriteRuleSet,omitempty"` + PathRules *[]ApplicationGatewayPathRule `json:"pathRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaywebapplicationfirewallconfiguration.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaywebapplicationfirewallconfiguration.go new file mode 100644 index 00000000000..0ccb185da05 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationgatewaywebapplicationfirewallconfiguration.go @@ -0,0 +1,17 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationGatewayWebApplicationFirewallConfiguration struct { + DisabledRuleGroups *[]ApplicationGatewayFirewallDisabledRuleGroup `json:"disabledRuleGroups,omitempty"` + Enabled bool `json:"enabled"` + Exclusions *[]ApplicationGatewayFirewallExclusion `json:"exclusions,omitempty"` + FileUploadLimitInMb *int64 `json:"fileUploadLimitInMb,omitempty"` + FirewallMode ApplicationGatewayFirewallMode `json:"firewallMode"` + MaxRequestBodySize *int64 `json:"maxRequestBodySize,omitempty"` + MaxRequestBodySizeInKb *int64 `json:"maxRequestBodySizeInKb,omitempty"` + RequestBodyCheck *bool `json:"requestBodyCheck,omitempty"` + RuleSetType string `json:"ruleSetType"` + RuleSetVersion string `json:"ruleSetVersion"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationsecuritygroup.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationsecuritygroup.go new file mode 100644 index 00000000000..8dccd748428 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationsecuritygroup.go @@ -0,0 +1,14 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationsecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationsecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..2713b23e0a5 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_applicationsecuritygrouppropertiesformat.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ApplicationSecurityGroupPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_backendaddresspool.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_backendaddresspool.go new file mode 100644 index 00000000000..a5f3d1e0367 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_backendaddresspool.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPool struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_backendaddresspoolpropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_backendaddresspoolpropertiesformat.go new file mode 100644 index 00000000000..ddf54b50116 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_backendaddresspoolpropertiesformat.go @@ -0,0 +1,19 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type BackendAddressPoolPropertiesFormat struct { + BackendIPConfigurations *[]NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + DrainPeriodInSeconds *int64 `json:"drainPeriodInSeconds,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancerBackendAddresses *[]LoadBalancerBackendAddress `json:"loadBalancerBackendAddresses,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + Location *string `json:"location,omitempty"` + OutboundRule *SubResource `json:"outboundRule,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SyncMode *SyncMode `json:"syncMode,omitempty"` + TunnelInterfaces *[]GatewayLoadBalancerTunnelInterface `json:"tunnelInterfaces,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_customdnsconfigpropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_customdnsconfigpropertiesformat.go new file mode 100644 index 00000000000..e9022fbeb4f --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_customdnsconfigpropertiesformat.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type CustomDnsConfigPropertiesFormat struct { + Fqdn *string `json:"fqdn,omitempty"` + IPAddresses *[]string `json:"ipAddresses,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_ddossettings.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_ddossettings.go new file mode 100644 index 00000000000..4f7e1e20764 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_ddossettings.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type DdosSettings struct { + DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"` + ProtectionMode *DdosSettingsProtectionMode `json:"protectionMode,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_delegation.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_delegation.go new file mode 100644 index 00000000000..9a088e2a507 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_delegation.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Delegation struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceDelegationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_exclusionmanagedrule.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_exclusionmanagedrule.go new file mode 100644 index 00000000000..ffa39b22711 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_exclusionmanagedrule.go @@ -0,0 +1,8 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExclusionManagedRule struct { + RuleId string `json:"ruleId"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_exclusionmanagedrulegroup.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_exclusionmanagedrulegroup.go new file mode 100644 index 00000000000..29d30ef6bc1 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_exclusionmanagedrulegroup.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExclusionManagedRuleGroup struct { + RuleGroupName string `json:"ruleGroupName"` + Rules *[]ExclusionManagedRule `json:"rules,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_exclusionmanagedruleset.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_exclusionmanagedruleset.go new file mode 100644 index 00000000000..cb569797cec --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_exclusionmanagedruleset.go @@ -0,0 +1,10 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ExclusionManagedRuleSet struct { + RuleGroups *[]ExclusionManagedRuleGroup `json:"ruleGroups,omitempty"` + RuleSetType string `json:"ruleSetType"` + RuleSetVersion string `json:"ruleSetVersion"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_flowlog.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_flowlog.go new file mode 100644 index 00000000000..e1c8c796363 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_flowlog.go @@ -0,0 +1,19 @@ +package webapplicationfirewallpolicies + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/identity" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLog struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Identity *identity.SystemAndUserAssignedMap `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FlowLogPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_flowlogformatparameters.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_flowlogformatparameters.go new file mode 100644 index 00000000000..8e97873a7c3 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_flowlogformatparameters.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogFormatParameters struct { + Type *FlowLogFormatType `json:"type,omitempty"` + Version *int64 `json:"version,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_flowlogpropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_flowlogpropertiesformat.go new file mode 100644 index 00000000000..9e90fd9cd8a --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_flowlogpropertiesformat.go @@ -0,0 +1,15 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FlowLogPropertiesFormat struct { + Enabled *bool `json:"enabled,omitempty"` + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` + Format *FlowLogFormatParameters `json:"format,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + StorageId string `json:"storageId"` + TargetResourceGuid *string `json:"targetResourceGuid,omitempty"` + TargetResourceId string `json:"targetResourceId"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_frontendipconfiguration.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_frontendipconfiguration.go new file mode 100644 index 00000000000..717217cc3a2 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_frontendipconfiguration.go @@ -0,0 +1,17 @@ +package webapplicationfirewallpolicies + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_frontendipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_frontendipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..4f11b119df9 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_frontendipconfigurationpropertiesformat.go @@ -0,0 +1,19 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type FrontendIPConfigurationPropertiesFormat struct { + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + InboundNatPools *[]SubResource `json:"inboundNatPools,omitempty"` + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_gatewayloadbalancertunnelinterface.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_gatewayloadbalancertunnelinterface.go new file mode 100644 index 00000000000..698c1c6a1b4 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_gatewayloadbalancertunnelinterface.go @@ -0,0 +1,11 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GatewayLoadBalancerTunnelInterface struct { + Identifier *int64 `json:"identifier,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *GatewayLoadBalancerTunnelProtocol `json:"protocol,omitempty"` + Type *GatewayLoadBalancerTunnelInterfaceType `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_groupbyusersession.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_groupbyusersession.go new file mode 100644 index 00000000000..5995831381a --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_groupbyusersession.go @@ -0,0 +1,8 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GroupByUserSession struct { + GroupByVariables []GroupByVariable `json:"groupByVariables"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_groupbyvariable.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_groupbyvariable.go new file mode 100644 index 00000000000..132602a8758 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_groupbyvariable.go @@ -0,0 +1,8 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GroupByVariable struct { + VariableName ApplicationGatewayFirewallUserSessionVariable `json:"variableName"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_headervaluematcher.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_headervaluematcher.go new file mode 100644 index 00000000000..d88a3a6eea0 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_headervaluematcher.go @@ -0,0 +1,10 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type HeaderValueMatcher struct { + IgnoreCase *bool `json:"ignoreCase,omitempty"` + Negate *bool `json:"negate,omitempty"` + Pattern *string `json:"pattern,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_inboundnatrule.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_inboundnatrule.go new file mode 100644 index 00000000000..f9908a65135 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_inboundnatrule.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *InboundNatRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_inboundnatrulepropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_inboundnatrulepropertiesformat.go new file mode 100644 index 00000000000..2ed26d6a6d0 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_inboundnatrulepropertiesformat.go @@ -0,0 +1,19 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type InboundNatRulePropertiesFormat struct { + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + BackendIPConfiguration *NetworkInterfaceIPConfiguration `json:"backendIPConfiguration,omitempty"` + BackendPort *int64 `json:"backendPort,omitempty"` + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + EnableTcpReset *bool `json:"enableTcpReset,omitempty"` + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + FrontendPortRangeEnd *int64 `json:"frontendPortRangeEnd,omitempty"` + FrontendPortRangeStart *int64 `json:"frontendPortRangeStart,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + Protocol *TransportProtocol `json:"protocol,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_ipconfiguration.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_ipconfiguration.go new file mode 100644 index 00000000000..ee1ee9f9ce3 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_ipconfiguration.go @@ -0,0 +1,11 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_ipconfigurationprofile.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_ipconfigurationprofile.go new file mode 100644 index 00000000000..4467a251182 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_ipconfigurationprofile.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfile struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *IPConfigurationProfilePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_ipconfigurationprofilepropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_ipconfigurationprofilepropertiesformat.go new file mode 100644 index 00000000000..4746cb9a921 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_ipconfigurationprofilepropertiesformat.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationProfilePropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_ipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_ipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..6455af984df --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_ipconfigurationpropertiesformat.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPConfigurationPropertiesFormat struct { + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_iptag.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_iptag.go new file mode 100644 index 00000000000..da603122799 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_iptag.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type IPTag struct { + IPTagType *string `json:"ipTagType,omitempty"` + Tag *string `json:"tag,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_loadbalancerbackendaddress.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_loadbalancerbackendaddress.go new file mode 100644 index 00000000000..07977c08269 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_loadbalancerbackendaddress.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddress struct { + Name *string `json:"name,omitempty"` + Properties *LoadBalancerBackendAddressPropertiesFormat `json:"properties,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_loadbalancerbackendaddresspropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_loadbalancerbackendaddresspropertiesformat.go new file mode 100644 index 00000000000..ca60fdf8735 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_loadbalancerbackendaddresspropertiesformat.go @@ -0,0 +1,14 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type LoadBalancerBackendAddressPropertiesFormat struct { + AdminState *LoadBalancerBackendAddressAdminState `json:"adminState,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + InboundNatRulesPortMapping *[]NatRulePortMapping `json:"inboundNatRulesPortMapping,omitempty"` + LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIPConfiguration,omitempty"` + NetworkInterfaceIPConfiguration *SubResource `json:"networkInterfaceIPConfiguration,omitempty"` + Subnet *SubResource `json:"subnet,omitempty"` + VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_managedrulegroupoverride.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_managedrulegroupoverride.go new file mode 100644 index 00000000000..2810e8e0e4d --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_managedrulegroupoverride.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ManagedRuleGroupOverride struct { + RuleGroupName string `json:"ruleGroupName"` + Rules *[]ManagedRuleOverride `json:"rules,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_managedruleoverride.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_managedruleoverride.go new file mode 100644 index 00000000000..c6f8a500e23 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_managedruleoverride.go @@ -0,0 +1,10 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ManagedRuleOverride struct { + Action *ActionType `json:"action,omitempty"` + RuleId string `json:"ruleId"` + State *ManagedRuleEnabledState `json:"state,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_managedrulesdefinition.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_managedrulesdefinition.go new file mode 100644 index 00000000000..720824c2670 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_managedrulesdefinition.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ManagedRulesDefinition struct { + Exclusions *[]OwaspCrsExclusionEntry `json:"exclusions,omitempty"` + ManagedRuleSets []ManagedRuleSet `json:"managedRuleSets"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_managedruleset.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_managedruleset.go new file mode 100644 index 00000000000..2bbf971c792 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_managedruleset.go @@ -0,0 +1,10 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ManagedRuleSet struct { + RuleGroupOverrides *[]ManagedRuleGroupOverride `json:"ruleGroupOverrides,omitempty"` + RuleSetType string `json:"ruleSetType"` + RuleSetVersion string `json:"ruleSetVersion"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_matchcondition.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_matchcondition.go new file mode 100644 index 00000000000..c8d3e722c75 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_matchcondition.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type MatchCondition struct { + MatchValues []string `json:"matchValues"` + MatchVariables []MatchVariable `json:"matchVariables"` + NegationConditon *bool `json:"negationConditon,omitempty"` + Operator WebApplicationFirewallOperator `json:"operator"` + Transforms *[]WebApplicationFirewallTransform `json:"transforms,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_matchvariable.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_matchvariable.go new file mode 100644 index 00000000000..bd0473317b2 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_matchvariable.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type MatchVariable struct { + Selector *string `json:"selector,omitempty"` + VariableName WebApplicationFirewallMatchVariable `json:"variableName"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_natgateway.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_natgateway.go new file mode 100644 index 00000000000..4a594a57232 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_natgateway.go @@ -0,0 +1,20 @@ +package webapplicationfirewallpolicies + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGateway struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"` + Sku *NatGatewaySku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_natgatewaypropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_natgatewaypropertiesformat.go new file mode 100644 index 00000000000..30e0ed98075 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_natgatewaypropertiesformat.go @@ -0,0 +1,13 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewayPropertiesFormat struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Subnets *[]SubResource `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_natgatewaysku.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_natgatewaysku.go new file mode 100644 index 00000000000..01f9595dd47 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_natgatewaysku.go @@ -0,0 +1,8 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatGatewaySku struct { + Name *NatGatewaySkuName `json:"name,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_natruleportmapping.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_natruleportmapping.go new file mode 100644 index 00000000000..636fb66e30f --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_natruleportmapping.go @@ -0,0 +1,10 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NatRulePortMapping struct { + BackendPort *int64 `json:"backendPort,omitempty"` + FrontendPort *int64 `json:"frontendPort,omitempty"` + InboundNatRuleName *string `json:"inboundNatRuleName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterface.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterface.go new file mode 100644 index 00000000000..5f43f78eff1 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterface.go @@ -0,0 +1,19 @@ +package webapplicationfirewallpolicies + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterface struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfacePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterfacednssettings.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterfacednssettings.go new file mode 100644 index 00000000000..2d9f1326e9a --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterfacednssettings.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceDnsSettings struct { + AppliedDnsServers *[]string `json:"appliedDnsServers,omitempty"` + DnsServers *[]string `json:"dnsServers,omitempty"` + InternalDnsNameLabel *string `json:"internalDnsNameLabel,omitempty"` + InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty"` + InternalFqdn *string `json:"internalFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterfaceipconfiguration.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterfaceipconfiguration.go new file mode 100644 index 00000000000..80650073a43 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterfaceipconfiguration.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go new file mode 100644 index 00000000000..ed9c49c6aa3 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterfaceipconfigurationprivatelinkconnectionproperties.go @@ -0,0 +1,10 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties struct { + Fqdns *[]string `json:"fqdns,omitempty"` + GroupId *string `json:"groupId,omitempty"` + RequiredMemberName *string `json:"requiredMemberName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterfaceipconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterfaceipconfigurationpropertiesformat.go new file mode 100644 index 00000000000..db24b56da38 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterfaceipconfigurationpropertiesformat.go @@ -0,0 +1,22 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceIPConfigurationPropertiesFormat struct { + ApplicationGatewayBackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"applicationGatewayBackendAddressPools,omitempty"` + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"` + LoadBalancerBackendAddressPools *[]BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"` + LoadBalancerInboundNatRules *[]InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressPrefixLength *int64 `json:"privateIPAddressPrefixLength,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + PrivateLinkConnectionProperties *NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties `json:"privateLinkConnectionProperties,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` + VirtualNetworkTaps *[]VirtualNetworkTap `json:"virtualNetworkTaps,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterfacepropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterfacepropertiesformat.go new file mode 100644 index 00000000000..e24f37ad4e4 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterfacepropertiesformat.go @@ -0,0 +1,29 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfacePropertiesFormat struct { + AuxiliaryMode *NetworkInterfaceAuxiliaryMode `json:"auxiliaryMode,omitempty"` + AuxiliarySku *NetworkInterfaceAuxiliarySku `json:"auxiliarySku,omitempty"` + DisableTcpStateTracking *bool `json:"disableTcpStateTracking,omitempty"` + DnsSettings *NetworkInterfaceDnsSettings `json:"dnsSettings,omitempty"` + DscpConfiguration *SubResource `json:"dscpConfiguration,omitempty"` + EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"` + EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"` + HostedWorkloads *[]string `json:"hostedWorkloads,omitempty"` + IPConfigurations *[]NetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + MacAddress *string `json:"macAddress,omitempty"` + MigrationPhase *NetworkInterfaceMigrationPhase `json:"migrationPhase,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + NicType *NetworkInterfaceNicType `json:"nicType,omitempty"` + Primary *bool `json:"primary,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateLinkService *PrivateLinkService `json:"privateLinkService,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + TapConfigurations *[]NetworkInterfaceTapConfiguration `json:"tapConfigurations,omitempty"` + VirtualMachine *SubResource `json:"virtualMachine,omitempty"` + VnetEncryptionSupported *bool `json:"vnetEncryptionSupported,omitempty"` + WorkloadType *string `json:"workloadType,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterfacetapconfiguration.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterfacetapconfiguration.go new file mode 100644 index 00000000000..559fab4512d --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterfacetapconfiguration.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkInterfaceTapConfigurationPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterfacetapconfigurationpropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterfacetapconfigurationpropertiesformat.go new file mode 100644 index 00000000000..d28ce56ff99 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networkinterfacetapconfigurationpropertiesformat.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkInterfaceTapConfigurationPropertiesFormat struct { + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + VirtualNetworkTap *VirtualNetworkTap `json:"virtualNetworkTap,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networksecuritygroup.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networksecuritygroup.go new file mode 100644 index 00000000000..7edb20a30eb --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networksecuritygroup.go @@ -0,0 +1,14 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroup struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *NetworkSecurityGroupPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networksecuritygrouppropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networksecuritygrouppropertiesformat.go new file mode 100644 index 00000000000..63dfb0a3753 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_networksecuritygrouppropertiesformat.go @@ -0,0 +1,15 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type NetworkSecurityGroupPropertiesFormat struct { + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + FlowLogs *[]FlowLog `json:"flowLogs,omitempty"` + FlushConnection *bool `json:"flushConnection,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_owaspcrsexclusionentry.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_owaspcrsexclusionentry.go new file mode 100644 index 00000000000..447c5ce3185 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_owaspcrsexclusionentry.go @@ -0,0 +1,11 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type OwaspCrsExclusionEntry struct { + ExclusionManagedRuleSets *[]ExclusionManagedRuleSet `json:"exclusionManagedRuleSets,omitempty"` + MatchVariable OwaspCrsExclusionEntryMatchVariable `json:"matchVariable"` + Selector string `json:"selector"` + SelectorMatchOperator OwaspCrsExclusionEntrySelectorMatchOperator `json:"selectorMatchOperator"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_policysettings.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_policysettings.go new file mode 100644 index 00000000000..a87e7c07bff --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_policysettings.go @@ -0,0 +1,19 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PolicySettings struct { + CustomBlockResponseBody *string `json:"customBlockResponseBody,omitempty"` + CustomBlockResponseStatusCode *int64 `json:"customBlockResponseStatusCode,omitempty"` + FileUploadEnforcement *bool `json:"fileUploadEnforcement,omitempty"` + FileUploadLimitInMb *int64 `json:"fileUploadLimitInMb,omitempty"` + JsChallengeCookieExpirationInMins *int64 `json:"jsChallengeCookieExpirationInMins,omitempty"` + LogScrubbing *PolicySettingsLogScrubbing `json:"logScrubbing,omitempty"` + MaxRequestBodySizeInKb *int64 `json:"maxRequestBodySizeInKb,omitempty"` + Mode *WebApplicationFirewallMode `json:"mode,omitempty"` + RequestBodyCheck *bool `json:"requestBodyCheck,omitempty"` + RequestBodyEnforcement *bool `json:"requestBodyEnforcement,omitempty"` + RequestBodyInspectLimitInKB *int64 `json:"requestBodyInspectLimitInKB,omitempty"` + State *WebApplicationFirewallEnabledState `json:"state,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_policysettingslogscrubbing.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_policysettingslogscrubbing.go new file mode 100644 index 00000000000..a97418be867 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_policysettingslogscrubbing.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PolicySettingsLogScrubbing struct { + ScrubbingRules *[]WebApplicationFirewallScrubbingRules `json:"scrubbingRules,omitempty"` + State *WebApplicationFirewallScrubbingState `json:"state,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privateendpoint.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privateendpoint.go new file mode 100644 index 00000000000..aabcb4ef384 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privateendpoint.go @@ -0,0 +1,19 @@ +package webapplicationfirewallpolicies + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpoint struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privateendpointconnection.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privateendpointconnection.go new file mode 100644 index 00000000000..c66bc0045c7 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privateendpointconnection.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privateendpointconnectionproperties.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privateendpointconnectionproperties.go new file mode 100644 index 00000000000..dbd38c8e4ca --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privateendpointconnectionproperties.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointConnectionProperties struct { + LinkIdentifier *string `json:"linkIdentifier,omitempty"` + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + PrivateEndpointLocation *string `json:"privateEndpointLocation,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privateendpointipconfiguration.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privateendpointipconfiguration.go new file mode 100644 index 00000000000..86f24c803d3 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privateendpointipconfiguration.go @@ -0,0 +1,11 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateEndpointIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privateendpointipconfigurationproperties.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privateendpointipconfigurationproperties.go new file mode 100644 index 00000000000..f40d8cf2be4 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privateendpointipconfigurationproperties.go @@ -0,0 +1,10 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointIPConfigurationProperties struct { + GroupId *string `json:"groupId,omitempty"` + MemberName *string `json:"memberName,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privateendpointproperties.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privateendpointproperties.go new file mode 100644 index 00000000000..93cab138813 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privateendpointproperties.go @@ -0,0 +1,16 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateEndpointProperties struct { + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + CustomDnsConfigs *[]CustomDnsConfigPropertiesFormat `json:"customDnsConfigs,omitempty"` + CustomNetworkInterfaceName *string `json:"customNetworkInterfaceName,omitempty"` + IPConfigurations *[]PrivateEndpointIPConfiguration `json:"ipConfigurations,omitempty"` + ManualPrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"manualPrivateLinkServiceConnections,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"privateLinkServiceConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privatelinkservice.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privatelinkservice.go new file mode 100644 index 00000000000..8b8ffdc399e --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privatelinkservice.go @@ -0,0 +1,19 @@ +package webapplicationfirewallpolicies + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkService struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceProperties `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privatelinkserviceconnection.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privatelinkserviceconnection.go new file mode 100644 index 00000000000..ac293dace51 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privatelinkserviceconnection.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnection struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceConnectionProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privatelinkserviceconnectionproperties.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privatelinkserviceconnectionproperties.go new file mode 100644 index 00000000000..164ef869982 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privatelinkserviceconnectionproperties.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionProperties struct { + GroupIds *[]string `json:"groupIds,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + PrivateLinkServiceId *string `json:"privateLinkServiceId,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + RequestMessage *string `json:"requestMessage,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privatelinkserviceconnectionstate.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privatelinkserviceconnectionstate.go new file mode 100644 index 00000000000..3ea66cb9940 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privatelinkserviceconnectionstate.go @@ -0,0 +1,10 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceConnectionState struct { + ActionsRequired *string `json:"actionsRequired,omitempty"` + Description *string `json:"description,omitempty"` + Status *string `json:"status,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privatelinkserviceipconfiguration.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privatelinkserviceipconfiguration.go new file mode 100644 index 00000000000..7d17f466192 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privatelinkserviceipconfiguration.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfiguration struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PrivateLinkServiceIPConfigurationProperties `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privatelinkserviceipconfigurationproperties.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privatelinkserviceipconfigurationproperties.go new file mode 100644 index 00000000000..814df952c03 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privatelinkserviceipconfigurationproperties.go @@ -0,0 +1,13 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceIPConfigurationProperties struct { + Primary *bool `json:"primary,omitempty"` + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"` + PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Subnet *Subnet `json:"subnet,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privatelinkserviceproperties.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privatelinkserviceproperties.go new file mode 100644 index 00000000000..c58556d385c --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_privatelinkserviceproperties.go @@ -0,0 +1,17 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PrivateLinkServiceProperties struct { + Alias *string `json:"alias,omitempty"` + AutoApproval *ResourceSet `json:"autoApproval,omitempty"` + EnableProxyProtocol *bool `json:"enableProxyProtocol,omitempty"` + Fqdns *[]string `json:"fqdns,omitempty"` + IPConfigurations *[]PrivateLinkServiceIPConfiguration `json:"ipConfigurations,omitempty"` + LoadBalancerFrontendIPConfigurations *[]FrontendIPConfiguration `json:"loadBalancerFrontendIpConfigurations,omitempty"` + NetworkInterfaces *[]NetworkInterface `json:"networkInterfaces,omitempty"` + PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Visibility *ResourceSet `json:"visibility,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_publicipaddress.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_publicipaddress.go new file mode 100644 index 00000000000..6f2116661f4 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_publicipaddress.go @@ -0,0 +1,22 @@ +package webapplicationfirewallpolicies + +import ( + "github.com/hashicorp/go-azure-helpers/resourcemanager/edgezones" + "github.com/hashicorp/go-azure-helpers/resourcemanager/zones" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddress struct { + Etag *string `json:"etag,omitempty"` + ExtendedLocation *edgezones.Model `json:"extendedLocation,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *PublicIPAddressPropertiesFormat `json:"properties,omitempty"` + Sku *PublicIPAddressSku `json:"sku,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Zones *zones.Schema `json:"zones,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_publicipaddressdnssettings.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_publicipaddressdnssettings.go new file mode 100644 index 00000000000..c122bbf9d00 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_publicipaddressdnssettings.go @@ -0,0 +1,11 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressDnsSettings struct { + DomainNameLabel *string `json:"domainNameLabel,omitempty"` + DomainNameLabelScope *PublicIPAddressDnsSettingsDomainNameLabelScope `json:"domainNameLabelScope,omitempty"` + Fqdn *string `json:"fqdn,omitempty"` + ReverseFqdn *string `json:"reverseFqdn,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_publicipaddresspropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_publicipaddresspropertiesformat.go new file mode 100644 index 00000000000..76e237783ef --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_publicipaddresspropertiesformat.go @@ -0,0 +1,23 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressPropertiesFormat struct { + DdosSettings *DdosSettings `json:"ddosSettings,omitempty"` + DeleteOption *DeleteOptions `json:"deleteOption,omitempty"` + DnsSettings *PublicIPAddressDnsSettings `json:"dnsSettings,omitempty"` + IPAddress *string `json:"ipAddress,omitempty"` + IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty"` + IPTags *[]IPTag `json:"ipTags,omitempty"` + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + LinkedPublicIPAddress *PublicIPAddress `json:"linkedPublicIPAddress,omitempty"` + MigrationPhase *PublicIPAddressMigrationPhase `json:"migrationPhase,omitempty"` + NatGateway *NatGateway `json:"natGateway,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"` + PublicIPAllocationMethod *IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"` + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServicePublicIPAddress *PublicIPAddress `json:"servicePublicIPAddress,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_publicipaddresssku.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_publicipaddresssku.go new file mode 100644 index 00000000000..1b8495a46b0 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_publicipaddresssku.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type PublicIPAddressSku struct { + Name *PublicIPAddressSkuName `json:"name,omitempty"` + Tier *PublicIPAddressSkuTier `json:"tier,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_resourcenavigationlink.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_resourcenavigationlink.go new file mode 100644 index 00000000000..8cf0d6ae754 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_resourcenavigationlink.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ResourceNavigationLinkFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_resourcenavigationlinkformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_resourcenavigationlinkformat.go new file mode 100644 index 00000000000..cfc65feb648 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_resourcenavigationlinkformat.go @@ -0,0 +1,10 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceNavigationLinkFormat struct { + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_resourceset.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_resourceset.go new file mode 100644 index 00000000000..7bd3ff7ff53 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_resourceset.go @@ -0,0 +1,8 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ResourceSet struct { + Subscriptions *[]string `json:"subscriptions,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_retentionpolicyparameters.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_retentionpolicyparameters.go new file mode 100644 index 00000000000..700cf48fcef --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_retentionpolicyparameters.go @@ -0,0 +1,9 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RetentionPolicyParameters struct { + Days *int64 `json:"days,omitempty"` + Enabled *bool `json:"enabled,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_route.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_route.go new file mode 100644 index 00000000000..854dbcba973 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_route.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Route struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RoutePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_routepropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_routepropertiesformat.go new file mode 100644 index 00000000000..65879ed15ad --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_routepropertiesformat.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RoutePropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + HasBgpOverride *bool `json:"hasBgpOverride,omitempty"` + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + NextHopType RouteNextHopType `json:"nextHopType"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_routetable.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_routetable.go new file mode 100644 index 00000000000..73fdbc844dc --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_routetable.go @@ -0,0 +1,14 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTable struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *RouteTablePropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_routetablepropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_routetablepropertiesformat.go new file mode 100644 index 00000000000..f7082dd7d4a --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_routetablepropertiesformat.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type RouteTablePropertiesFormat struct { + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + Routes *[]Route `json:"routes,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_securityrule.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_securityrule.go new file mode 100644 index 00000000000..9a8c2e557c7 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_securityrule.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRule struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_securityrulepropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_securityrulepropertiesformat.go new file mode 100644 index 00000000000..d40d084432c --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_securityrulepropertiesformat.go @@ -0,0 +1,23 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SecurityRulePropertiesFormat struct { + Access SecurityRuleAccess `json:"access"` + Description *string `json:"description,omitempty"` + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + Direction SecurityRuleDirection `json:"direction"` + Priority int64 `json:"priority"` + Protocol SecurityRuleProtocol `json:"protocol"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + SourcePortRange *string `json:"sourcePortRange,omitempty"` + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_serviceassociationlink.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_serviceassociationlink.go new file mode 100644 index 00000000000..9f75aeaec5b --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_serviceassociationlink.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLink struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceAssociationLinkPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_serviceassociationlinkpropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_serviceassociationlinkpropertiesformat.go new file mode 100644 index 00000000000..abae149b764 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_serviceassociationlinkpropertiesformat.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceAssociationLinkPropertiesFormat struct { + AllowDelete *bool `json:"allowDelete,omitempty"` + Link *string `json:"link,omitempty"` + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + Locations *[]string `json:"locations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_servicedelegationpropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_servicedelegationpropertiesformat.go new file mode 100644 index 00000000000..160d9aebc9f --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_servicedelegationpropertiesformat.go @@ -0,0 +1,10 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceDelegationPropertiesFormat struct { + Actions *[]string `json:"actions,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ServiceName *string `json:"serviceName,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_serviceendpointpolicy.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_serviceendpointpolicy.go new file mode 100644 index 00000000000..ae5e0fd396a --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_serviceendpointpolicy.go @@ -0,0 +1,15 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Kind *string `json:"kind,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_serviceendpointpolicydefinition.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_serviceendpointpolicydefinition.go new file mode 100644 index 00000000000..ac60c21f09b --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_serviceendpointpolicydefinition.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinition struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_serviceendpointpolicydefinitionpropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_serviceendpointpolicydefinitionpropertiesformat.go new file mode 100644 index 00000000000..34679603f3a --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_serviceendpointpolicydefinitionpropertiesformat.go @@ -0,0 +1,11 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyDefinitionPropertiesFormat struct { + Description *string `json:"description,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` + ServiceResources *[]string `json:"serviceResources,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_serviceendpointpolicypropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_serviceendpointpolicypropertiesformat.go new file mode 100644 index 00000000000..aa5effcc158 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_serviceendpointpolicypropertiesformat.go @@ -0,0 +1,13 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPolicyPropertiesFormat struct { + ContextualServiceEndpointPolicies *[]string `json:"contextualServiceEndpointPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` + ServiceAlias *string `json:"serviceAlias,omitempty"` + ServiceEndpointPolicyDefinitions *[]ServiceEndpointPolicyDefinition `json:"serviceEndpointPolicyDefinitions,omitempty"` + Subnets *[]Subnet `json:"subnets,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_serviceendpointpropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_serviceendpointpropertiesformat.go new file mode 100644 index 00000000000..4a37ea44fea --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_serviceendpointpropertiesformat.go @@ -0,0 +1,11 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ServiceEndpointPropertiesFormat struct { + Locations *[]string `json:"locations,omitempty"` + NetworkIdentifier *SubResource `json:"networkIdentifier,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Service *string `json:"service,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_subnet.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_subnet.go new file mode 100644 index 00000000000..22ae6378be5 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_subnet.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type Subnet struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *SubnetPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_subnetpropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_subnetpropertiesformat.go new file mode 100644 index 00000000000..a5152cfbfee --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_subnetpropertiesformat.go @@ -0,0 +1,28 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubnetPropertiesFormat struct { + AddressPrefix *string `json:"addressPrefix,omitempty"` + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + ApplicationGatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"applicationGatewayIPConfigurations,omitempty"` + DefaultOutboundAccess *bool `json:"defaultOutboundAccess,omitempty"` + Delegations *[]Delegation `json:"delegations,omitempty"` + IPAllocations *[]SubResource `json:"ipAllocations,omitempty"` + IPConfigurationProfiles *[]IPConfigurationProfile `json:"ipConfigurationProfiles,omitempty"` + IPConfigurations *[]IPConfiguration `json:"ipConfigurations,omitempty"` + NatGateway *SubResource `json:"natGateway,omitempty"` + NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"` + PrivateEndpointNetworkPolicies *VirtualNetworkPrivateEndpointNetworkPolicies `json:"privateEndpointNetworkPolicies,omitempty"` + PrivateEndpoints *[]PrivateEndpoint `json:"privateEndpoints,omitempty"` + PrivateLinkServiceNetworkPolicies *VirtualNetworkPrivateLinkServiceNetworkPolicies `json:"privateLinkServiceNetworkPolicies,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + Purpose *string `json:"purpose,omitempty"` + ResourceNavigationLinks *[]ResourceNavigationLink `json:"resourceNavigationLinks,omitempty"` + RouteTable *RouteTable `json:"routeTable,omitempty"` + ServiceAssociationLinks *[]ServiceAssociationLink `json:"serviceAssociationLinks,omitempty"` + ServiceEndpointPolicies *[]ServiceEndpointPolicy `json:"serviceEndpointPolicies,omitempty"` + ServiceEndpoints *[]ServiceEndpointPropertiesFormat `json:"serviceEndpoints,omitempty"` + SharingScope *SharingScope `json:"sharingScope,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_subresource.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_subresource.go new file mode 100644 index 00000000000..f80e970be83 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_subresource.go @@ -0,0 +1,8 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type SubResource struct { + Id *string `json:"id,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_trafficanalyticsconfigurationproperties.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_trafficanalyticsconfigurationproperties.go new file mode 100644 index 00000000000..fd4b0e7ec17 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_trafficanalyticsconfigurationproperties.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsConfigurationProperties struct { + Enabled *bool `json:"enabled,omitempty"` + TrafficAnalyticsInterval *int64 `json:"trafficAnalyticsInterval,omitempty"` + WorkspaceId *string `json:"workspaceId,omitempty"` + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_trafficanalyticsproperties.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_trafficanalyticsproperties.go new file mode 100644 index 00000000000..872500d56bf --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_trafficanalyticsproperties.go @@ -0,0 +1,8 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type TrafficAnalyticsProperties struct { + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_virtualnetworktap.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_virtualnetworktap.go new file mode 100644 index 00000000000..e2de0ca881d --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_virtualnetworktap.go @@ -0,0 +1,14 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTap struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *VirtualNetworkTapPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_virtualnetworktappropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_virtualnetworktappropertiesformat.go new file mode 100644 index 00000000000..418d09be371 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_virtualnetworktappropertiesformat.go @@ -0,0 +1,13 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type VirtualNetworkTapPropertiesFormat struct { + DestinationLoadBalancerFrontEndIPConfiguration *FrontendIPConfiguration `json:"destinationLoadBalancerFrontEndIPConfiguration,omitempty"` + DestinationNetworkInterfaceIPConfiguration *NetworkInterfaceIPConfiguration `json:"destinationNetworkInterfaceIPConfiguration,omitempty"` + DestinationPort *int64 `json:"destinationPort,omitempty"` + NetworkInterfaceTapConfigurations *[]NetworkInterfaceTapConfiguration `json:"networkInterfaceTapConfigurations,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceGuid *string `json:"resourceGuid,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_webapplicationfirewallcustomrule.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_webapplicationfirewallcustomrule.go new file mode 100644 index 00000000000..c66c1257253 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_webapplicationfirewallcustomrule.go @@ -0,0 +1,17 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type WebApplicationFirewallCustomRule struct { + Action WebApplicationFirewallAction `json:"action"` + Etag *string `json:"etag,omitempty"` + GroupByUserSession *[]GroupByUserSession `json:"groupByUserSession,omitempty"` + MatchConditions []MatchCondition `json:"matchConditions"` + Name *string `json:"name,omitempty"` + Priority int64 `json:"priority"` + RateLimitDuration *ApplicationGatewayFirewallRateLimitDuration `json:"rateLimitDuration,omitempty"` + RateLimitThreshold *int64 `json:"rateLimitThreshold,omitempty"` + RuleType WebApplicationFirewallRuleType `json:"ruleType"` + State *WebApplicationFirewallState `json:"state,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_webapplicationfirewallpolicy.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_webapplicationfirewallpolicy.go new file mode 100644 index 00000000000..c79f926a28c --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_webapplicationfirewallpolicy.go @@ -0,0 +1,14 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type WebApplicationFirewallPolicy struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + Properties *WebApplicationFirewallPolicyPropertiesFormat `json:"properties,omitempty"` + Tags *map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_webapplicationfirewallpolicypropertiesformat.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_webapplicationfirewallpolicypropertiesformat.go new file mode 100644 index 00000000000..0c43a36d2a8 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_webapplicationfirewallpolicypropertiesformat.go @@ -0,0 +1,15 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type WebApplicationFirewallPolicyPropertiesFormat struct { + ApplicationGateways *[]ApplicationGateway `json:"applicationGateways,omitempty"` + CustomRules *[]WebApplicationFirewallCustomRule `json:"customRules,omitempty"` + HTTPListeners *[]SubResource `json:"httpListeners,omitempty"` + ManagedRules ManagedRulesDefinition `json:"managedRules"` + PathBasedRules *[]SubResource `json:"pathBasedRules,omitempty"` + PolicySettings *PolicySettings `json:"policySettings,omitempty"` + ProvisioningState *ProvisioningState `json:"provisioningState,omitempty"` + ResourceState *WebApplicationFirewallPolicyResourceState `json:"resourceState,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_webapplicationfirewallscrubbingrules.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_webapplicationfirewallscrubbingrules.go new file mode 100644 index 00000000000..b3d3f6dd209 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/model_webapplicationfirewallscrubbingrules.go @@ -0,0 +1,11 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type WebApplicationFirewallScrubbingRules struct { + MatchVariable ScrubbingRuleEntryMatchVariable `json:"matchVariable"` + Selector *string `json:"selector,omitempty"` + SelectorMatchOperator ScrubbingRuleEntryMatchOperator `json:"selectorMatchOperator"` + State *ScrubbingRuleEntryState `json:"state,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/predicates.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/predicates.go new file mode 100644 index 00000000000..a7973b0a14f --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/predicates.go @@ -0,0 +1,37 @@ +package webapplicationfirewallpolicies + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type WebApplicationFirewallPolicyOperationPredicate struct { + Etag *string + Id *string + Location *string + Name *string + Type *string +} + +func (p WebApplicationFirewallPolicyOperationPredicate) Matches(input WebApplicationFirewallPolicy) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Location != nil && (input.Location == nil || *p.Location != *input.Location) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/version.go b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/version.go new file mode 100644 index 00000000000..ff8493c34a5 --- /dev/null +++ b/resource-manager/network/2024-01-01/webapplicationfirewallpolicies/version.go @@ -0,0 +1,12 @@ +package webapplicationfirewallpolicies + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/webapplicationfirewallpolicies/%s", defaultApiVersion) +} diff --git a/resource-manager/network/2024-01-01/webcategories/README.md b/resource-manager/network/2024-01-01/webcategories/README.md new file mode 100644 index 00000000000..b7710633a1d --- /dev/null +++ b/resource-manager/network/2024-01-01/webcategories/README.md @@ -0,0 +1,54 @@ + +## `github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/webcategories` Documentation + +The `webcategories` SDK allows for interaction with the Azure Resource Manager Service `network` (API Version `2024-01-01`). + +This readme covers example usages, but further information on [using this SDK can be found in the project root](https://github.com/hashicorp/go-azure-sdk/tree/main/docs). + +### Import Path + +```go +import "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" +import "github.com/hashicorp/go-azure-sdk/resource-manager/network/2024-01-01/webcategories" +``` + + +### Client Initialization + +```go +client := webcategories.NewWebCategoriesClientWithBaseURI("https://management.azure.com") +client.Client.Authorizer = authorizer +``` + + +### Example Usage: `WebCategoriesClient.Get` + +```go +ctx := context.TODO() +id := webcategories.NewAzureWebCategoryID("12345678-1234-9876-4563-123456789012", "azureWebCategoryValue") + +read, err := client.Get(ctx, id, webcategories.DefaultGetOperationOptions()) +if err != nil { + // handle the error +} +if model := read.Model; model != nil { + // do something with the model/response object +} +``` + + +### Example Usage: `WebCategoriesClient.ListBySubscription` + +```go +ctx := context.TODO() +id := commonids.NewSubscriptionID("12345678-1234-9876-4563-123456789012") + +// alternatively `client.ListBySubscription(ctx, id)` can be used to do batched pagination +items, err := client.ListBySubscriptionComplete(ctx, id) +if err != nil { + // handle the error +} +for _, item := range items { + // do something +} +``` diff --git a/resource-manager/network/2024-01-01/webcategories/client.go b/resource-manager/network/2024-01-01/webcategories/client.go new file mode 100644 index 00000000000..075aa15b06b --- /dev/null +++ b/resource-manager/network/2024-01-01/webcategories/client.go @@ -0,0 +1,26 @@ +package webcategories + +import ( + "fmt" + + "github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager" + sdkEnv "github.com/hashicorp/go-azure-sdk/sdk/environments" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type WebCategoriesClient struct { + Client *resourcemanager.Client +} + +func NewWebCategoriesClientWithBaseURI(sdkApi sdkEnv.Api) (*WebCategoriesClient, error) { + client, err := resourcemanager.NewResourceManagerClient(sdkApi, "webcategories", defaultApiVersion) + if err != nil { + return nil, fmt.Errorf("instantiating WebCategoriesClient: %+v", err) + } + + return &WebCategoriesClient{ + Client: client, + }, nil +} diff --git a/resource-manager/network/2024-01-01/webcategories/id_azurewebcategory.go b/resource-manager/network/2024-01-01/webcategories/id_azurewebcategory.go new file mode 100644 index 00000000000..1417d2f6d85 --- /dev/null +++ b/resource-manager/network/2024-01-01/webcategories/id_azurewebcategory.go @@ -0,0 +1,121 @@ +package webcategories + +import ( + "fmt" + "strings" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/recaser" + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +func init() { + recaser.RegisterResourceId(&AzureWebCategoryId{}) +} + +var _ resourceids.ResourceId = &AzureWebCategoryId{} + +// AzureWebCategoryId is a struct representing the Resource ID for a Azure Web Category +type AzureWebCategoryId struct { + SubscriptionId string + AzureWebCategoryName string +} + +// NewAzureWebCategoryID returns a new AzureWebCategoryId struct +func NewAzureWebCategoryID(subscriptionId string, azureWebCategoryName string) AzureWebCategoryId { + return AzureWebCategoryId{ + SubscriptionId: subscriptionId, + AzureWebCategoryName: azureWebCategoryName, + } +} + +// ParseAzureWebCategoryID parses 'input' into a AzureWebCategoryId +func ParseAzureWebCategoryID(input string) (*AzureWebCategoryId, error) { + parser := resourceids.NewParserFromResourceIdType(&AzureWebCategoryId{}) + parsed, err := parser.Parse(input, false) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := AzureWebCategoryId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +// ParseAzureWebCategoryIDInsensitively parses 'input' case-insensitively into a AzureWebCategoryId +// note: this method should only be used for API response data and not user input +func ParseAzureWebCategoryIDInsensitively(input string) (*AzureWebCategoryId, error) { + parser := resourceids.NewParserFromResourceIdType(&AzureWebCategoryId{}) + parsed, err := parser.Parse(input, true) + if err != nil { + return nil, fmt.Errorf("parsing %q: %+v", input, err) + } + + id := AzureWebCategoryId{} + if err := id.FromParseResult(*parsed); err != nil { + return nil, err + } + + return &id, nil +} + +func (id *AzureWebCategoryId) FromParseResult(input resourceids.ParseResult) error { + var ok bool + + if id.SubscriptionId, ok = input.Parsed["subscriptionId"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", input) + } + + if id.AzureWebCategoryName, ok = input.Parsed["azureWebCategoryName"]; !ok { + return resourceids.NewSegmentNotSpecifiedError(id, "azureWebCategoryName", input) + } + + return nil +} + +// ValidateAzureWebCategoryID checks that 'input' can be parsed as a Azure Web Category ID +func ValidateAzureWebCategoryID(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 := ParseAzureWebCategoryID(v); err != nil { + errors = append(errors, err) + } + + return +} + +// ID returns the formatted Azure Web Category ID +func (id AzureWebCategoryId) ID() string { + fmtString := "/subscriptions/%s/providers/Microsoft.Network/azureWebCategories/%s" + return fmt.Sprintf(fmtString, id.SubscriptionId, id.AzureWebCategoryName) +} + +// Segments returns a slice of Resource ID Segments which comprise this Azure Web Category ID +func (id AzureWebCategoryId) Segments() []resourceids.Segment { + return []resourceids.Segment{ + resourceids.StaticSegment("staticSubscriptions", "subscriptions", "subscriptions"), + resourceids.SubscriptionIdSegment("subscriptionId", "12345678-1234-9876-4563-123456789012"), + resourceids.StaticSegment("staticProviders", "providers", "providers"), + resourceids.ResourceProviderSegment("staticMicrosoftNetwork", "Microsoft.Network", "Microsoft.Network"), + resourceids.StaticSegment("staticAzureWebCategories", "azureWebCategories", "azureWebCategories"), + resourceids.UserSpecifiedSegment("azureWebCategoryName", "azureWebCategoryValue"), + } +} + +// String returns a human-readable description of this Azure Web Category ID +func (id AzureWebCategoryId) String() string { + components := []string{ + fmt.Sprintf("Subscription: %q", id.SubscriptionId), + fmt.Sprintf("Azure Web Category Name: %q", id.AzureWebCategoryName), + } + return fmt.Sprintf("Azure Web Category (%s)", strings.Join(components, "\n")) +} diff --git a/resource-manager/network/2024-01-01/webcategories/id_azurewebcategory_test.go b/resource-manager/network/2024-01-01/webcategories/id_azurewebcategory_test.go new file mode 100644 index 00000000000..ba8e348767d --- /dev/null +++ b/resource-manager/network/2024-01-01/webcategories/id_azurewebcategory_test.go @@ -0,0 +1,237 @@ +package webcategories + +import ( + "testing" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +var _ resourceids.ResourceId = &AzureWebCategoryId{} + +func TestNewAzureWebCategoryID(t *testing.T) { + id := NewAzureWebCategoryID("12345678-1234-9876-4563-123456789012", "azureWebCategoryValue") + + if id.SubscriptionId != "12345678-1234-9876-4563-123456789012" { + t.Fatalf("Expected %q but got %q for Segment 'SubscriptionId'", id.SubscriptionId, "12345678-1234-9876-4563-123456789012") + } + + if id.AzureWebCategoryName != "azureWebCategoryValue" { + t.Fatalf("Expected %q but got %q for Segment 'AzureWebCategoryName'", id.AzureWebCategoryName, "azureWebCategoryValue") + } +} + +func TestFormatAzureWebCategoryID(t *testing.T) { + actual := NewAzureWebCategoryID("12345678-1234-9876-4563-123456789012", "azureWebCategoryValue").ID() + expected := "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/azureWebCategories/azureWebCategoryValue" + if actual != expected { + t.Fatalf("Expected the Formatted ID to be %q but got %q", expected, actual) + } +} + +func TestParseAzureWebCategoryID(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *AzureWebCategoryId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/azureWebCategories", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/azureWebCategories/azureWebCategoryValue", + Expected: &AzureWebCategoryId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + AzureWebCategoryName: "azureWebCategoryValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/azureWebCategories/azureWebCategoryValue/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseAzureWebCategoryID(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.AzureWebCategoryName != v.Expected.AzureWebCategoryName { + t.Fatalf("Expected %q but got %q for AzureWebCategoryName", v.Expected.AzureWebCategoryName, actual.AzureWebCategoryName) + } + + } +} + +func TestParseAzureWebCategoryIDInsensitively(t *testing.T) { + testData := []struct { + Input string + Error bool + Expected *AzureWebCategoryId + }{ + { + // Incomplete URI + Input: "", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk", + Error: true, + }, + { + // Incomplete URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/azureWebCategories", + Error: true, + }, + { + // Incomplete URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/aZuReWeBcAtEgOrIeS", + Error: true, + }, + { + // Valid URI + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/azureWebCategories/azureWebCategoryValue", + Expected: &AzureWebCategoryId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + AzureWebCategoryName: "azureWebCategoryValue", + }, + }, + { + // Invalid (Valid Uri with Extra segment) + Input: "/subscriptions/12345678-1234-9876-4563-123456789012/providers/Microsoft.Network/azureWebCategories/azureWebCategoryValue/extra", + Error: true, + }, + { + // Valid URI (mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/aZuReWeBcAtEgOrIeS/aZuReWeBcAtEgOrYvAlUe", + Expected: &AzureWebCategoryId{ + SubscriptionId: "12345678-1234-9876-4563-123456789012", + AzureWebCategoryName: "aZuReWeBcAtEgOrYvAlUe", + }, + }, + { + // Invalid (Valid Uri with Extra segment - mIxEd CaSe since this is insensitive) + Input: "/sUbScRiPtIoNs/12345678-1234-9876-4563-123456789012/pRoViDeRs/mIcRoSoFt.nEtWoRk/aZuReWeBcAtEgOrIeS/aZuReWeBcAtEgOrYvAlUe/extra", + Error: true, + }, + } + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Input) + + actual, err := ParseAzureWebCategoryIDInsensitively(v.Input) + if err != nil { + if v.Error { + continue + } + + t.Fatalf("Expect a value but got an error: %+v", 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.AzureWebCategoryName != v.Expected.AzureWebCategoryName { + t.Fatalf("Expected %q but got %q for AzureWebCategoryName", v.Expected.AzureWebCategoryName, actual.AzureWebCategoryName) + } + + } +} + +func TestSegmentsForAzureWebCategoryId(t *testing.T) { + segments := AzureWebCategoryId{}.Segments() + if len(segments) == 0 { + t.Fatalf("AzureWebCategoryId has no segments") + } + + uniqueNames := make(map[string]struct{}, 0) + for _, segment := range segments { + uniqueNames[segment.Name] = struct{}{} + } + if len(uniqueNames) != len(segments) { + t.Fatalf("Expected the Segments to be unique but got %q unique segments and %d total segments", len(uniqueNames), len(segments)) + } +} diff --git a/resource-manager/network/2024-01-01/webcategories/method_get.go b/resource-manager/network/2024-01-01/webcategories/method_get.go new file mode 100644 index 00000000000..9038c189875 --- /dev/null +++ b/resource-manager/network/2024-01-01/webcategories/method_get.go @@ -0,0 +1,83 @@ +package webcategories + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type GetOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *AzureWebCategory +} + +type GetOperationOptions struct { + Expand *string +} + +func DefaultGetOperationOptions() GetOperationOptions { + return GetOperationOptions{} +} + +func (o GetOperationOptions) ToHeaders() *client.Headers { + out := client.Headers{} + + return &out +} + +func (o GetOperationOptions) ToOData() *odata.Query { + out := odata.Query{} + return &out +} + +func (o GetOperationOptions) ToQuery() *client.QueryParams { + out := client.QueryParams{} + if o.Expand != nil { + out.Append("$expand", fmt.Sprintf("%v", *o.Expand)) + } + return &out +} + +// Get ... +func (c WebCategoriesClient) Get(ctx context.Context, id AzureWebCategoryId, options GetOperationOptions) (result GetOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: id.ID(), + OptionsObject: options, + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.Execute(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var model AzureWebCategory + result.Model = &model + + if err = resp.Unmarshal(result.Model); err != nil { + return + } + + return +} diff --git a/resource-manager/network/2024-01-01/webcategories/method_listbysubscription.go b/resource-manager/network/2024-01-01/webcategories/method_listbysubscription.go new file mode 100644 index 00000000000..4a3e7f4445b --- /dev/null +++ b/resource-manager/network/2024-01-01/webcategories/method_listbysubscription.go @@ -0,0 +1,93 @@ +package webcategories + +import ( + "context" + "fmt" + "net/http" + + "github.com/hashicorp/go-azure-helpers/resourcemanager/commonids" + "github.com/hashicorp/go-azure-sdk/sdk/client" + "github.com/hashicorp/go-azure-sdk/sdk/odata" +) + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type ListBySubscriptionOperationResponse struct { + HttpResponse *http.Response + OData *odata.OData + Model *[]AzureWebCategory +} + +type ListBySubscriptionCompleteResult struct { + LatestHttpResponse *http.Response + Items []AzureWebCategory +} + +// ListBySubscription ... +func (c WebCategoriesClient) ListBySubscription(ctx context.Context, id commonids.SubscriptionId) (result ListBySubscriptionOperationResponse, err error) { + opts := client.RequestOptions{ + ContentType: "application/json; charset=utf-8", + ExpectedStatusCodes: []int{ + http.StatusOK, + }, + HttpMethod: http.MethodGet, + Path: fmt.Sprintf("%s/providers/Microsoft.Network/azureWebCategories", id.ID()), + } + + req, err := c.Client.NewRequest(ctx, opts) + if err != nil { + return + } + + var resp *client.Response + resp, err = req.ExecutePaged(ctx) + if resp != nil { + result.OData = resp.OData + result.HttpResponse = resp.Response + } + if err != nil { + return + } + + var values struct { + Values *[]AzureWebCategory `json:"value"` + } + if err = resp.Unmarshal(&values); err != nil { + return + } + + result.Model = values.Values + + return +} + +// ListBySubscriptionComplete retrieves all the results into a single object +func (c WebCategoriesClient) ListBySubscriptionComplete(ctx context.Context, id commonids.SubscriptionId) (ListBySubscriptionCompleteResult, error) { + return c.ListBySubscriptionCompleteMatchingPredicate(ctx, id, AzureWebCategoryOperationPredicate{}) +} + +// ListBySubscriptionCompleteMatchingPredicate retrieves all the results and then applies the predicate +func (c WebCategoriesClient) ListBySubscriptionCompleteMatchingPredicate(ctx context.Context, id commonids.SubscriptionId, predicate AzureWebCategoryOperationPredicate) (result ListBySubscriptionCompleteResult, err error) { + items := make([]AzureWebCategory, 0) + + resp, err := c.ListBySubscription(ctx, id) + if err != nil { + result.LatestHttpResponse = resp.HttpResponse + err = fmt.Errorf("loading results: %+v", err) + return + } + if resp.Model != nil { + for _, v := range *resp.Model { + if predicate.Matches(v) { + items = append(items, v) + } + } + } + + result = ListBySubscriptionCompleteResult{ + LatestHttpResponse: resp.HttpResponse, + Items: items, + } + return +} diff --git a/resource-manager/network/2024-01-01/webcategories/model_azurewebcategory.go b/resource-manager/network/2024-01-01/webcategories/model_azurewebcategory.go new file mode 100644 index 00000000000..81fe8aa1777 --- /dev/null +++ b/resource-manager/network/2024-01-01/webcategories/model_azurewebcategory.go @@ -0,0 +1,12 @@ +package webcategories + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureWebCategory struct { + Etag *string `json:"etag,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Properties *AzureWebCategoryPropertiesFormat `json:"properties,omitempty"` + Type *string `json:"type,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webcategories/model_azurewebcategorypropertiesformat.go b/resource-manager/network/2024-01-01/webcategories/model_azurewebcategorypropertiesformat.go new file mode 100644 index 00000000000..7e327867064 --- /dev/null +++ b/resource-manager/network/2024-01-01/webcategories/model_azurewebcategorypropertiesformat.go @@ -0,0 +1,8 @@ +package webcategories + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureWebCategoryPropertiesFormat struct { + Group *string `json:"group,omitempty"` +} diff --git a/resource-manager/network/2024-01-01/webcategories/predicates.go b/resource-manager/network/2024-01-01/webcategories/predicates.go new file mode 100644 index 00000000000..ab82b0c92b5 --- /dev/null +++ b/resource-manager/network/2024-01-01/webcategories/predicates.go @@ -0,0 +1,32 @@ +package webcategories + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +type AzureWebCategoryOperationPredicate struct { + Etag *string + Id *string + Name *string + Type *string +} + +func (p AzureWebCategoryOperationPredicate) Matches(input AzureWebCategory) bool { + + if p.Etag != nil && (input.Etag == nil || *p.Etag != *input.Etag) { + return false + } + + if p.Id != nil && (input.Id == nil || *p.Id != *input.Id) { + return false + } + + if p.Name != nil && (input.Name == nil || *p.Name != *input.Name) { + return false + } + + if p.Type != nil && (input.Type == nil || *p.Type != *input.Type) { + return false + } + + return true +} diff --git a/resource-manager/network/2024-01-01/webcategories/version.go b/resource-manager/network/2024-01-01/webcategories/version.go new file mode 100644 index 00000000000..5229aba8eb8 --- /dev/null +++ b/resource-manager/network/2024-01-01/webcategories/version.go @@ -0,0 +1,12 @@ +package webcategories + +import "fmt" + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See NOTICE.txt in the project root for license information. + +const defaultApiVersion = "2024-01-01" + +func userAgent() string { + return fmt.Sprintf("hashicorp/go-azure-sdk/webcategories/%s", defaultApiVersion) +}