Skip to content

Module Architecture

flowchart TD
    TRIAL["sadeem_subscription_trial\nTrial Base"]
    DOCKER["sadeem_saas_docker\nDocker SAAS"]

    PKG["sadeem.subscription.trial.package (inherit)\nDocker image · worker count\nCPU/real time limits · without demo"]
    IMGTAG["sadeem.portainer.image.tag\nDocker image version\nstrategy: sequence or lowest usage"]
    ENV["sadeem.portainer.environment\nauto-selected Portainer environment\nby get_best_environment()"]
    SUB["sadeem.subscription\ntype=docker\nimage + ports auto-populated"]

    TRIAL --> PKG
    DOCKER --> PKG

    PKG --> IMGTAG
    IMGTAG --> A1([get_best_environment\nselect Portainer env by capacity])
    A1 --> ENV

    PKG --> A2([action_create_subscription override\napply Docker image + worker fields])
    A2 --> SUB

    ENV --> A3([_apply_environment_defaults\nset IP · ports · domain · Nginx · Cloudflare])
    A3 --> SUB

    SUB --> A4([action_confirm\nauto-assign ports + deploy stack])

    EXT[/Portainer API\nDocker stack deploy/]
    A4 --> EXT

Module Description

SAAS Subscription Trial - Docker Extension. Adds Docker image configuration to trial packages, enabling trial subscriptions to be deployed as Docker containers.

Dependencies

  • sadeem_subscription_trial
  • sadeem_saas_docker

Extension

This module extends the trial package with Docker-specific fields. When the subscription type is set to docker, the trial system uses the Docker image to auto-select the best Portainer environment and deploy a container.

Additional Trial Package Fields

  1. Subscription Type - Extended with Docker option
  2. Docker Image - Portainer image for trial subscriptions (required when type is docker)
  3. Docker Worker Count - Number of Odoo workers (default: 0 = threaded mode)
  4. Without Demo - Create database without demo data (default: True)
  5. Limit Time CPU - Max CPU time per request in seconds (default: 60)
  6. Limit Time Real - Max real time per request in seconds (default: 120)

How It Works

  1. Trial package is configured with type Docker and a Docker image
  2. Customer submits trial form
  3. System creates trial request and subscription
  4. The Docker image's get_best_environment() selects the optimal Portainer environment
  5. All environment-related fields (IP, ports, domain, Cloudflare, Nginx) are auto-populated
  6. Subscription is confirmed and a Docker stack is created in Portainer

Key Fields

Trial Package — Docker additions (sadeem.subscription.trial.package inherit)

Field Type Description
subscription_type Selection Extended with ('docker', 'Docker')
docker_image_id Many2one Default Portainer image for Docker trial subscriptions
docker_worker_count Integer Number of Odoo workers (0 = threaded; default: 0)
docker_without_demo Boolean Create database without demo data (default: True)
docker_limit_time_cpu Integer Max CPU time per request in seconds (default: 60)
docker_limit_time_real Integer Max real time per request in seconds (default: 120)

Key Actions

Action Model Description
action_create_subscription (override) sadeem.subscription.trial.requests Creates subscription with Docker image and worker settings from the trial package
_onchange_docker_image_trial sadeem.subscription (inherit) Applies Docker environment defaults (_apply_docker_image_defaults) after subscription creation

Warnings & Important Notes

  • Docker image required: If subscription_type = 'docker' and no docker_image_id is set, the system will not be able to select an environment and provisioning will fail.
  • No new models: This module only inherits and extends existing models — it adds no new persistent models.
  • subscription_type cleared: @api.onchange clears docker_image_id when switching away from docker type.