Models
Structure application models
classDiagram
direction TB
class OrganizationGroup {
+int id [PK]
+string name
+string uuid
+OrganizationGroup parent [FK]
}
class Customer {
+int id [PK]
+AutoCreatedField created
+AutoLastModifiedField modified
+image image
+string description
+string name
+string slug
+string uuid
+float latitude
+float longitude
+string vat_code
+string vat_name
+string vat_address
+string country
+string native_name
+string abbreviation
+string contact_details
+string agreement_number
+int sponsor_number
+string email
+string phone_number
+string access_subnets
+string backend_id
+string registration_code
+string homepage
+string domain
+string address
+string postal
+string bank_name
+string bank_account
+int max_service_accounts
+datetime accounting_start_date
+decimal default_tax_percent
+bool blocked
+bool archived
+Checklist project_metadata_checklist [FK]
+OrganizationGroup organization_groups
}
class ProjectType {
+int id [PK]
+string description
+string name
+string uuid
}
class Project {
+int id [PK]
+AutoCreatedField created
+AutoLastModifiedField modified
+bool is_removed
+image image
+string description
+string slug
+string uuid
+string backend_id
+int max_service_accounts
+string oecd_fos_2007_code
+string name
+date start_date
+date end_date
+User end_date_requested_by [FK]
+ProjectType type [FK]
+bool is_industry
+Customer customer [FK]
+string kind
}
Customer "*" -- "*" OrganizationGroup : organization_groups
OrganizationGroup "*" -- "1" OrganizationGroup : parent
Project "*" -- "1" Customer : customer
Project "*" -- "1" ProjectType : type
Project "*" -- "1" User : end_date_requested_by
Permissions application models
classDiagram
direction TB
class Role {
+int id [PK]
+string description
+string uuid
+string name
+bool is_system_role
+bool is_active
+ContentType content_type [FK]
}
class UserRole {
+int id [PK]
+AutoCreatedField created
+AutoLastModifiedField modified
+string uuid
+ContentType content_type [FK]
+int object_id
+User user [FK]
+Role role [FK]
+User created_by [FK]
+datetime expiration_time
+bool is_active
}
class RolePermission {
+int id [PK]
+Role role [FK]
+string permission
}
RolePermission "*" -- "1" Role : role
UserRole "*" -- "1" Role : role
UserRole "*" -- "1" User : created_by
UserRole "*" -- "1" User : user
Marketplace category models
classDiagram
direction TB
class CategoryGroup {
+int id [PK]
+AutoCreatedField created
+AutoLastModifiedField modified
+string uuid
+string title
+file icon
+string description
}
class Category {
+int id [PK]
+AutoCreatedField created
+AutoLastModifiedField modified
+string uuid
+string backend_id
+string title
+file icon
+string description
+bool default_vm_category
+bool default_volume_category
+bool default_tenant_category
+CategoryGroup group [FK]
}
class CategoryColumn {
+int id [PK]
+string uuid
+Category category [FK]
+int index
+string title
+string attribute
+string widget
}
class CategoryComponent {
+int id [PK]
+string description
+string uuid
+string name
+string type
+string measured_unit
+Category category [FK]
}
class CategoryComponentUsage {
+int id [PK]
+ContentType content_type [FK]
+int object_id
+CategoryComponent component [FK]
+date date
+BigIntegerField reported_usage
+BigIntegerField fixed_usage
}
Category "*" -- "1" CategoryGroup : group
CategoryColumn "*" -- "1" Category : category
CategoryComponent "*" -- "1" Category : category
CategoryComponentUsage "*" -- "1" CategoryComponent : component
Marketplace catalog models
classDiagram
direction TB
class Section {
+AutoCreatedField created
+AutoLastModifiedField modified
+string key [PK]
+string title
+Category category [FK]
+bool is_standalone
}
class Attribute {
+AutoCreatedField created
+AutoLastModifiedField modified
+string key [PK]
+string title
+Section section [FK]
+string type
+bool required
+JSONField default
}
class AttributeOption {
+int id [PK]
+Attribute attribute [FK]
+string key
+string title
}
class Offering {
+int id [PK]
+AutoCreatedField created
+AutoLastModifiedField modified
+image image
+string description
+string name
+string slug
+string uuid
+string backend_id
+ContentType content_type [FK]
+int object_id
+JSONField backend_metadata
+float latitude
+float longitude
+string datacite_doi
+int citation_count
+string error_message
+file thumbnail
+string remote_image_uuid
+string full_description
+string vendor_details
+string getting_started
+string integration_guide
+Category category [FK]
+Checklist compliance_checklist [FK]
+Customer customer [FK]
+Project project [FK]
+Offering parent [FK]
+JSONField attributes
+JSONField options
+JSONField resource_options
+JSONField plugin_options
+JSONField secret_options
+string privacy_policy_link
+string country
+string type
+FSMIntegerField state
+string paused_reason
+bool shared
+bool billable
+bool support_per_user_consumption_limitation
+string access_url
+OrganizationGroup organization_groups
}
class OfferingComponent {
+int id [PK]
+string description
+string uuid
+string backend_id
+ContentType content_type [FK]
+int object_id
+string article_code
+string name
+string type
+string measured_unit
+Offering offering [FK]
+CategoryComponent parent [FK]
+string billing_type
+string limit_period
+int limit_amount
+int unit_factor
+int max_value
+int min_value
+int max_available_limit
+bool is_boolean
+int default_limit
}
Attribute "*" -- "1" Section : section
AttributeOption "*" -- "1" Attribute : attribute
Offering "*" -- "1" Offering : parent
OfferingComponent "*" -- "1" Offering : offering
Marketplace provisioning models
classDiagram
direction TB
class Plan {
+int id [PK]
+AutoCreatedField created
+AutoLastModifiedField modified
+string description
+string name
+string uuid
+string backend_id
+ContentType content_type [FK]
+int object_id
+decimal unit_price
+string unit
+string article_code
+Offering offering [FK]
+bool archived
+int max_amount
+OrganizationGroup organization_groups
}
class PlanComponent {
+int id [PK]
+Plan plan [FK]
+OfferingComponent component [FK]
+int amount
+decimal price
+decimal future_price
}
class Resource {
+int id [PK]
+AutoCreatedField created
+AutoLastModifiedField modified
+string description
+string name
+string slug
+string uuid
+string error_message
+string error_traceback
+datetime last_sync
+string backend_id
+ContentType content_type [FK]
+int object_id
+JSONField backend_metadata
+decimal cost
+Plan plan [FK]
+JSONField limits
+Offering offering [FK]
+JSONField attributes
+date end_date
+User end_date_requested_by [FK]
+FSMIntegerField state
+Project project [FK]
+Resource parent [FK]
+JSONField report
+JSONField options
+JSONField current_usages
+string effective_id
+bool downscaled
+bool restrict_member_access
+bool paused
}
class Order {
+int id [PK]
+AutoCreatedField created
+AutoLastModifiedField modified
+string uuid
+string error_message
+string error_traceback
+string backend_id
+decimal cost
+Plan plan [FK]
+JSONField limits
+int type
+Offering offering [FK]
+JSONField attributes
+Plan old_plan [FK]
+Project project [FK]
+Resource resource [FK]
+FSMIntegerField state
+string output
+User created_by [FK]
+User consumer_reviewed_by [FK]
+datetime consumer_reviewed_at
+User provider_reviewed_by [FK]
+datetime provider_reviewed_at
+string callback_url
+string termination_comment
+datetime completed_at
}
Order "*" -- "1" Plan : old_plan
Order "*" -- "1" Plan : plan
Order "*" -- "1" Resource : resource
PlanComponent "*" -- "1" Plan : plan
Resource "*" -- "1" Plan : plan
Resource "*" -- "1" Resource : parent