-
Notifications
You must be signed in to change notification settings - Fork 50
/
Copy pathid_scalingplan.go
127 lines (103 loc) · 4.53 KB
/
id_scalingplan.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
package scalingplan
import (
"fmt"
"strings"
"github.com/hashicorp/go-azure-helpers/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 = ScalingPlanId{}
// ScalingPlanId is a struct representing the Resource ID for a Scaling Plan
type ScalingPlanId struct {
SubscriptionId string
ResourceGroupName string
ScalingPlanName string
}
// NewScalingPlanID returns a new ScalingPlanId struct
func NewScalingPlanID(subscriptionId string, resourceGroupName string, scalingPlanName string) ScalingPlanId {
return ScalingPlanId{
SubscriptionId: subscriptionId,
ResourceGroupName: resourceGroupName,
ScalingPlanName: scalingPlanName,
}
}
// ParseScalingPlanID parses 'input' into a ScalingPlanId
func ParseScalingPlanID(input string) (*ScalingPlanId, error) {
parser := resourceids.NewParserFromResourceIdType(ScalingPlanId{})
parsed, err := parser.Parse(input, false)
if err != nil {
return nil, fmt.Errorf("parsing %q: %+v", input, err)
}
var ok bool
id := ScalingPlanId{}
if id.SubscriptionId, ok = parsed.Parsed["subscriptionId"]; !ok {
return nil, resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", *parsed)
}
if id.ResourceGroupName, ok = parsed.Parsed["resourceGroupName"]; !ok {
return nil, resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", *parsed)
}
if id.ScalingPlanName, ok = parsed.Parsed["scalingPlanName"]; !ok {
return nil, resourceids.NewSegmentNotSpecifiedError(id, "scalingPlanName", *parsed)
}
return &id, nil
}
// ParseScalingPlanIDInsensitively parses 'input' case-insensitively into a ScalingPlanId
// note: this method should only be used for API response data and not user input
func ParseScalingPlanIDInsensitively(input string) (*ScalingPlanId, error) {
parser := resourceids.NewParserFromResourceIdType(ScalingPlanId{})
parsed, err := parser.Parse(input, true)
if err != nil {
return nil, fmt.Errorf("parsing %q: %+v", input, err)
}
var ok bool
id := ScalingPlanId{}
if id.SubscriptionId, ok = parsed.Parsed["subscriptionId"]; !ok {
return nil, resourceids.NewSegmentNotSpecifiedError(id, "subscriptionId", *parsed)
}
if id.ResourceGroupName, ok = parsed.Parsed["resourceGroupName"]; !ok {
return nil, resourceids.NewSegmentNotSpecifiedError(id, "resourceGroupName", *parsed)
}
if id.ScalingPlanName, ok = parsed.Parsed["scalingPlanName"]; !ok {
return nil, resourceids.NewSegmentNotSpecifiedError(id, "scalingPlanName", *parsed)
}
return &id, nil
}
// ValidateScalingPlanID checks that 'input' can be parsed as a Scaling Plan ID
func ValidateScalingPlanID(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 := ParseScalingPlanID(v); err != nil {
errors = append(errors, err)
}
return
}
// ID returns the formatted Scaling Plan ID
func (id ScalingPlanId) ID() string {
fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.DesktopVirtualization/scalingPlans/%s"
return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroupName, id.ScalingPlanName)
}
// Segments returns a slice of Resource ID Segments which comprise this Scaling Plan ID
func (id ScalingPlanId) 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("staticMicrosoftDesktopVirtualization", "Microsoft.DesktopVirtualization", "Microsoft.DesktopVirtualization"),
resourceids.StaticSegment("staticScalingPlans", "scalingPlans", "scalingPlans"),
resourceids.UserSpecifiedSegment("scalingPlanName", "scalingPlanValue"),
}
}
// String returns a human-readable description of this Scaling Plan ID
func (id ScalingPlanId) String() string {
components := []string{
fmt.Sprintf("Subscription: %q", id.SubscriptionId),
fmt.Sprintf("Resource Group Name: %q", id.ResourceGroupName),
fmt.Sprintf("Scaling Plan Name: %q", id.ScalingPlanName),
}
return fmt.Sprintf("Scaling Plan (%s)", strings.Join(components, "\n"))
}