Skip to content

Commit

Permalink
Support User Assigned Managed Identity on API Management
Browse files Browse the repository at this point in the history
Signed-off-by: Sune Keller <absukl@almbrand.dk>
  • Loading branch information
sirlatrom committed May 5, 2020
1 parent ad5bedf commit bfaebd1
Showing 1 changed file with 34 additions and 3 deletions.
Expand Up @@ -89,7 +89,8 @@ func resourceArmApiManagementService() *schema.Resource {
Type: schema.TypeString,
Required: true,
ValidateFunc: validation.StringInSlice([]string{
"SystemAssigned",
string(apimanagement.SystemAssigned),
string(apimanagement.UserAssigned),
}, false),
},
"principal_id": {
Expand All @@ -100,6 +101,15 @@ func resourceArmApiManagementService() *schema.Resource {
Type: schema.TypeString,
Computed: true,
},
"identity_ids": {
Type: schema.TypeList,
Optional: true,
MinItems: 1,
Elem: &schema.Schema{
Type: schema.TypeString,
ValidateFunc: validation.NoZeroValues,
},
},
},
},
},
Expand Down Expand Up @@ -902,14 +912,27 @@ func flattenApiManagementAdditionalLocations(input *[]apimanagement.AdditionalLo
func expandAzureRmApiManagementIdentity(d *schema.ResourceData) *apimanagement.ServiceIdentity {
vs := d.Get("identity").([]interface{})
if len(vs) == 0 {
return nil
return &apimanagement.ServiceIdentity{
Type: apimanagement.None,
}
}

v := vs[0].(map[string]interface{})
identityType := v["type"].(string)
return &apimanagement.ServiceIdentity{

identityIds := make(map[string]*apimanagement.UserIdentityProperties)
for _, id := range v["identity_ids"].([]interface{}) {
identityIds[id.(string)] = &apimanagement.UserIdentityProperties{}
}
managedServiceIdentity := apimanagement.ServiceIdentity{
Type: apimanagement.ApimIdentityType(identityType),
}

if managedServiceIdentity.Type == apimanagement.UserAssigned || managedServiceIdentity.Type == apimanagement.SystemAssignedUserAssigned {
managedServiceIdentity.UserAssignedIdentities = identityIds
}

return &managedServiceIdentity
}

func flattenAzureRmApiManagementMachineIdentity(identity *apimanagement.ServiceIdentity) []interface{} {
Expand All @@ -929,6 +952,14 @@ func flattenAzureRmApiManagementMachineIdentity(identity *apimanagement.ServiceI
result["tenant_id"] = identity.TenantID.String()
}

identityIds := make([]string, 0)
if identity.UserAssignedIdentities != nil {
for key := range identity.UserAssignedIdentities {
identityIds = append(identityIds, key)
}
result["identity_ids"] = identityIds
}

return []interface{}{result}
}

Expand Down

0 comments on commit bfaebd1

Please sign in to comment.