Skip to content

Commit

Permalink
The LinkedUserAssignedIdentity is always unmanaged.
Browse files Browse the repository at this point in the history
  • Loading branch information
ninjarobot committed Sep 28, 2022
1 parent 00fe027 commit 667d0e8
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 19 deletions.
8 changes: 4 additions & 4 deletions src/Farmer/Arm/ContainerInstance.fs
Original file line number Diff line number Diff line change
Expand Up @@ -396,10 +396,10 @@ type ContainerGroup =
username = String.Empty
password = null
identity =
if cred.Identity.Dependencies.Length > 0 then
cred.Identity.Dependencies.Head.ArmExpression.Eval()
else
null
cred.Identity.UserAssigned
|> List.tryHead
|> Option.map (fun upn -> upn.ResourceId.ArmExpression.Eval())
|> Option.defaultValue null
|})
ipAddress =
match this.IpAddress with
Expand Down
3 changes: 1 addition & 2 deletions src/Farmer/Builders/Builders.UserAssignedIdentity.fs
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,7 @@ module Extensions =

[<CustomOperation "link_to_identity">]
member this.LinkToIdentity(state: 'TConfig, resourceId: ResourceId) =
let linkedResource = (LinkedResource.Unmanaged resourceId)
let userAssignedIdentity = (LinkedUserAssignedIdentity linkedResource)
let userAssignedIdentity = LinkedUserAssignedIdentity resourceId
this.Add state (fun current -> current + userAssignedIdentity)

member this.LinkToIdentity(state, identity: UserAssignedIdentityConfig) =
Expand Down
11 changes: 4 additions & 7 deletions src/Farmer/Common.fs
Original file line number Diff line number Diff line change
Expand Up @@ -1834,14 +1834,13 @@ module Identity =
/// Represents a User Assigned Identity, and the ability to create a Principal Id from it.
type UserAssignedIdentity =
| UserAssignedIdentity of ResourceId
| LinkedUserAssignedIdentity of LinkedResource
| LinkedUserAssignedIdentity of ResourceId

member private this.CreateExpression field =
let resourceId =
match this with
| UserAssignedIdentity rid -> rid
| LinkedUserAssignedIdentity (Managed rid) -> rid
| LinkedUserAssignedIdentity (Unmanaged rid) -> rid
| LinkedUserAssignedIdentity rid -> rid

ArmExpression
.create($"reference({resourceId.ArmExpression.Value}).%s{field}")
Expand All @@ -1853,8 +1852,7 @@ module Identity =
member this.ResourceId =
match this with
| UserAssignedIdentity rid -> rid
| LinkedUserAssignedIdentity (Managed rid) -> rid
| LinkedUserAssignedIdentity (Unmanaged rid) -> rid
| LinkedUserAssignedIdentity rid -> rid

type SystemIdentity =
| SystemIdentity of ResourceId
Expand Down Expand Up @@ -1885,8 +1883,7 @@ module Identity =
|> List.choose (fun identity ->
match identity with
| UserAssignedIdentity rid -> Some rid
| LinkedUserAssignedIdentity (Managed rid) -> Some rid
| LinkedUserAssignedIdentity (Unmanaged _) -> None
| LinkedUserAssignedIdentity _ -> None
)

static member Empty =
Expand Down
4 changes: 2 additions & 2 deletions src/Farmer/IdentityExtensions.fs
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,12 @@ module ManagedIdentityExtensions =
| Managed rid ->
{
SystemAssigned = Disabled
UserAssigned = [ LinkedUserAssignedIdentity(LinkedResource.Managed rid) ]
UserAssigned = [ LinkedUserAssignedIdentity rid ]
}
| Unmanaged rid ->
{
SystemAssigned = Disabled
UserAssigned = [ LinkedUserAssignedIdentity(LinkedResource.Unmanaged rid) ]
UserAssigned = [ LinkedUserAssignedIdentity rid ]
}

/// Creates a resource identity from a resource name
Expand Down
7 changes: 3 additions & 4 deletions src/Tests/ContainerGroup.fs
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ let tests =
let resourceId =
ResourceId.create (ManagedIdentity.userAssignedIdentities, ResourceName "user", "resourceGroup")

let userAssignedIdentity = LinkedUserAssignedIdentity(LinkedResource.Managed resourceId)
let userAssignedIdentity = LinkedUserAssignedIdentity resourceId

let managedIdentity =
{ ManagedIdentity.Empty with
Expand Down Expand Up @@ -371,10 +371,9 @@ let tests =

Expect.equal
credentials.Identity
(managedIdentity.Dependencies.Head.ArmExpression.Eval())
(managedIdentity.UserAssigned.Head.ResourceId.ArmExpression.Eval())
"Incorrect container image registry identity"

Expect.equal managedIdentity.Dependencies.Length 1 "Managed identity should have at least 1 dependency"
Expect.notEqual credentials.Identity null "Identity should not be null"
Expect.notEqual credentials.Identity String.Empty "Identity should not be an empty string"

Expand Down Expand Up @@ -1281,7 +1280,7 @@ async {
ResourceId.create (ManagedIdentity.userAssignedIdentities, ResourceName "user", "resourceGroup")

let userAssignedIdentity =
resourceId |> LinkedResource.Managed |> LinkedUserAssignedIdentity
resourceId |> LinkedUserAssignedIdentity

let managedIdentity: Identity.ManagedIdentity =
{ ManagedIdentity.Empty with
Expand Down

0 comments on commit 667d0e8

Please sign in to comment.