Specification Website Sale Kubernetes Subscription OCA
Context: Odoo shop for mint-cloud.ch
Goal: Extend website sale module so registered users can buy an Odoo App subscription that is automatically deployed to Kubernetes.
Repo: https://github.com/Mint-System/Odoo-Apps-Vertical-SaaS
Version: 18
Modules
Kubernetes Base
Name: kubernetes_base
depends: product
models:
classDiagram App --> ConfigMap ConfigMap --> KeyValue KeyValue --> ConfigValue App --> Namespace Manifest <-- ProductManifestRel ProductManifestRel --> Product Subscription <--> App Namespace --> ResPartner Product --> ConfigMap Namespace --> Environment Product --> Environment App --> Product ConfigMap <|--Secret Product --> Secret App --> Secret Secret --> KeyValue class App{ char name required char hostname required many2one namespace_id requried many2one subscription_line_id requried many2one environment_id related many2one product_id related many2one partner_id related many2many config_map_ids many2many secret_ids } class ResCompany{ char kubernetes_api_url char kubernetes_api_key char kubernetes_domain } class ConfigMap{ char name required bool is_template many2many key_value_ids } class Secret{ char name required bool is_template many2many key_value_ids } class KeyValue{ selection type required char key required text value required many2many value_ids required } class ConfigValue{ char value required } class Namespace{ char name required many2one partner_id required one2many app_ids required many2one environment_id required } class Environment{ char name required char code required } class ResPartner{ char name required } class Manifest{ char name required char url required one2many product_ids } class Product{ char name required bool kubernetes_ok many2one config_map_templ_id many2one secret_templ_id many2many manifest_ids many2many environment_ids } class ProductManifestRel{ one2many product_id one2many manifest_id int sequence } class Subscription{ char name required many2one app_id required } class SaleOrder{ char name required char app_name required }
description:
Add https://github.com/kubernetes-client/python Setup connection to Kubernetes cluster. Define deployment and service manifests. Setup product tab to select manifests. Manage config maps and apps. Applies the config map key values to the manifest files.
environments:
- prod: production
- int: integration
- test: testing
- dev: development
- upg: upgrade
kubernetes.app:
- name r4ts-int
- hostname: r4ts-int.mint-cloud.ch
- config_map_ids:
- KUBERNETES_ENVIRONMENT: int
- KUBERNETES_IMAGE: mintsystem:odoo-17.0.20241104
- KUBERNETES_GIT_REPOS: git@github.com/mint-cloud/r4ts.git
- KUBERNETES_PIP_INSTALL: fastapi
Products:
- Odoo Community Edition
- Odoo Enterprise Edition
Kubernetes Portal
Name: kubernetes_portal
depends: kubernetes_base,portal
description:
Add portal views to manage the Kubernetes app.
Subscription OCA Portal
Name: subscription_oca_portal
depends: subscription_oca,portal
\
description:
Basic portal view for oca subscriptions.
Website Sale Kubernetes Subscription OCA
Name: website_sale_kubernetes_subscription_oca
depends: website_sale,kubernetes_base,subscription_oca
description:
User can enter app name in checkout process. The (subscription) product is deployed to the Kubernetes cluster. An invitation mail with the credentials is sent to the customer.