Add Duo nano support to new namespace provision API endpoint

What does this MR do and why?

Prior to this change, Duo Nano support was added to the namespace subscription add-on purchases API endpoint (MR). The new namespace provision API endpoint that handles a namespace's provisioning via a single API endpoint wasn't updated with a similar change.

This change updates the new namespace provision API endpoint to support the Duo Nano add-on during provisioning.

References

Part of [Provision alignment] Add Duo Nano support to n... (#534674 - closed)

Screenshots or screen recordings

TBU

How to set up and validate locally

  1. GDK/GL: Create a new group and copy its ID.
  2. CDot: Open the Rails console.
  3. CDot: Build the provision params to sync Duo Nano to the created group:
    provision_params = { provision: { add_on_purchases: { duo_nano: [{ quantity: 10, started_on: '2025-04-08', expires_on: '2025-05-08', purchase_xid: 'manual_sync', trial: false }] } } }
  4. CDot: Sync the Duo Nano add-on to the group:
    Provisions::Gitlab::Namespaces::SyncRequestService.new(namespace_id: <group ID>, provision_params: provision_params).execute
  5. GDK/GL: Open the Rails console and verify Duo Nano was provisioned:
    GitlabSubscriptions::AddOnPurchase.where(namespace_id: <group ID>)

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Corinna Gogolok

Merge request reports

Loading