function validateReferenceIdentities()

in src/Utils/YamlValidationUtil.ts [232:260]


function validateReferenceIdentities(referenceIdentities: Array<any>) : ValidationModel {
    for(let referenceIdentity of referenceIdentities){        
        if(!isDictionary(referenceIdentity)){
            return {valid : false, error : `The value "${referenceIdentity.toString()}" for referenceIdentities is invalid. Provide a valid dictionary with kind, value and type.`};
        }
        if(referenceIdentity.value != undefined && typeof referenceIdentity.value != 'string'){
            return {valid : false, error : `The value "${referenceIdentity.value.toString()}" for id in referenceIdentities is invalid. Provide a valid string.`};
        }
        if(referenceIdentity.type != undefined && typeof referenceIdentity.type != 'string'){
            return {valid : false, error : `The value "${referenceIdentity.type.toString()}" for type in referenceIdentities is invalid. Allowed values are "SystemAssigned" and "UserAssigned".`};
        }
        if(!isValidReferenceIdentityKind(referenceIdentity.kind)){
            return {valid : false, error : `The value "${referenceIdentity.kind}" for kind in referenceIdentity is invalid. Allowed values are 'Metrics', 'Keyvault' and 'Engine'.`};
        }
        if(referenceIdentity.type && !isValidManagedIdentityType(referenceIdentity.type)){
            return {valid : false, error : `The value "${referenceIdentity.type}" for type in referenceIdentities is invalid. Allowed values are "SystemAssigned" and "UserAssigned".`};
        }
        if(!isNullOrUndefined(referenceIdentity.value) && referenceIdentity.type == ManagedIdentityType.SystemAssigned){
            return {valid : false, error : `The "reference identity value" should omitted or set to null when using the "SystemAssigned" identity type.`};
        }
        if(isNullOrUndefined(referenceIdentity.value) && referenceIdentity.type == ManagedIdentityType.UserAssigned){
            return {valid : false, error : `The value for 'referenceIdentity value' cannot be null when using the 'UserAssigned' identity type. Provide a valid identity reference for 'reference identity value'.`};
        }
        if(referenceIdentity.value && isInvalidManagedIdentityId(referenceIdentity.value)){
            return {valid : false, error : `The value "${referenceIdentity.value}" for reference identity is invalid. The value should be a string of the format: "/subscriptions/{subsId}/resourceGroups/{rgName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}".`};
        }
    }
    return {valid : true, error : ""};
}