Skip to content

AVD Add-on Configurator

Once you set up your AVD implementation, you need to connect it to your Schoolyear tenant. This can be done by installing the “Azure Virtual Desktop” add-on through your Schoolyear Admin Dashboard. Everything that can be configured for Schoolyear AVD, can be configured through this add-on.

This add-on can be installed multiple times if you want to connect multiple AVD implementation to your Schoolyear tenant.

The add-on configuration is split into two sections:

  • Azure integration: connect your Azure Tenant to your Schoolyear tenant.
  • Apps: configure the apps that teachers can choose from in the Settings Widget.

Azure Integration

  • Name: Name of the add-on installation, so you can find it back in your list of add-ons. This name is not visible to end-users.

  • Azure Tenant ID: The UUID of your Azure Tenant. This ID can be found under “Tenant Properties” in the Azure Portal.

  • Client ID: The “Client ID” of the App Registration that Schoolyear AVD can use to call APIs in your Azure Tenant. Once saved, this ID cannot be retrieved, only overwritten.

  • Client Secret: The client API secret of the App Registration that Schoolyear AVD can use to authenticate with Azure. Once saved, this secret cannot be retrieved, only overwritten.

  • OIDC Issuer: This field is automatically configured when you fill in the Azure Tenant ID. It must point to the OpenID Connect configuration of your Entra ID account.

  • Discovery TTL (time-to-live): The number of seconds for which the OpenID Connect configuration is cached.

  • Additional Scopes: Any additional oauth scopes that Schoolyear AVD should request when authenticating users. By default oidc and profile are configured. Both cannot be removed. You can configure up to 10 additional scopes.

Apps

For each add-on installation, you can configure up to 50 Apps. These Apps are made available to users in the Settings Widget.

  • Name: User-visible app name. Up to 100 characters.

  • Thumbnail URL (optional): URL of a thumbnail of the app. Up to 5000 characters. This URL must be publicly available and support embedding in other websites.

  • Max Duration: Maximum duration of an exam configured with this app in seconds. This does not include the deployment and deletion time of the exam.

  • Template Resource ID: The Resource ID of the Template Spec stored in your Azure Tenant that should be deployed for this app E.g. /subscriptions/b16fa059-2915-491f-8ca0-63dc1f92e4eb/resourceGroups/imagebuilder/providers/Microsoft.Resources/templateSpecs/python/versions/1.0.0

  • Azure Region: In which Azure region the Resource Group should be created. E.g. westeurope.

  • Deploy Duration (f(n) -> duration): An expression that returns the time that should be reserved ahead of the exam for the deployment job.

  • Deletion Duration (f(n) -> duration): An expression that returns the time that should be reserved after the exam for the deletion job.

  • Expected average # of student: An estimate of the number of students that typically would take part in an exam that uses this app. It is only used when evaluating the Deploy Duration and Deletion Duration expressions to provide an estimate to users before they specify the exact number of students.

  • Quota (multiple):

    • Name: The name of the quota. You can be of your choosing.
    • Value (f(n) -> int): An expression that calculates the required allocation of the quota.

Expression

Some of the properties above are “expressions”. This values may depend on the number of students partaking in the exam. These are essentially mathematical functions that dynamically calculate the correct value based on the variable n, which represents the number of students in the exam.

In practice, these expressions are usually nothing more than a constant value or a simple multiplication. However, for advanced use-cases, we support the full Expr language.

  • Simple example: 2*n. This expression multiplies the number of students by 2 and is a very common expression to calculate the number of vCPUs should be reserved.

  • Simple duration: duration("50m"). A constant expression, not dependent on the number of students.

  • Advanced: ceil(n/10). E.g. for cases in which you want to deploy a proxy for every 10 students that join the exam.

To test your expressions, you can use the Expr Playground. In the Env section of the playground you can set n: 10 to make the n variable available in your expression.