Deployment model

class besser.BUML.metamodel.deployment.deployment.Application(name: str, image_repo: str, port: int, required_resources: Resources, domain_model: DomainModel)[source]

Bases: NamedElement

A class to represent an application.

Parameters:
  • name (str) – The name of the application.

  • image_repo (str) – The image repository for the application.

  • port (int) – The port on which the application runs.

  • required_resources (Resources) – The resources required by the application.

  • domain_model (DomainModel) – The domain model of the application.

image_repo

The image repository for the application.

Type:

str

port

The port on which the application runs.

Type:

int

required_resources

The resources required by the application.

Type:

Resources

domain_model

The domain model of the application.

Type:

DomainModel

_abc_impl = <_abc._abc_data object>
property domain_model: DomainModel

Get the domain model.

Type:

str

property image_repo: str

Get the image repository.

Type:

str

property port: int

Get the application port.

Type:

str

property required_resources: Resources

Get the required resources.

Type:

Resource

class besser.BUML.metamodel.deployment.deployment.CloudNode(name: str, public_ip: str, private_ip, os: str, resources: Resources, storage: int, processor: Processor)[source]

Bases: Node

A class to represent a cloud node.

_abc_impl = <_abc._abc_data object>
class besser.BUML.metamodel.deployment.deployment.Cluster(name: str, services: set[Service], deployments: set[Deployment], regions: set[Region], net_config: bool = True, nodes: set[Node] = None, networks: set[Network] = None, subnets: set[Subnetwork] = None)[source]

Bases: NamedElement

A class to represent a cluster.

Parameters:
  • name (str) – The name of the cluster.

  • services (set[Service]) – The set of services associated with the cluster.

  • deployments (set[Deployment]) – The set of deployments in the cluster.

  • regions (set[Region]) – The set of regions where the cluster is deployed.

  • net_config (bool, optional) – Indicates if network configuration is enabled. Defaults to True.

  • nodes (set[Node], optional) – The set of nodes in the cluster. Defaults to an empty set.

  • networks (set[Network], optional) – The set of networks in the cluster. Defaults to an empty set.

  • subnets (set[Subnetwork], optional) – The set of subnetworks in the cluster. Defaults to an empty set.

services

The set of services associated with the cluster.

Type:

set[Service]

deployments

The set of deployments in the cluster.

Type:

set[Deployment]

regions

The set of regions where the cluster is deployed.

Type:

set[Region]

net_config

Indicates if network configuration is enabled.

Type:

bool

nodes

The set of nodes in the cluster.

Type:

set[Node]

networks

The set of networks in the cluster.

Type:

set[Network]

subnets

The set of subnetworks in the cluster.

Type:

set[Subnetwork]

_abc_impl = <_abc._abc_data object>
property deployments: set[Deployment]

Get the set of deployments.

Type:

set[Deployment]

property net_config: bool

Get the network configuration status.

Type:

bool

property networks: set[Network]

Get the set of networks.

Type:

set[Network]

property nodes: set[Node]

Get the set of nodes.

Type:

set[Node]

property regions: set[Region]

Get the set of regions.

Type:

set[Region]

property services: set[Service]

Get the set of services.

Type:

set[Service]

property subnets: set[Subnetwork]

Get the set of subnetworks.

Type:

set[Subnetwork]

class besser.BUML.metamodel.deployment.deployment.Container(name: str, application: Application, resources_limit: Resources = None, volumes: set[Volume] = None)[source]

Bases: NamedElement

A class to represent a container.

Parameters:
  • name (str) – The name of the container.

  • application (Application) – The application running in the container.

  • resources_limit (Resources, optional) – The resource limits for the container.

  • volumes (set[Volume], optional) – The set of volumes attached to the container.

application

The application running in the container.

Type:

Application

resources_limit

The resource limits for the container.

Type:

Resources

volumes

The set of volumes attached to the container.

Type:

set[Volume]

_abc_impl = <_abc._abc_data object>
property application: Application

Get the application.

Type:

Application

property resources_limit: Resources

Get the resources limit.

Type:

Resource

property volumes: set[Volume]

Get the set of volumes.

Type:

set[Volume]

class besser.BUML.metamodel.deployment.deployment.Deployment(name: str, replicas: int, containers: set[Container])[source]

Bases: NamedElement

A class to represent a deployment.

Parameters:
  • name (str) – The name of the deployment.

  • replicas (int) – The number of replicas.

  • containers (set[Container]) – The set of containers in the deployment.

replicas

The number of replicas.

Type:

int

containers

The set of containers in the deployment.

Type:

set[Container]

_abc_impl = <_abc._abc_data object>
property containers: set[Container]

Get the set of containers.

Type:

set[Container]

property replicas: int

Get the number of replicas.

Type:

int

class besser.BUML.metamodel.deployment.deployment.DeploymentModel(name: str, clusters: set[Cluster])[source]

Bases: Model

A class to represent a deployment model.

Parameters:
  • name (str) – The name of the deployment model.

  • clusters (set[Cluster]) – The set of clusters in the deployment model.

clusters

The set of clusters in the deployment model.

Type:

set[Cluster]

_abc_impl = <_abc._abc_data object>
property clusters: set[Cluster]

Get the set of clusters.

Type:

set[Cluster]

class besser.BUML.metamodel.deployment.deployment.EdgeNode(name: str, public_ip: str, private_ip, os: str, resources: Resources, storage: int, processor: Processor)[source]

Bases: Node

A class to represent an edge node.

_abc_impl = <_abc._abc_data object>
class besser.BUML.metamodel.deployment.deployment.Hypervisor(*values)[source]

Bases: Enum

Enumeration to list various types of hypervisors.

Hypervisors are software, firmware, or hardware that creates and runs virtual machines (VMs). This enumeration lists some of the most common hypervisors used in virtualization technology.

vm_ware

Represents the VMWare hypervisor.

Type:

str

hyper_v

Represents the Hyper-V hypervisor developed by Microsoft.

Type:

str

xen_server

Represents the XenServer hypervisor.

Type:

str

rhev

Represents the Red Hat Enterprise Virtualization (RHEV) hypervisor.

Type:

str

kvm

Represents the Kernel-based Virtual Machine (KVM) hypervisor.

Type:

str

hyper_v = 'Hyper-V'
kvm = 'KVM'
rhev = 'RHEV'
vm_ware = 'VMWare'
xen_server = 'XenServer'
class besser.BUML.metamodel.deployment.deployment.IPRange(name: str, cidr_range: str, type: IPRangeType, public: bool)[source]

Bases: NamedElement

A class to represent an IP range.

Parameters:
  • name (str) – The name of the IP range.

  • cidr_range (str) – The CIDR range of the IP addresses.

  • type (IPRangeType) – The type of IP range (e.g., Subnetwork, Pod, Service).

  • public (bool) – Whether the IP range is public or private.

cidr_range

The CIDR range of the IP addresses.

Type:

str

type

The type of IP range.

Type:

IPRangeType

public

Whether the IP range is public or private.

Type:

bool

_abc_impl = <_abc._abc_data object>
property cidr_range: str

Get the CIDR range of the IP addresses.

Type:

str

property public: bool

Get whether the IP range is public or private.

Type:

bool

property type: IPRangeType

Get the type of IP range.

Type:

IPRangeType

class besser.BUML.metamodel.deployment.deployment.IPRangeType(*values)[source]

Bases: Enum

Enumeration to list different types of IP ranges.

IP ranges are used to define segments of IP addresses in networking.

subnet

Represents a subnetwork IP range.

Type:

str

pod

Represents a pod IP range.

Type:

str

service

Represents a service IP range.

Type:

str

pod = 'Pod'
service = 'Service'
subnet = 'Subnetwork'
class besser.BUML.metamodel.deployment.deployment.Network(name: str, security_groups: set[SecurityGroup] = None)[source]

Bases: NamedElement

A class to represent a network.

Parameters:
  • name (str) – The name of the network.

  • security_groups (set[SecurityGroup], optional) – The set of security groups associated

  • network. (with the)

security_groups

The set of security groups associated with the

Type:

set[SecurityGroup]

network.
_abc_impl = <_abc._abc_data object>
property security_groups: set[SecurityGroup]

Get the set of security groups.

Type:

set[SecurityGroup]

class besser.BUML.metamodel.deployment.deployment.Node(name: str, public_ip: str, private_ip, os: str, resources: Resources, storage: int, processor: Processor)[source]

Bases: NamedElement

A class to represent a node.

Parameters:
  • name (str) – The name of the node.

  • public_ip (str) – The public IP address of the node.

  • private_ip (str) – The private IP address of the node.

  • os (str) – The operating system running on the node.

  • resources (Resources) – The computational resources of the node.

  • storage (int) – The storage capacity of the node in gigabytes.

  • processor (Processor) – The processor type of the node.

public_ip

The public IP address of the node.

Type:

str

private_ip

The private IP address of the node.

Type:

str

os

The operating system running on the node.

Type:

str

resources

The computational resources of the node.

Type:

Resources

storage

The storage capacity of the node in gigabytes.

Type:

int

processor

The processor type of the node.

Type:

Processor

_abc_impl = <_abc._abc_data object>
property os: str

Get the operating system running on the node.

Type:

str

property private_ip: str

Get the private IP address of the node.

Type:

str

property processor: Processor

Get the processor type of the node.

Type:

Processor

property public_ip: str

Get the public IP address of the node.

Type:

str

property resources: Resources

Get the computational resources of the node.

Type:

Resources

property storage: int

Get the storage capacity of the node in gigabytes.

Type:

int

class besser.BUML.metamodel.deployment.deployment.OnPremises(name: str, services: set[Service], deployments: set[Deployment], regions: Region, nodes: set[Node], hypervisor: Hypervisor, networks: set[Network], subnets: set[Subnetwork])[source]

Bases: Cluster

A class to represent an on-premises cluster.

Parameters:
  • name (str) – The name of the on-premises cluster.

  • services (set[Service]) – The set of services associated with the on-premises cluster.

  • deployments (set[Deployment]) – The set of deployments in the on-premises cluster.

  • regions (set[Region]) – The set of regions where the on-premises cluster is deployed.

  • nodes (set[Node]) – The set of nodes in the on-premises cluster.

  • hypervisor (Hypervisor) – The hypervisor used in the on-premises cluster.

  • networks (set[Network]) – The set of networks in the on-premises cluster.

  • subnets (set[Subnetwork]) – The set of subnetworks in the on-premises cluster.

hypervisor

The hypervisor used in the on-premises cluster.

Type:

Hypervisor

_abc_impl = <_abc._abc_data object>
property hypervisor: Hypervisor

Get the hypervisor.

Type:

Hypervisor

class besser.BUML.metamodel.deployment.deployment.Processor(*values)[source]

Bases: Enum

Enumeration to list various types of processors.

Processors are the central units in computing that execute instructions.

x64

Represents the x64 processor architecture.

Type:

str

x86

Represents the x86 processor architecture.

Type:

str

arm

Represents the ARM processor architecture.

Type:

str

arm = 'ARM'
x64 = 'x64'
x86 = 'x86'
class besser.BUML.metamodel.deployment.deployment.Protocol(*values)[source]

Bases: Enum

Enumeration to list various network protocols.

Network protocols define the rules for data communication over a network.

http

Represents the HTTP protocol.

Type:

str

https

Represents the HTTPS protocol.

Type:

str

tcp

Represents the TCP protocol.

Type:

str

udp

Represents the UDP protocol.

Type:

str

all

Represents all protocols.

Type:

str

all = 'ALL'
http = 'HTTP'
https = 'HTTPS'
tcp = 'TCP'
udp = 'UDP'
class besser.BUML.metamodel.deployment.deployment.Provider(*values)[source]

Bases: Enum

Enumeration to list different cloud service providers.

Cloud service providers offer various services such as computing power, storage, and networking.

google

Represents Google Cloud Platform.

Type:

str

aws

Represents Amazon Web Services.

Type:

str

azure

Represents Microsoft Azure.

Type:

str

other

Represents any other cloud service provider.

Type:

str

aws = 'AWS'
azure = 'Azure'
google = 'Google'
other = 'Other'
class besser.BUML.metamodel.deployment.deployment.PublicCluster(name: str, services: set[Service], deployments: set[Deployment], regions: Region, num_nodes: int, provider: Provider, config_file: str, networks: set[Network] = None, subnets: set[Subnetwork] = None, net_config: bool = True)[source]

Bases: Cluster

A class to represent a public cluster.

Parameters:
  • name (str) – The name of the public cluster.

  • services (set[Service]) – The set of services associated with the public cluster.

  • deployments (set[Deployment]) – The set of deployments in the public cluster.

  • regions (set[Region]) – The set of regions where the public cluster is deployed.

  • num_nodes (int) – The number of nodes in the public cluster.

  • provider (Provider) – The provider of the public cluster.

  • config_file (str) – The configuration file for the public cluster.

  • networks (set[Network], optional) – The set of networks in the public cluster. Defaults to an empty set.

  • subnets (set[Subnetwork], optional) – The set of subnetworks in the public cluster. Defaults to an empty set.

  • net_config (bool, optional) – Indicates if network configuration is enabled. Defaults to True.

config_file

The configuration file for the public cluster.

Type:

str

num_nodes

The number of nodes in the public cluster.

Type:

int

provider

The provider of the public cluster.

Type:

Provider

_abc_impl = <_abc._abc_data object>
property config_file: str

Get the configuration file.

Type:

str

property num_nodes: int

Get the number of nodes.

Type:

int

property provider: Provider

Get the provider.

Type:

Provider

class besser.BUML.metamodel.deployment.deployment.Region(name: str, zones: set[Zone])[source]

Bases: NamedElement

A class to represent a region.

Parameters:
  • name (str) – The name of the region.

  • zones (set[Zone]) – The set of zones within the region.

zones

The set of zones within the region.

Type:

set[Zone]

_abc_impl = <_abc._abc_data object>
property zones: set[Zone]

Get the set of zones.

Type:

set[Zone]

class besser.BUML.metamodel.deployment.deployment.Resources(cpu: int, memory: int)[source]

Bases: object

A class to represent the computational resources.

Parameters:
  • cpu (int) – The number of CPU units.

  • memory (int) – The amount of memory in megabytes.

cpu

The number of CPU units.

Type:

int

memory

The amount of memory in megabytes.

Type:

int

property cpu: int

Get the cpu value.

Type:

str

property memory: int

Get the memory value.

Type:

str

class besser.BUML.metamodel.deployment.deployment.SecurityGroup(name: str, rules: set[Service])[source]

Bases: NamedElement

A class to represent a security group.

Parameters:
  • name (str) – The name of the security group.

  • rules (set[Service]) – The set of services that define the security rules.

rules

The set of services that define the security rules.

Type:

set[Service]

_abc_impl = <_abc._abc_data object>
property rules: set[Service]

Get the set of security rules.

Type:

set[Service]

class besser.BUML.metamodel.deployment.deployment.Service(name: str, port: int, target_port: int, type: ServiceType, protocol: Protocol, application: Application = None)[source]

Bases: NamedElement

A class to represent a service.

Parameters:
  • name (str) – The name of the service.

  • port (int) – The port on which the service is exposed.

  • target_port (int) – The port on which the application is running.

  • type (ServiceType) – The type of service (e.g., LoadBalancer, Ingress, Egress).

  • protocol (Protocol) – The protocol used by the service (e.g., HTTP, HTTPS, TCP, UDP).

  • application (Application, optional) – The application associated with the service.

port

The port on which the service is exposed.

Type:

int

target_port

The port on which the application is running.

Type:

int

type

The type of service.

Type:

ServiceType

protocol

The protocol used by the service.

Type:

Protocol

application

The application associated with the service.

Type:

Application

_abc_impl = <_abc._abc_data object>
property application: Application

Get the application associated with the service.

Type:

Application

property port: int

Get the port on which the service is exposed.

Type:

int

property protocol: Protocol

Get the protocol used by the service.

Type:

Protocol

property target_port: int

Get the port on which the application is running.

Type:

int

property type: ServiceType

Get the type of service.

Type:

ServiceType

class besser.BUML.metamodel.deployment.deployment.ServiceType(*values)[source]

Bases: Enum

Enumeration to list different types of services in networking.

Services are abstractions that define a set of pods as a group and access policy for them.

lb

Represents a LoadBalancer service.

Type:

str

ingress

Represents an Ingress service.

Type:

str

egress

Represents an Egress service.

Type:

str

egress = 'Egress'
ingress = 'Ingress'
lb = 'LoadBalancer'
class besser.BUML.metamodel.deployment.deployment.Subnetwork(name: str, ip_ranges: set[IPRange], network: Network)[source]

Bases: NamedElement

A class to represent a subnetwork.

Parameters:
  • name (str) – The name of the subnetwork.

  • ip_ranges (set[IPRange]) – The set of IP ranges within the subnetwork.

  • network (Network) – The network to which the subnetwork belongs.

ip_ranges

The set of IP ranges within the subnetwork.

Type:

set[IPRange]

network

The network to which the subnetwork belongs.

Type:

Network

_abc_impl = <_abc._abc_data object>
property ip_ranges: set[IPRange]

Get the set of IP ranges.

Type:

set[IPRange]

property network: Network

Get the network.

Type:

Network

class besser.BUML.metamodel.deployment.deployment.Volume(name: str, mount_path: str, sub_path: str)[source]

Bases: NamedElement

A class to represent a volume.

Parameters:
  • name (str) – The name of the volume.

  • mount_path (str) – The mount path of the volume.

  • sub_path (str) – The sub-path within the volume.

mount_path

The mount path of the volume.

Type:

str

sub_path

The sub-path within the volume.

Type:

str

_abc_impl = <_abc._abc_data object>
property mount_path: str

Get the mount path.

Type:

str

property sub_path: str

Get the sub path.

Type:

str

class besser.BUML.metamodel.deployment.deployment.Zone(name: str)[source]

Bases: NamedElement

A class to represent a zone.

Parameters:

name (str) – The name of the zone.

name

The name of the zone.

Type:

str

_abc_impl = <_abc._abc_data object>