Skip to content
Snippets Groups Projects
Unverified Commit f5fcf2cc authored by Andrea Franchini's avatar Andrea Franchini
Browse files

Add reference and examples for DOMLR

parent fe7c940e
No related branches found
No related tags found
No related merge requests found
Reference for Attributes, Association and Classes keys
======================================================
Attributes
----------
commons_DOMLElement::name
commons_DOMLElement::description
commons_Property::key
commons_IProperty::value
commons_SProperty::value
commons_FProperty::value
commons_BProperty::value
application_SoftwareComponent::isPersistent
application_SoftwareComponent::licenseCost
application_SoftwareComponent::configFile
application_SaaS::licenseCost
application_SoftwareInterface::endPoint
infrastructure_ComputingNode::architecture
infrastructure_ComputingNode::os
infrastructure_ComputingNode::memory_mb
infrastructure_ComputingNode::memory_kb
infrastructure_ComputingNode::storage
infrastructure_ComputingNode::cpu_count
infrastructure_ComputingNode::cost
infrastructure_VirtualMachine::sizeDescription
infrastructure_Location::region
infrastructure_Location::zone
infrastructure_ComputingNodeGenerator::uri
infrastructure_ComputingNodeGenerator::kind
infrastructure_AutoScalingGroup::min
infrastructure_AutoScalingGroup::max
infrastructure_AutoScalingGroup::loadBalancer
infrastructure_Storage::label
infrastructure_Storage::size_gb
infrastructure_Storage::cost
infrastructure_FunctionAsAService::cost
infrastructure_Network::protocol
infrastructure_Network::address_lb
infrastructure_Network::address_ub
infrastructure_NetworkInterface::endPoint
infrastructure_NetworkInterface::speed
infrastructure_Rule::kind
infrastructure_Rule::protocol
infrastructure_Rule::fromPort
infrastructure_Rule::toPort
infrastructure_Rule::cidr
infrastructure_KeyPair::user
infrastructure_KeyPair::keyfile
infrastructure_KeyPair::algorithm
infrastructure_KeyPair::bits
infrastructure_UserPass::username
infrastructure_UserPass::password
infrastructure_SwarmRole::kind
concrete_ConcreteElement::configurationScript
Associations
------------
commons_DOMLElement::annotations
commons_Property::reference
commons_Configuration::deployments
commons_Deployment::component
commons_Deployment::node
application_ApplicationLayer::components
application_SoftwareComponent::exposedInterfaces
application_SoftwareComponent::consumedInterfaces
application_SaaS::exposedInterfaces
infrastructure_InfrastructureLayer::nodes
infrastructure_InfrastructureLayer::generators
infrastructure_InfrastructureLayer::storages
infrastructure_InfrastructureLayer::faas
infrastructure_InfrastructureLayer::credentials
infrastructure_InfrastructureLayer::groups
infrastructure_InfrastructureLayer::securityGroups
infrastructure_InfrastructureLayer::networks
infrastructure_ComputingNode::ifaces
infrastructure_ComputingNode::location
infrastructure_ComputingNode::credentials
infrastructure_ComputingNode::group
infrastructure_VirtualMachine::generatedFrom
infrastructure_Container::generatedFrom
infrastructure_Container::hosts
infrastructure_VMImage::generatedVMs
infrastructure_ContainerImage::generatedContainers
infrastructure_AutoScalingGroup::machineDefinition
infrastructure_AutoScalingGroup::deploymentNetwork
infrastructure_AutoScalingGroup::securityGroup
infrastructure_Storage::ifaces
infrastructure_FunctionAsAService::ifaces
infrastructure_Network::connectedIfaces
infrastructure_Network::igws
infrastructure_Network::subnets
infrastructure_Subnet::connectedTo
infrastructure_NetworkInterface::belongsTo
infrastructure_NetworkInterface::associated
infrastructure_ComputingGroup::groupedNodes
infrastructure_SecurityGroup::rules
infrastructure_SecurityGroup::ifaces
infrastructure_SwarmRole::nodes
infrastructure_Swarm::roles
concrete_ConcreteInfrastructure::providers
concrete_RuntimeProvider::vms
concrete_RuntimeProvider::vmImages
concrete_RuntimeProvider::containerImages
concrete_RuntimeProvider::networks
concrete_RuntimeProvider::storages
concrete_RuntimeProvider::faas
concrete_RuntimeProvider::group
concrete_VirtualMachine::maps
concrete_VMImage::maps
concrete_ContainerImage::maps
concrete_Network::maps
concrete_Storage::maps
concrete_FunctionAsAService::maps
concrete_ComputingGroup::maps
Classes
-------
commons_DOMLElement
commons_Property
commons_IProperty
commons_SProperty
commons_FProperty
commons_BProperty
commons_Configuration
commons_Deployment
application_ApplicationLayer
application_ApplicationComponent
application_SoftwareComponent
application_SaaS
application_SoftwareInterface
application_DBMS
application_SaaSDBMS
infrastructure_InfrastructureLayer
infrastructure_InfrastructureElement
infrastructure_ComputingNode
infrastructure_PhysicalComputingNode
infrastructure_VirtualMachine
infrastructure_Location
infrastructure_Container
infrastructure_ComputingNodeGenerator
infrastructure_VMImage
infrastructure_ContainerImage
infrastructure_AutoScalingGroup
infrastructure_Storage
infrastructure_FunctionAsAService
infrastructure_Network
infrastructure_Subnet
infrastructure_NetworkInterface
infrastructure_InternetGateway
infrastructure_ComputingGroup
infrastructure_SecurityGroup
infrastructure_Rule
infrastructure_Credentials
infrastructure_KeyPair
infrastructure_UserPass
infrastructure_SwarmRole
infrastructure_Swarm
infrastructure_ExtInfrastructureElement
concrete_ConcreteInfrastructure
concrete_ConcreteElement
concrete_RuntimeProvider
concrete_VirtualMachine
concrete_VMImage
concrete_ContainerImage
concrete_Network
concrete_Storage
concrete_FunctionAsAService
concrete_ComputingGroup
\ No newline at end of file
......@@ -20,6 +20,7 @@ in charge of checking the correctness and consistency of `DOML`_ models.
writing-requirements
requirements
restapis
reference_index
..
Indices and tables
......
DOML Reference
==============
For a comprehensive list of all the classes, attributes and associations supported in the DOML Model Checker and DOMLR, please consult one of the following pages.
:doc:`Reference for DOML v2.0 <reference_v2.0>`
-----------------------------------------------
:doc:`Reference for DOML v2.1 <reference_v2.1>`
-----------------------------------------------
:doc:`Reference for DOML v2.2 <reference_v2.2>`
-----------------------------------------------
DOML v2.0 Reference
=============================
commons
^^^^^^^
.. _v2.0_commons_BProperty:
BProperty
"""""""""
*Inherits from* :ref:`Property <v2.0_commons_Property>`
* Attributes:
* ``value`` [Boolean]
.. _v2.0_commons_Configuration:
Configuration
"""""""""""""
*Inherits from* :ref:`DOMLElement <v2.0_commons_DOMLElement>`
* Associations:
* ``deployments`` → Deployment [0..*]
.. _v2.0_commons_DOMLElement:
DOMLElement
"""""""""""
* Associations:
* ``annotations`` → Property [0..*]
* Attributes:
* ``name`` [String]
* ``description`` [String]
.. _v2.0_commons_Deployment:
Deployment
""""""""""
* Associations:
* ``component`` → ApplicationComponent [1..1]
* ``node`` → InfrastructureElement [1..1]
.. _v2.0_commons_FProperty:
FProperty
"""""""""
*Inherits from* :ref:`Property <v2.0_commons_Property>`
* Attributes:
* ``value`` [String]
.. _v2.0_commons_IProperty:
IProperty
"""""""""
*Inherits from* :ref:`Property <v2.0_commons_Property>`
* Attributes:
* ``value`` [Integer]
.. _v2.0_commons_Property:
Property
""""""""
* Associations:
* ``reference`` → DOMLElement [0..1]
* Attributes:
* ``key`` [String]
.. _v2.0_commons_SProperty:
SProperty
"""""""""
*Inherits from* :ref:`Property <v2.0_commons_Property>`
* Attributes:
* ``value`` [String]
application
^^^^^^^^^^^
.. _v2.0_application_ApplicationComponent:
ApplicationComponent
""""""""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.0_commons_DOMLElement>`
.. _v2.0_application_ApplicationLayer:
ApplicationLayer
""""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.0_commons_DOMLElement>`
* Associations:
* ``components`` → ApplicationComponent [0..*]
.. _v2.0_application_DBMS:
DBMS
""""
*Inherits from* :ref:`SoftwareComponent <v2.0_application_SoftwareComponent>`
.. _v2.0_application_SaaS:
SaaS
""""
*Inherits from* :ref:`ApplicationComponent <v2.0_application_ApplicationComponent>`
* Associations:
* ``exposedInterfaces`` → SoftwareInterface [0..*]
* Attributes:
* ``licenseCost`` [String]
.. _v2.0_application_SaaSDBMS:
SaaSDBMS
""""""""
*Inherits from* :ref:`SaaS <v2.0_application_SaaS>`
.. _v2.0_application_SoftwareComponent:
SoftwareComponent
"""""""""""""""""
*Inherits from* :ref:`ApplicationComponent <v2.0_application_ApplicationComponent>`
* Associations:
* ``exposedInterfaces`` → SoftwareInterface [0..*]
* ``consumedInterfaces`` → SoftwareInterface [0..*]
* Attributes:
* ``isPersistent`` [Boolean]
* ``licenseCost`` [String]
* ``configFile`` [String]
.. _v2.0_application_SoftwareInterface:
SoftwareInterface
"""""""""""""""""
*Inherits from* :ref:`ApplicationComponent <v2.0_application_ApplicationComponent>`
* Attributes:
* ``endPoint`` [String]
infrastructure
^^^^^^^^^^^^^^
.. _v2.0_infrastructure_AutoScalingGroup:
AutoScalingGroup
""""""""""""""""
*Inherits from* :ref:`ComputingGroup <v2.0_infrastructure_ComputingGroup>`
* Associations:
* ``machineDefinition`` → VirtualMachine [1..1]
* ``deploymentNetwork`` → Network [0..1]
* ``securityGroup`` → SecurityGroup [0..1]
* Attributes:
* ``min`` [Integer]
* ``max`` [Integer]
* ``loadBalancer`` [String]
.. _v2.0_infrastructure_ComputingGroup:
ComputingGroup
""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.0_commons_DOMLElement>`
* Associations:
* ``groupedNodes`` → ComputingNode [0..*]
.. _v2.0_infrastructure_ComputingNode:
ComputingNode
"""""""""""""
*Inherits from* :ref:`InfrastructureElement <v2.0_infrastructure_InfrastructureElement>`
* Associations:
* ``ifaces`` → NetworkInterface [0..*]
* ``location`` → Location [0..1]
* ``credentials`` → Credentials [0..1]
* ``group`` → ComputingGroup [0..1]
* Attributes:
* ``architecture`` [String]
* ``os`` [String]
* ``memory_mb`` [Integer]
* ``memory_kb`` [Integer]
* ``storage`` [String]
* ``cpu_count`` [Integer]
* ``cost`` [Integer]
.. _v2.0_infrastructure_ComputingNodeGenerator:
ComputingNodeGenerator
""""""""""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.0_commons_DOMLElement>`
* Attributes:
* ``uri`` [String]
* ``kind`` [GeneratorKind]
.. _v2.0_infrastructure_Container:
Container
"""""""""
*Inherits from* :ref:`ComputingNode <v2.0_infrastructure_ComputingNode>`
* Associations:
* ``generatedFrom`` → ContainerImage [0..1]
* ``hosts`` → ComputingNode [0..*]
.. _v2.0_infrastructure_ContainerImage:
ContainerImage
""""""""""""""
*Inherits from* :ref:`ComputingNodeGenerator <v2.0_infrastructure_ComputingNodeGenerator>`
* Associations:
* ``generatedContainers`` → Container [0..*]
.. _v2.0_infrastructure_Credentials:
Credentials
"""""""""""
*Inherits from* :ref:`DOMLElement <v2.0_commons_DOMLElement>`
.. _v2.0_infrastructure_ExtInfrastructureElement:
ExtInfrastructureElement
""""""""""""""""""""""""
*Inherits from* :ref:`InfrastructureElement <v2.0_infrastructure_InfrastructureElement>`
.. _v2.0_infrastructure_FunctionAsAService:
FunctionAsAService
""""""""""""""""""
*Inherits from* :ref:`InfrastructureElement <v2.0_infrastructure_InfrastructureElement>`
* Associations:
* ``ifaces`` → NetworkInterface [0..*]
* Attributes:
* ``cost`` [Integer]
.. _v2.0_infrastructure_InfrastructureElement:
InfrastructureElement
"""""""""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.0_commons_DOMLElement>`
.. _v2.0_infrastructure_InfrastructureLayer:
InfrastructureLayer
"""""""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.0_commons_DOMLElement>`
* Associations:
* ``nodes`` → ComputingNode [0..*]
* ``generators`` → ComputingNodeGenerator [0..*]
* ``storages`` → Storage [0..*]
* ``faas`` → FunctionAsAService [0..*]
* ``credentials`` → Credentials [0..*]
* ``groups`` → ComputingGroup [0..*]
* ``securityGroups`` → SecurityGroup [0..*]
* ``networks`` → Network [0..*]
.. _v2.0_infrastructure_InternetGateway:
InternetGateway
"""""""""""""""
*Inherits from* :ref:`NetworkInterface <v2.0_infrastructure_NetworkInterface>`
.. _v2.0_infrastructure_KeyPair:
KeyPair
"""""""
*Inherits from* :ref:`Credentials <v2.0_infrastructure_Credentials>`
* Attributes:
* ``user`` [String]
* ``keyfile`` [String]
* ``algorithm`` [String]
* ``bits`` [Integer]
.. _v2.0_infrastructure_Location:
Location
""""""""
*Inherits from* :ref:`DOMLElement <v2.0_commons_DOMLElement>`
* Attributes:
* ``region`` [String]
* ``zone`` [String]
.. _v2.0_infrastructure_Network:
Network
"""""""
*Inherits from* :ref:`DOMLElement <v2.0_commons_DOMLElement>`
* Associations:
* ``connectedIfaces`` → NetworkInterface [0..*]
* ``igws`` → InternetGateway [0..*]
* ``subnets`` → Subnet [0..*]
* Attributes:
* ``protocol`` [String]
* ``address_lb`` [Integer]
* ``address_ub`` [Integer]
.. _v2.0_infrastructure_NetworkInterface:
NetworkInterface
""""""""""""""""
*Inherits from* :ref:`InfrastructureElement <v2.0_infrastructure_InfrastructureElement>`
* Associations:
* ``belongsTo`` → Network [0..1]
* ``associated`` → SecurityGroup [0..1]
* Attributes:
* ``endPoint`` [Integer]
* ``speed`` [String]
.. _v2.0_infrastructure_PhysicalComputingNode:
PhysicalComputingNode
"""""""""""""""""""""
*Inherits from* :ref:`ComputingNode <v2.0_infrastructure_ComputingNode>`
.. _v2.0_infrastructure_Rule:
Rule
""""
*Inherits from* :ref:`DOMLElement <v2.0_commons_DOMLElement>`
* Attributes:
* ``kind`` [String]
* ``protocol`` [String]
* ``fromPort`` [Integer]
* ``toPort`` [Integer]
* ``cidr`` [String]
.. _v2.0_infrastructure_SecurityGroup:
SecurityGroup
"""""""""""""
*Inherits from* :ref:`DOMLElement <v2.0_commons_DOMLElement>`
* Associations:
* ``rules`` → Rule [0..*]
* ``ifaces`` → NetworkInterface [0..*]
.. _v2.0_infrastructure_Storage:
Storage
"""""""
*Inherits from* :ref:`InfrastructureElement <v2.0_infrastructure_InfrastructureElement>`
* Associations:
* ``ifaces`` → NetworkInterface [0..*]
* Attributes:
* ``label`` [String]
* ``size_gb`` [Integer]
* ``cost`` [Integer]
.. _v2.0_infrastructure_Subnet:
Subnet
""""""
*Inherits from* :ref:`Network <v2.0_infrastructure_Network>`
* Associations:
* ``connectedTo`` → Network [0..1]
.. _v2.0_infrastructure_Swarm:
Swarm
"""""
*Inherits from* :ref:`ComputingGroup <v2.0_infrastructure_ComputingGroup>`
* Associations:
* ``roles`` → SwarmRole [0..*]
.. _v2.0_infrastructure_SwarmRole:
SwarmRole
"""""""""
*Inherits from* :ref:`DOMLElement <v2.0_commons_DOMLElement>`
* Associations:
* ``nodes`` → ComputingNode [0..*]
* Attributes:
* ``kind`` [String]
.. _v2.0_infrastructure_UserPass:
UserPass
""""""""
*Inherits from* :ref:`Credentials <v2.0_infrastructure_Credentials>`
* Attributes:
* ``username`` [String]
* ``password`` [String]
.. _v2.0_infrastructure_VMImage:
VMImage
"""""""
*Inherits from* :ref:`ComputingNodeGenerator <v2.0_infrastructure_ComputingNodeGenerator>`
* Associations:
* ``generatedVMs`` → VirtualMachine [0..*]
.. _v2.0_infrastructure_VirtualMachine:
VirtualMachine
""""""""""""""
*Inherits from* :ref:`ComputingNode <v2.0_infrastructure_ComputingNode>`
* Associations:
* ``generatedFrom`` → VMImage [0..1]
* Attributes:
* ``sizeDescription`` [String]
concrete
^^^^^^^^
.. _v2.0_concrete_ComputingGroup:
ComputingGroup
""""""""""""""
*Inherits from* :ref:`ConcreteElement <v2.0_concrete_ConcreteElement>`
* Associations:
* ``maps`` → ComputingGroup [1..1]
.. _v2.0_concrete_ConcreteElement:
ConcreteElement
"""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.0_commons_DOMLElement>`
* Attributes:
* ``configurationScript`` [String]
.. _v2.0_concrete_ConcreteInfrastructure:
ConcreteInfrastructure
""""""""""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.0_commons_DOMLElement>`
* Associations:
* ``providers`` → RuntimeProvider [0..*]
.. _v2.0_concrete_ContainerImage:
ContainerImage
""""""""""""""
*Inherits from* :ref:`ConcreteElement <v2.0_concrete_ConcreteElement>`
* Associations:
* ``maps`` → ContainerImage [0..1]
.. _v2.0_concrete_FunctionAsAService:
FunctionAsAService
""""""""""""""""""
*Inherits from* :ref:`ConcreteElement <v2.0_concrete_ConcreteElement>`
* Associations:
* ``maps`` → FunctionAsAService [0..1]
.. _v2.0_concrete_Network:
Network
"""""""
*Inherits from* :ref:`ConcreteElement <v2.0_concrete_ConcreteElement>`
* Associations:
* ``maps`` → Network [0..1]
.. _v2.0_concrete_RuntimeProvider:
RuntimeProvider
"""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.0_commons_DOMLElement>`
* Associations:
* ``vms`` → VirtualMachine [0..*]
* ``vmImages`` → VMImage [0..*]
* ``containerImages`` → ContainerImage [0..*]
* ``networks`` → Network [0..*]
* ``storages`` → Storage [0..*]
* ``faas`` → FunctionAsAService [0..*]
* ``group`` → ComputingGroup [0..*]
.. _v2.0_concrete_Storage:
Storage
"""""""
*Inherits from* :ref:`ConcreteElement <v2.0_concrete_ConcreteElement>`
* Associations:
* ``maps`` → Storage [0..1]
.. _v2.0_concrete_VMImage:
VMImage
"""""""
*Inherits from* :ref:`ConcreteElement <v2.0_concrete_ConcreteElement>`
* Associations:
* ``maps`` → VMImage [0..1]
.. _v2.0_concrete_VirtualMachine:
VirtualMachine
""""""""""""""
*Inherits from* :ref:`ConcreteElement <v2.0_concrete_ConcreteElement>`
* Associations:
* ``maps`` → VirtualMachine [0..1]
DOML v2.1 Reference
=============================
commons
^^^^^^^
.. _v2.1_commons_BProperty:
BProperty
"""""""""
*Inherits from* :ref:`Property <v2.1_commons_Property>`
* Attributes:
* ``value`` [Boolean]
.. _v2.1_commons_Configuration:
Configuration
"""""""""""""
*Inherits from* :ref:`DOMLElement <v2.1_commons_DOMLElement>`
* Associations:
* ``deployments`` → Deployment [0..*]
.. _v2.1_commons_DOMLElement:
DOMLElement
"""""""""""
* Associations:
* ``annotations`` → Property [0..*]
* Attributes:
* ``name`` [String]
* ``description`` [String]
.. _v2.1_commons_Deployment:
Deployment
""""""""""
* Associations:
* ``component`` → ApplicationComponent [1..1]
* ``node`` → InfrastructureElement [1..1]
.. _v2.1_commons_FProperty:
FProperty
"""""""""
*Inherits from* :ref:`Property <v2.1_commons_Property>`
* Attributes:
* ``value`` [String]
.. _v2.1_commons_IProperty:
IProperty
"""""""""
*Inherits from* :ref:`Property <v2.1_commons_Property>`
* Attributes:
* ``value`` [Integer]
.. _v2.1_commons_Property:
Property
""""""""
* Associations:
* ``reference`` → DOMLElement [0..1]
* Attributes:
* ``key`` [String]
.. _v2.1_commons_SProperty:
SProperty
"""""""""
*Inherits from* :ref:`Property <v2.1_commons_Property>`
* Attributes:
* ``value`` [String]
application
^^^^^^^^^^^
.. _v2.1_application_ApplicationComponent:
ApplicationComponent
""""""""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.1_commons_DOMLElement>`
.. _v2.1_application_ApplicationLayer:
ApplicationLayer
""""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.1_commons_DOMLElement>`
* Associations:
* ``components`` → ApplicationComponent [0..*]
.. _v2.1_application_DBMS:
DBMS
""""
*Inherits from* :ref:`SoftwareComponent <v2.1_application_SoftwareComponent>`
.. _v2.1_application_SaaS:
SaaS
""""
*Inherits from* :ref:`ApplicationComponent <v2.1_application_ApplicationComponent>`
* Associations:
* ``exposedInterfaces`` → SoftwareInterface [0..*]
* Attributes:
* ``licenseCost`` [String]
.. _v2.1_application_SaaSDBMS:
SaaSDBMS
""""""""
*Inherits from* :ref:`SaaS <v2.1_application_SaaS>`
.. _v2.1_application_SoftwareComponent:
SoftwareComponent
"""""""""""""""""
*Inherits from* :ref:`ApplicationComponent <v2.1_application_ApplicationComponent>`
* Associations:
* ``exposedInterfaces`` → SoftwareInterface [0..*]
* ``consumedInterfaces`` → SoftwareInterface [0..*]
* Attributes:
* ``isPersistent`` [Boolean]
* ``licenseCost`` [String]
* ``configFile`` [String]
.. _v2.1_application_SoftwareInterface:
SoftwareInterface
"""""""""""""""""
*Inherits from* :ref:`ApplicationComponent <v2.1_application_ApplicationComponent>`
* Attributes:
* ``endPoint`` [String]
infrastructure
^^^^^^^^^^^^^^
.. _v2.1_infrastructure_AutoScalingGroup:
AutoScalingGroup
""""""""""""""""
*Inherits from* :ref:`ComputingGroup <v2.1_infrastructure_ComputingGroup>`
* Associations:
* ``machineDefinition`` → VirtualMachine [1..1]
* ``securityGroup`` → SecurityGroup [0..1]
* Attributes:
* ``min`` [Integer]
* ``max`` [Integer]
* ``loadBalancer`` [String]
.. _v2.1_infrastructure_ComputingGroup:
ComputingGroup
""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.1_commons_DOMLElement>`
* Associations:
* ``groupedNodes`` → ComputingNode [0..*]
.. _v2.1_infrastructure_ComputingNode:
ComputingNode
"""""""""""""
*Inherits from* :ref:`InfrastructureElement <v2.1_infrastructure_InfrastructureElement>`
* Associations:
* ``ifaces`` → NetworkInterface [0..*]
* ``location`` → Location [0..1]
* ``credentials`` → Credentials [0..1]
* ``group`` → ComputingGroup [0..1]
* Attributes:
* ``architecture`` [String]
* ``os`` [String]
* ``memory_mb`` [Integer]
* ``memory_kb`` [Integer]
* ``storage`` [String]
* ``cpu_count`` [Integer]
* ``cost`` [Integer]
.. _v2.1_infrastructure_ComputingNodeGenerator:
ComputingNodeGenerator
""""""""""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.1_commons_DOMLElement>`
* Attributes:
* ``uri`` [String]
* ``kind`` [GeneratorKind]
.. _v2.1_infrastructure_Container:
Container
"""""""""
*Inherits from* :ref:`ComputingNode <v2.1_infrastructure_ComputingNode>`
* Associations:
* ``generatedFrom`` → ContainerImage [0..1]
* ``configs`` → ContainerConfig [0..*]
.. _v2.1_infrastructure_ContainerConfig:
ContainerConfig
"""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.1_commons_DOMLElement>`
* Associations:
* ``host`` → ComputingNode [0..1]
* ``iface`` → NetworkInterface [0..1]
* Attributes:
* ``container_port`` [Integer]
* ``vm_port`` [Integer]
.. _v2.1_infrastructure_ContainerImage:
ContainerImage
""""""""""""""
*Inherits from* :ref:`ComputingNodeGenerator <v2.1_infrastructure_ComputingNodeGenerator>`
* Associations:
* ``generatedContainers`` → Container [0..*]
.. _v2.1_infrastructure_Credentials:
Credentials
"""""""""""
*Inherits from* :ref:`DOMLElement <v2.1_commons_DOMLElement>`
.. _v2.1_infrastructure_ExtInfrastructureElement:
ExtInfrastructureElement
""""""""""""""""""""""""
*Inherits from* :ref:`InfrastructureElement <v2.1_infrastructure_InfrastructureElement>`
.. _v2.1_infrastructure_FunctionAsAService:
FunctionAsAService
""""""""""""""""""
*Inherits from* :ref:`InfrastructureElement <v2.1_infrastructure_InfrastructureElement>`
* Associations:
* ``ifaces`` → NetworkInterface [0..*]
* Attributes:
* ``cost`` [Integer]
.. _v2.1_infrastructure_InfrastructureElement:
InfrastructureElement
"""""""""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.1_commons_DOMLElement>`
.. _v2.1_infrastructure_InfrastructureLayer:
InfrastructureLayer
"""""""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.1_commons_DOMLElement>`
* Associations:
* ``nodes`` → ComputingNode [0..*]
* ``generators`` → ComputingNodeGenerator [0..*]
* ``storages`` → Storage [0..*]
* ``faas`` → FunctionAsAService [0..*]
* ``credentials`` → Credentials [0..*]
* ``groups`` → ComputingGroup [0..*]
* ``securityGroups`` → SecurityGroup [0..*]
* ``networks`` → Network [0..*]
.. _v2.1_infrastructure_InternetGateway:
InternetGateway
"""""""""""""""
*Inherits from* :ref:`NetworkInterface <v2.1_infrastructure_NetworkInterface>`
.. _v2.1_infrastructure_KeyPair:
KeyPair
"""""""
*Inherits from* :ref:`Credentials <v2.1_infrastructure_Credentials>`
* Attributes:
* ``user`` [String]
* ``keyfile`` [String]
* ``algorithm`` [String]
* ``bits`` [Integer]
.. _v2.1_infrastructure_Location:
Location
""""""""
*Inherits from* :ref:`DOMLElement <v2.1_commons_DOMLElement>`
* Attributes:
* ``region`` [String]
* ``zone`` [String]
.. _v2.1_infrastructure_Network:
Network
"""""""
*Inherits from* :ref:`DOMLElement <v2.1_commons_DOMLElement>`
* Associations:
* ``connectedIfaces`` → NetworkInterface [0..*]
* ``igws`` → InternetGateway [0..*]
* ``subnets`` → Subnet [0..*]
* Attributes:
* ``protocol`` [String]
* ``addressRange`` [String]
* ``cidr`` [Integer]
.. _v2.1_infrastructure_NetworkInterface:
NetworkInterface
""""""""""""""""
*Inherits from* :ref:`InfrastructureElement <v2.1_infrastructure_InfrastructureElement>`
* Associations:
* ``belongsTo`` → Network [0..1]
* ``associated`` → SecurityGroup [0..1]
* Attributes:
* ``endPoint`` [Integer]
* ``speed`` [String]
.. _v2.1_infrastructure_PhysicalComputingNode:
PhysicalComputingNode
"""""""""""""""""""""
*Inherits from* :ref:`ComputingNode <v2.1_infrastructure_ComputingNode>`
.. _v2.1_infrastructure_Rule:
Rule
""""
*Inherits from* :ref:`DOMLElement <v2.1_commons_DOMLElement>`
* Attributes:
* ``kind`` [String]
* ``protocol`` [String]
* ``fromPort`` [Integer]
* ``toPort`` [Integer]
* ``cidr`` [String]
.. _v2.1_infrastructure_SecurityGroup:
SecurityGroup
"""""""""""""
*Inherits from* :ref:`DOMLElement <v2.1_commons_DOMLElement>`
* Associations:
* ``rules`` → Rule [0..*]
* ``ifaces`` → NetworkInterface [0..*]
.. _v2.1_infrastructure_Storage:
Storage
"""""""
*Inherits from* :ref:`InfrastructureElement <v2.1_infrastructure_InfrastructureElement>`
* Associations:
* ``ifaces`` → NetworkInterface [0..*]
* Attributes:
* ``label`` [String]
* ``size_gb`` [Integer]
* ``cost`` [Integer]
.. _v2.1_infrastructure_Subnet:
Subnet
""""""
*Inherits from* :ref:`Network <v2.1_infrastructure_Network>`
* Associations:
* ``connectedTo`` → Network [0..1]
.. _v2.1_infrastructure_Swarm:
Swarm
"""""
*Inherits from* :ref:`ComputingGroup <v2.1_infrastructure_ComputingGroup>`
* Associations:
* ``roles`` → SwarmRole [0..*]
.. _v2.1_infrastructure_SwarmRole:
SwarmRole
"""""""""
*Inherits from* :ref:`DOMLElement <v2.1_commons_DOMLElement>`
* Associations:
* ``nodes`` → ComputingNode [0..*]
* Attributes:
* ``kind`` [String]
.. _v2.1_infrastructure_UserPass:
UserPass
""""""""
*Inherits from* :ref:`Credentials <v2.1_infrastructure_Credentials>`
* Attributes:
* ``username`` [String]
* ``password`` [String]
.. _v2.1_infrastructure_VMImage:
VMImage
"""""""
*Inherits from* :ref:`ComputingNodeGenerator <v2.1_infrastructure_ComputingNodeGenerator>`
* Associations:
* ``generatedVMs`` → VirtualMachine [0..*]
.. _v2.1_infrastructure_VirtualMachine:
VirtualMachine
""""""""""""""
*Inherits from* :ref:`ComputingNode <v2.1_infrastructure_ComputingNode>`
* Associations:
* ``generatedFrom`` → VMImage [0..1]
* Attributes:
* ``sizeDescription`` [String]
concrete
^^^^^^^^
.. _v2.1_concrete_ComputingGroup:
ComputingGroup
""""""""""""""
*Inherits from* :ref:`ConcreteElement <v2.1_concrete_ConcreteElement>`
* Associations:
* ``maps`` → ComputingGroup [1..1]
.. _v2.1_concrete_ConcreteElement:
ConcreteElement
"""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.1_commons_DOMLElement>`
* Attributes:
* ``configurationScript`` [String]
.. _v2.1_concrete_ConcreteInfrastructure:
ConcreteInfrastructure
""""""""""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.1_commons_DOMLElement>`
* Associations:
* ``providers`` → RuntimeProvider [0..*]
.. _v2.1_concrete_ContainerImage:
ContainerImage
""""""""""""""
*Inherits from* :ref:`ConcreteElement <v2.1_concrete_ConcreteElement>`
* Associations:
* ``maps`` → ContainerImage [0..1]
.. _v2.1_concrete_FunctionAsAService:
FunctionAsAService
""""""""""""""""""
*Inherits from* :ref:`ConcreteElement <v2.1_concrete_ConcreteElement>`
* Associations:
* ``maps`` → FunctionAsAService [0..1]
.. _v2.1_concrete_Network:
Network
"""""""
*Inherits from* :ref:`ConcreteElement <v2.1_concrete_ConcreteElement>`
* Associations:
* ``maps`` → Network [0..1]
* Attributes:
* ``address`` [Integer]
.. _v2.1_concrete_RuntimeProvider:
RuntimeProvider
"""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.1_commons_DOMLElement>`
* Associations:
* ``vms`` → VirtualMachine [0..*]
* ``vmImages`` → VMImage [0..*]
* ``containerImages`` → ContainerImage [0..*]
* ``networks`` → Network [0..*]
* ``storages`` → Storage [0..*]
* ``faas`` → FunctionAsAService [0..*]
* ``group`` → ComputingGroup [0..*]
.. _v2.1_concrete_Storage:
Storage
"""""""
*Inherits from* :ref:`ConcreteElement <v2.1_concrete_ConcreteElement>`
* Associations:
* ``maps`` → Storage [0..1]
.. _v2.1_concrete_VMImage:
VMImage
"""""""
*Inherits from* :ref:`ConcreteElement <v2.1_concrete_ConcreteElement>`
* Associations:
* ``maps`` → VMImage [0..1]
.. _v2.1_concrete_VirtualMachine:
VirtualMachine
""""""""""""""
*Inherits from* :ref:`ConcreteElement <v2.1_concrete_ConcreteElement>`
* Associations:
* ``maps`` → VirtualMachine [0..1]
DOML v2.2 Reference
=============================
commons
^^^^^^^
.. _v2.2_commons_BProperty:
BProperty
"""""""""
*Inherits from* :ref:`Property <v2.2_commons_Property>`
* Attributes:
* ``value`` [Boolean]
.. _v2.2_commons_Configuration:
Configuration
"""""""""""""
*Inherits from* :ref:`DOMLElement <v2.2_commons_DOMLElement>`
* Associations:
* ``deployments`` → Deployment [0..*]
.. _v2.2_commons_Credentials:
Credentials
"""""""""""
*Inherits from* :ref:`DOMLElement <v2.2_commons_DOMLElement>`
.. _v2.2_commons_DOMLElement:
DOMLElement
"""""""""""
* Associations:
* ``annotations`` → Property [0..*]
* Attributes:
* ``name`` [String]
* ``description`` [String]
.. _v2.2_commons_DeployableElement:
DeployableElement
"""""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.2_commons_DOMLElement>`
.. _v2.2_commons_Deployment:
Deployment
""""""""""
* Associations:
* ``component`` → DeployableElement [1..1]
* ``node`` → InfrastructureElement [1..1]
.. _v2.2_commons_FProperty:
FProperty
"""""""""
*Inherits from* :ref:`Property <v2.2_commons_Property>`
* Attributes:
* ``value`` [String]
.. _v2.2_commons_IProperty:
IProperty
"""""""""
*Inherits from* :ref:`Property <v2.2_commons_Property>`
* Attributes:
* ``value`` [Integer]
.. _v2.2_commons_KeyPair:
KeyPair
"""""""
*Inherits from* :ref:`Credentials <v2.2_commons_Credentials>`
* Attributes:
* ``user`` [String]
* ``keyfile`` [String]
* ``algorithm`` [String]
* ``bits`` [Integer]
.. _v2.2_commons_Property:
Property
""""""""
* Associations:
* ``reference`` → DOMLElement [0..1]
* Attributes:
* ``key`` [String]
.. _v2.2_commons_SProperty:
SProperty
"""""""""
*Inherits from* :ref:`Property <v2.2_commons_Property>`
* Attributes:
* ``value`` [String]
.. _v2.2_commons_Source:
Source
""""""
*Inherits from* :ref:`DOMLElement <v2.2_commons_DOMLElement>`
* Attributes:
* ``entry`` [String]
* ``backend`` [String]
.. _v2.2_commons_UserPass:
UserPass
""""""""
*Inherits from* :ref:`Credentials <v2.2_commons_Credentials>`
* Attributes:
* ``user`` [String]
* ``password`` [String]
application
^^^^^^^^^^^
.. _v2.2_application_ApplicationComponent:
ApplicationComponent
""""""""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.2_commons_DOMLElement>`
.. _v2.2_application_ApplicationLayer:
ApplicationLayer
""""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.2_commons_DOMLElement>`
* Associations:
* ``components`` → ApplicationComponent [0..*]
.. _v2.2_application_DBMS:
DBMS
""""
*Inherits from* :ref:`SoftwareComponent <v2.2_application_SoftwareComponent>`
.. _v2.2_application_SaaS:
SaaS
""""
*Inherits from* :ref:`ApplicationComponent <v2.2_application_ApplicationComponent>`
* Associations:
* ``exposedInterfaces`` → SoftwareInterface [0..*]
* Attributes:
* ``licenseCost`` [String]
.. _v2.2_application_SaaSDBMS:
SaaSDBMS
""""""""
*Inherits from* :ref:`SaaS <v2.2_application_SaaS>`
.. _v2.2_application_SoftwareComponent:
SoftwareComponent
"""""""""""""""""
*Inherits from* :ref:`ApplicationComponent <v2.2_application_ApplicationComponent>`
* Associations:
* ``exposedInterfaces`` → SoftwareInterface [0..*]
* ``consumedInterfaces`` → SoftwareInterface [0..*]
* ``src`` → Source [0..1]
* Attributes:
* ``isPersistent`` [Boolean]
* ``licenseCost`` [String]
.. _v2.2_application_SoftwareInterface:
SoftwareInterface
"""""""""""""""""
*Inherits from* :ref:`ApplicationComponent <v2.2_application_ApplicationComponent>`
* Attributes:
* ``endPoint`` [String]
infrastructure
^^^^^^^^^^^^^^
.. _v2.2_infrastructure_AutoScalingGroup:
AutoScalingGroup
""""""""""""""""
*Inherits from* :ref:`ComputingGroup <v2.2_infrastructure_ComputingGroup>`
* Associations:
* ``machineDefinition`` → VirtualMachine [1..1]
* ``securityGroup`` → SecurityGroup [0..1]
* Attributes:
* ``min`` [Integer]
* ``max`` [Integer]
* ``loadBalancer`` [String]
.. _v2.2_infrastructure_ComputingGroup:
ComputingGroup
""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.2_commons_DOMLElement>`
* Associations:
* ``groupedNodes`` → ComputingNode [0..*]
.. _v2.2_infrastructure_ComputingNode:
ComputingNode
"""""""""""""
*Inherits from* :ref:`InfrastructureElement <v2.2_infrastructure_InfrastructureElement>`
* Associations:
* ``ifaces`` → NetworkInterface [0..*]
* ``location`` → Location [0..1]
* ``credentials`` → Credentials [0..1]
* ``group`` → ComputingGroup [0..1]
* Attributes:
* ``architecture`` [String]
* ``os`` [String]
* ``memory_mb`` [Integer]
* ``memory_kb`` [Integer]
* ``storage`` [String]
* ``cpu_count`` [Integer]
* ``cost`` [Integer]
* ``disabledMonitorings`` [String]
.. _v2.2_infrastructure_ComputingNodeGenerator:
ComputingNodeGenerator
""""""""""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.2_commons_DOMLElement>`
* Attributes:
* ``uri`` [String]
* ``kind`` [GeneratorKind]
.. _v2.2_infrastructure_Container:
Container
"""""""""
*Inherits from* :ref:`ComputingNode <v2.2_infrastructure_ComputingNode>`
* Associations:
* ``generatedFrom`` → ContainerImage [0..1]
* ``configs`` → ContainerConfig [0..*]
.. _v2.2_infrastructure_ContainerConfig:
ContainerConfig
"""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.2_commons_DOMLElement>`
* Associations:
* ``host`` → ComputingNode [0..1]
* ``iface`` → NetworkInterface [0..1]
* Attributes:
* ``container_port`` [Integer]
* ``vm_port`` [Integer]
.. _v2.2_infrastructure_ContainerImage:
ContainerImage
""""""""""""""
*Inherits from* :ref:`ComputingNodeGenerator <v2.2_infrastructure_ComputingNodeGenerator>`
* Associations:
* ``generatedContainers`` → Container [0..*]
.. _v2.2_infrastructure_ExtInfrastructureElement:
ExtInfrastructureElement
""""""""""""""""""""""""
*Inherits from* :ref:`InfrastructureElement <v2.2_infrastructure_InfrastructureElement>`
.. _v2.2_infrastructure_FunctionAsAService:
FunctionAsAService
""""""""""""""""""
*Inherits from* :ref:`InfrastructureElement <v2.2_infrastructure_InfrastructureElement>`
* Associations:
* ``ifaces`` → NetworkInterface [0..*]
* Attributes:
* ``cost`` [Integer]
.. _v2.2_infrastructure_InfrastructureElement:
InfrastructureElement
"""""""""""""""""""""
*Inherits from* :ref:`DeployableElement <v2.2_commons_DeployableElement>`
.. _v2.2_infrastructure_InfrastructureLayer:
InfrastructureLayer
"""""""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.2_commons_DOMLElement>`
* Associations:
* ``nodes`` → ComputingNode [0..*]
* ``generators`` → ComputingNodeGenerator [0..*]
* ``storages`` → Storage [0..*]
* ``faas`` → FunctionAsAService [0..*]
* ``credentials`` → Credentials [0..*]
* ``groups`` → ComputingGroup [0..*]
* ``securityGroups`` → SecurityGroup [0..*]
* ``networks`` → Network [0..*]
* ``rules`` → MonitoringRule [0..*]
.. _v2.2_infrastructure_InternetGateway:
InternetGateway
"""""""""""""""
*Inherits from* :ref:`NetworkInterface <v2.2_infrastructure_NetworkInterface>`
.. _v2.2_infrastructure_Location:
Location
""""""""
*Inherits from* :ref:`DOMLElement <v2.2_commons_DOMLElement>`
* Attributes:
* ``region`` [String]
* ``zone`` [String]
.. _v2.2_infrastructure_MonitoringRule:
MonitoringRule
""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.2_commons_DOMLElement>`
* Attributes:
* ``condition`` [String]
* ``strategy`` [String]
* ``strategyConfigurationString`` [String]
.. _v2.2_infrastructure_Network:
Network
"""""""
*Inherits from* :ref:`DOMLElement <v2.2_commons_DOMLElement>`
* Associations:
* ``connectedIfaces`` → NetworkInterface [0..*]
* ``igws`` → InternetGateway [0..*]
* ``subnets`` → Subnet [0..*]
* Attributes:
* ``protocol`` [String]
* ``addressRange`` [String]
* ``cidr`` [Integer]
.. _v2.2_infrastructure_NetworkInterface:
NetworkInterface
""""""""""""""""
*Inherits from* :ref:`InfrastructureElement <v2.2_infrastructure_InfrastructureElement>`
* Associations:
* ``belongsTo`` → Network [0..1]
* ``associated`` → SecurityGroup [0..1]
* Attributes:
* ``endPoint`` [Integer]
* ``speed`` [String]
.. _v2.2_infrastructure_PhysicalComputingNode:
PhysicalComputingNode
"""""""""""""""""""""
*Inherits from* :ref:`ComputingNode <v2.2_infrastructure_ComputingNode>`
.. _v2.2_infrastructure_Rule:
Rule
""""
*Inherits from* :ref:`DOMLElement <v2.2_commons_DOMLElement>`
* Attributes:
* ``kind`` [String]
* ``protocol`` [String]
* ``fromPort`` [Integer]
* ``toPort`` [Integer]
* ``cidr`` [String]
.. _v2.2_infrastructure_SecurityGroup:
SecurityGroup
"""""""""""""
*Inherits from* :ref:`DOMLElement <v2.2_commons_DOMLElement>`
* Associations:
* ``rules`` → Rule [0..*]
* ``ifaces`` → NetworkInterface [0..*]
.. _v2.2_infrastructure_Storage:
Storage
"""""""
*Inherits from* :ref:`InfrastructureElement <v2.2_infrastructure_InfrastructureElement>`
* Associations:
* ``ifaces`` → NetworkInterface [0..*]
* Attributes:
* ``label`` [String]
* ``size_gb`` [Integer]
* ``cost`` [Integer]
.. _v2.2_infrastructure_Subnet:
Subnet
""""""
*Inherits from* :ref:`Network <v2.2_infrastructure_Network>`
* Associations:
* ``connectedTo`` → Network [0..1]
.. _v2.2_infrastructure_Swarm:
Swarm
"""""
*Inherits from* :ref:`ComputingGroup <v2.2_infrastructure_ComputingGroup>`
* Associations:
* ``roles`` → SwarmRole [0..*]
.. _v2.2_infrastructure_SwarmRole:
SwarmRole
"""""""""
*Inherits from* :ref:`DOMLElement <v2.2_commons_DOMLElement>`
* Associations:
* ``nodes`` → ComputingNode [0..*]
* Attributes:
* ``kind`` [String]
.. _v2.2_infrastructure_VMImage:
VMImage
"""""""
*Inherits from* :ref:`ComputingNodeGenerator <v2.2_infrastructure_ComputingNodeGenerator>`
* Associations:
* ``generatedVMs`` → VirtualMachine [0..*]
.. _v2.2_infrastructure_VirtualMachine:
VirtualMachine
""""""""""""""
*Inherits from* :ref:`ComputingNode <v2.2_infrastructure_ComputingNode>`
* Associations:
* ``generatedFrom`` → VMImage [0..1]
* Attributes:
* ``sizeDescription`` [String]
concrete
^^^^^^^^
.. _v2.2_concrete_ComputingGroup:
ComputingGroup
""""""""""""""
*Inherits from* :ref:`ConcreteElement <v2.2_concrete_ConcreteElement>`
* Associations:
* ``maps`` → ComputingGroup [1..1]
.. _v2.2_concrete_ConcreteElement:
ConcreteElement
"""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.2_commons_DOMLElement>`
* Attributes:
* ``configurationScript`` [String]
* ``preexisting`` [Boolean]
.. _v2.2_concrete_ConcreteInfrastructure:
ConcreteInfrastructure
""""""""""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.2_commons_DOMLElement>`
* Associations:
* ``providers`` → RuntimeProvider [0..*]
.. _v2.2_concrete_ContainerImage:
ContainerImage
""""""""""""""
*Inherits from* :ref:`ConcreteElement <v2.2_concrete_ConcreteElement>`
* Associations:
* ``maps`` → ContainerImage [0..1]
.. _v2.2_concrete_FunctionAsAService:
FunctionAsAService
""""""""""""""""""
*Inherits from* :ref:`ConcreteElement <v2.2_concrete_ConcreteElement>`
* Associations:
* ``maps`` → FunctionAsAService [0..1]
.. _v2.2_concrete_Network:
Network
"""""""
*Inherits from* :ref:`ConcreteElement <v2.2_concrete_ConcreteElement>`
* Associations:
* ``maps`` → Network [0..1]
.. _v2.2_concrete_RuntimeProvider:
RuntimeProvider
"""""""""""""""
*Inherits from* :ref:`DOMLElement <v2.2_commons_DOMLElement>`
* Associations:
* ``vms`` → VirtualMachine [0..*]
* ``vmImages`` → VMImage [0..*]
* ``containerImages`` → ContainerImage [0..*]
* ``networks`` → Network [0..*]
* ``storages`` → Storage [0..*]
* ``faas`` → FunctionAsAService [0..*]
* ``group`` → ComputingGroup [0..*]
.. _v2.2_concrete_Storage:
Storage
"""""""
*Inherits from* :ref:`ConcreteElement <v2.2_concrete_ConcreteElement>`
* Associations:
* ``maps`` → Storage [0..1]
.. _v2.2_concrete_VMImage:
VMImage
"""""""
*Inherits from* :ref:`ConcreteElement <v2.2_concrete_ConcreteElement>`
* Associations:
* ``maps`` → VMImage [0..1]
.. _v2.2_concrete_VirtualMachine:
VirtualMachine
""""""""""""""
*Inherits from* :ref:`ConcreteElement <v2.2_concrete_ConcreteElement>`
* Associations:
* ``maps`` → VirtualMachine [0..1]
......@@ -10,11 +10,21 @@ For now, it can be provided to the Model Checker through the CLI.
Getting Started
===============
First, create a new file with a ``.domlr`` extension.
At the moment, you can integrate the requirements inside DOML using the ``functional_requirements`` field::
If you use VS Code, there's a `Syntax Highlight`_ extension for it.
functional_requirements {
req_group_1 ```
# Your DOMLR goes here.
```;
req_group_2 ```
# Other set of requirements
```;
}
Every user requirement file is a list of requirement::
If you want to write a snippet of DOMLR using VS Code, there's a `Syntax Highlight`_ extension for it.
Every DOMLR piece of code is a list of requirement::
+ "All Virtual Machines have a Interface and at least 4 cpu cores"
forall vm (
......@@ -26,7 +36,7 @@ Every user requirement file is a list of requirement::
vm has abstract.ComputingNode.cpu_count >= 4
)
)
error: "A vm does lacks an associated interface or has less than 4 CPUs"
error: "A vm lacks an associated interface or has less than 4 CPUs"
Rules in 1 minute
-----------------
......@@ -39,11 +49,6 @@ The language is *case-sensitive* but it's not indentation-based, so you are free
- ``-`` means that the requirement is in **negative form**: the requirement is satisfied when its logic expression **is not** satisfied.
The difference is that in **positive form** you would generally use a *for all* quantifier at the beginning,
which doesn't allow you to know which specific element didn't satisfy the requirement, while in **negative form**
you'll have some variables that are not quantified, meaning that it's usually possible to retrieve the names of the
elements associated to those variables that do not satisfy the requirement.
2. After the ``+`` or ``-`` there's the **name** of the requirement, which is a string between double quotes ``"..."``.
Single quotes ``'...'`` won't work.
......@@ -54,6 +59,17 @@ The language is *case-sensitive* but it's not indentation-based, so you are free
If you have a free variable, which means a variable that is not quantified, you can print its value by putting it in the
string between curly brackets like this: ``{myVar}``. You'll get a warning if the Model Checker can't assign a value to that variable.
A note on positive and negative form
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The difference is that in **positive form** you would generally use a *for all* quantifier at the beginning,
which doesn't allow you to know which specific element didn't satisfy the requirement, while in **negative form**
you'll have some variables that are not quantified, meaning that it's usually possible to retrieve the names of the
elements associated to those variables that do not satisfy the requirement. **Negative form** is usually faster, you
can convert an expression into it using :math:numref:`logicconv`, where :math:`P(x)` is a statement containing quantified variable :math:`x`.
.. math:: \forall x P(x) \iff \neg\exists x \neg P(x)
:label: logicconv
.. `Syntax`:
Syntax
......@@ -108,6 +124,52 @@ Operator Precedence
``exists``/``forall`` > ``not`` > ``or`` > ``and`` > ``implies`` > ``iff``
Examples
========
1. State that an element must be of a certain class::
saas is class application.SaaS
2. Check that an element has a certain relationship with another::
vm has infrastructure.ComputingNode.ifaces iface
Note that in the above example we haven't said anything about the nature of ``vm``.
We get that ``iface`` is of class ``NetworkInterface`` for free since the association ``infrastructure.ComputingNode.ifaces`` requires it.
If you want ``vm`` to be a `VirtualMachine` you should specify it as::
vm is class infrastructure.VirtualMachine
and
vm has infrastructure.ComputingNode.ifaces iface
3. State that all VMs have to use less than 1 GB of memory::
forall vm (
vm is class infrastructure.VirtualMachine
implies
vm has infrastructure.ComputingNode.memory_mb <= 1024
)
We use ``forall`` to say that all ``vm``, **if** (that's what ``implies`` does) ``vm`` that are ``VirtualMachine``,
then it should have less than 1024 MB (memory here is expressed in MB).
If we want to rewrite this requirement in negative form, it becomes *'There is a VM that has more than 1 GB'*. If there exists such VM, then it means that
the expression is *true*, therefore the requirement is *false*::
exists vm (
vm is class infrastructure.VirtualMachine
and
vm has infrastructure.ComputingNode.memory_mb > 1024
# we can also write it as a negation
or not vm has infrastructure.ComputingNode.memory <= 1024
)
4. Compare two attributes of two elements. Let's say that you have two different containers, ``c1`` and ``c2``, and you want to require
that the memory used by ``c1`` is less than the one used by ``c2`` (note that we don't put another ``has`` in the expression in right hand side of ``<``)::
c1 has infrastructure.ComputingNode.memory_mb < c2 infrastructure.ComputingNode.memory_mb
Grammar
=======
See the `grammar.lark`_ file on GitHub, it's written in a EBNF-like form.
......@@ -115,4 +177,4 @@ See the `grammar.lark`_ file on GitHub, it's written in a EBNF-like form.
.. _`Syntax Highlight`: https://marketplace.visualstudio.com/items?itemName=andreafra.piacere-domlr
.. _`First Order Logic`: https://en.wikipedia.org/wiki/First-order_logic
.. _`grammar.lark`: https://github.com/andreafra/piacere-model-checker/blob/main/mc_openapi/doml_mc/dsl_parser/grammar.lark
\ No newline at end of file
.. _`grammar.lark`: https://github.com/andreafra/piacere-model-checker/blob/main/mc_openapi/doml_mc/domlr_parser/grammar.lark
\ No newline at end of file
from mc_openapi.doml_mc.intermediate_model.metamodel import DOMLVersion, MetaModels
from pprint import pprint
from itertools import groupby
DOCS_PATH = lambda version: f"docs/reference_{version}.rst"
DOML_VERSIONS = [v for v in DOMLVersion]
with open(DOCS_PATH('index'), 'w') as findex:
print("DOML Reference", file=findex)
print("==============\n", file=findex)
print("For a comprehensive list of all the classes, attributes and associations supported in the DOML Model Checker and DOMLR, please consult one of the following pages.\n", file=findex)
for version in DOML_VERSIONS:
v_name = f':doc:`Reference for DOML {version.value} <reference_{version.value}>`'
print(v_name, file=findex)
print('-'*len(v_name), file=findex)
with open(DOCS_PATH(version.value), 'w') as f:
print(f"DOML {version.value} Reference", file=f)
print("=============================\n", file=f)
MM = MetaModels[version]
# ITEM => (package, class, assoc, attrs)
ITEMS = [(*(k.split("_", 1)), v.superclass, v.associations, v.attributes) for k, v in MM.items()]
# PKG => CLASS => {ASSOC, ATTRS}
ITEMS = {k: [dict(zip(("name", "superclass", "assocs", "attrs"), (x[1], x[2], x[3], x[4]))) for x in v] for k, v in groupby(ITEMS, key=lambda x: x[0])}
for pkg, clss in ITEMS.items():
print(f'\n{pkg}', file=f)
print('^'*(len(pkg)), file=f)
for cls in sorted(clss, key=lambda x: x.get('name')):
name = cls.get('name')
supcls = cls.get('superclass')
print(f'\n.. _{version.value}_{pkg}_{name}:', file=f)
print(f'\n{name}', file=f)
print('"'*(len(name)), file=f)
if supcls:
supcls_name = supcls.split("_", 1)[1]
print(f'*Inherits from* :ref:`{supcls_name} <{version.value}_{supcls}>`\n', file=f)
if (cls.get('assocs')):
print(f'* Associations:', file=f)
for assoc_k, assoc_v in cls.get('assocs').items():
dest_cls = assoc_v.class_.split("_", 1)[1]
print(f'\t* ``{assoc_k}`` → {dest_cls} [{assoc_v.multiplicity[0]}..{assoc_v.multiplicity[1]}]', file=f)
if (cls.get('attrs')):
print(f'* Attributes:', file=f)
for attr_k, attr_v in cls.get('attrs').items():
print(f'\t* ``{attr_k}`` [{attr_v.type}]', file=f)
print("\n\n", file=f)
print(f"Generated new reference for DOML {version.value} in {DOCS_PATH(version.value)}")
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment