def create_role_assignment()

in util/deploy_moe.py [0:0]


def create_role_assignment(scope, role_name, principal_id):
    
    try:

        # Get credential
        credential = DefaultAzureCredential()

        # Instantiate the authorization management client
        auth_client = AuthorizationManagementClient(
            credential=credential,
            subscription_id=client.subscription_id
            )
        
        roles = list(auth_client.role_definitions.list(
            scope,
            filter="roleName eq '{}'".format(role_name)))
        
        assert len(roles) == 1
        role = roles[0]
        
        # Create role assignment properties
        parameters = RoleAssignmentCreateParameters(
            role_definition_id=role.id,
            principal_id=principal_id,
            principal_type="ServicePrincipal"
            )
    
        # Create role assignment
        role_assignment = auth_client.role_assignments.create(
            scope=scope,
            role_assignment_name=str(uuid4()),
            parameters=parameters
        )
    except ResourceExistsError:
        print("Role assignment already exists.")
    except Exception as e:
        print(f"An error occurred during role assignment: {e}")