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(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[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(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[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(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[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 = 'x84'#
class besser.BUML.metamodel.deployment.deployment.Protocol(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[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 = 'UPD'#
class besser.BUML.metamodel.deployment.deployment.Provider(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[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(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[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>#