internal/services/parse/user_assigned_identity.go (51 lines of code) (raw):
package parse
import (
"fmt"
"strings"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/arm"
)
type UserAssignedIdentitiesId struct {
SubscriptionId string
ResourceGroup string
UserAssignedIdentityName string
}
func NewUserAssignedIdentitiesID(subscriptionId, resourceGroup, userAssignedIdentityName string) UserAssignedIdentitiesId {
return UserAssignedIdentitiesId{
SubscriptionId: subscriptionId,
ResourceGroup: resourceGroup,
UserAssignedIdentityName: userAssignedIdentityName,
}
}
func (id UserAssignedIdentitiesId) String() string {
segments := []string{
fmt.Sprintf("User Assigned Identity Name %q", id.UserAssignedIdentityName),
fmt.Sprintf("Resource Group %q", id.ResourceGroup),
}
segmentsStr := strings.Join(segments, " / ")
return fmt.Sprintf("%s: (%s)", "User Assigned Identities", segmentsStr)
}
func (id UserAssignedIdentitiesId) ID() string {
fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.ManagedIdentity/userAssignedIdentities/%s"
return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroup, id.UserAssignedIdentityName)
}
// UserAssignedIdentitiesID parses a UserAssignedIdentities ID into an UserAssignedIdentitiesId struct
func UserAssignedIdentitiesID(input string) (*UserAssignedIdentitiesId, error) {
id, err := arm.ParseResourceID(input)
if err != nil {
return nil, err
}
if id.ResourceType.String() != "Microsoft.ManagedIdentity/userAssignedIdentities" {
return nil, fmt.Errorf("expected resource type to be 'Microsoft.ManagedIdentity/userAssignedIdentities', got %q", id.ResourceType.String())
}
resourceId := UserAssignedIdentitiesId{
SubscriptionId: id.SubscriptionID,
ResourceGroup: id.ResourceGroupName,
UserAssignedIdentityName: id.Name,
}
if resourceId.SubscriptionId == "" {
return nil, fmt.Errorf("ID was missing the 'subscriptions' element")
}
if resourceId.ResourceGroup == "" {
return nil, fmt.Errorf("ID was missing the 'resourceGroups' element")
}
return &resourceId, nil
}