diff --git a/docs/dict_reference.rst b/docs/dict_reference.rst deleted file mode 100644 index f081c0ae71596cee72ea04bc90f9fb25211feeee..0000000000000000000000000000000000000000 --- a/docs/dict_reference.rst +++ /dev/null @@ -1,171 +0,0 @@ -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 diff --git a/docs/index.rst b/docs/index.rst index dbb3f36d3a996bdf801893b338c2ae04707ab7cb..61192c2eafb2647b10f088aee325397520e3676e 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -20,6 +20,7 @@ in charge of checking the correctness and consistency of `DOML`_ models. writing-requirements requirements restapis + reference_index .. Indices and tables diff --git a/docs/reference_index.rst b/docs/reference_index.rst new file mode 100644 index 0000000000000000000000000000000000000000..ea6fe70bac0a9cce4487e1af14f17256434fa82e --- /dev/null +++ b/docs/reference_index.rst @@ -0,0 +1,11 @@ +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>` +----------------------------------------------- diff --git a/docs/reference_v2.0.rst b/docs/reference_v2.0.rst new file mode 100644 index 0000000000000000000000000000000000000000..5d59dc06766198c6f51eb611511f6ff1b31ad8e3 --- /dev/null +++ b/docs/reference_v2.0.rst @@ -0,0 +1,530 @@ +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] + + + diff --git a/docs/reference_v2.1.rst b/docs/reference_v2.1.rst new file mode 100644 index 0000000000000000000000000000000000000000..ec6b8d8453142bb870d15d7f9f161b382319f832 --- /dev/null +++ b/docs/reference_v2.1.rst @@ -0,0 +1,544 @@ +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] + + + diff --git a/docs/reference_v2.2.rst b/docs/reference_v2.2.rst new file mode 100644 index 0000000000000000000000000000000000000000..f72bdd429573e40f83c96f94048874b91f6ca625 --- /dev/null +++ b/docs/reference_v2.2.rst @@ -0,0 +1,573 @@ +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] + + + diff --git a/docs/writing-requirements.rst b/docs/writing-requirements.rst index b30ec9408365d27dd0f516257badfe6922cbecd0..9d00a36e1f131b4f5262af2f8d3df0be80d87834 100644 --- a/docs/writing-requirements.rst +++ b/docs/writing-requirements.rst @@ -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 diff --git a/gen_domlr_reference.py b/gen_domlr_reference.py new file mode 100644 index 0000000000000000000000000000000000000000..336e1299b7d1360c37f962bbfea68fa4f01de43a --- /dev/null +++ b/gen_domlr_reference.py @@ -0,0 +1,52 @@ +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