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

Add support for DOML 3.0

parent f5f44e16
Branches
No related tags found
No related merge requests found
__version__ = '2.4.1'
__version__ = '2.5.0'
commons:
DOMLElement:
attributes:
name:
type: String
multiplicity: "0..1"
description:
type: String
multiplicity: "0..1"
associations:
annotations:
class: commons_Property
multiplicity: "0..*"
Property:
attributes:
key:
type: String
multiplicity: "0..1"
associations:
reference:
class: commons_DOMLElement
multiplicity: "0..1"
IProperty:
superclass: commons_Property
attributes:
value:
type: Integer
multiplicity: "0..1"
SProperty:
superclass: commons_Property
attributes:
value:
type: String
multiplicity: "0..1"
FProperty:
superclass: commons_Property
attributes:
value:
type: String
multiplicity: "0..1"
BProperty:
superclass: commons_Property
attributes:
value:
type: Boolean
multiplicity: "0..1"
Configuration:
superclass: commons_DOMLElement
associations:
deployments:
class: commons_Deployment
multiplicity: "0..*"
Credentials:
abstract: true
superclass: commons_DOMLElement
DeployableElement:
abstract: true
superclass: commons_DOMLElement # It's not present in the ECore, but without it breaks.
Deployment:
associations:
component:
class: commons_DeployableElement
multiplicity: "1"
node:
class: infrastructure_InfrastructureElement
multiplicity: "1"
KeyPair:
superclass: commons_Credentials
attributes:
user:
type: String
multiplicity: "0..1"
keyfile:
type: String
multiplicity: "0..1"
algorithm:
type: String
multiplicity: "0..1"
bits:
type: Integer
multiplicity: "0..1"
UserPass:
superclass: commons_Credentials
attributes:
username:
type: String
multiplicity: "0..1"
password:
type: String
multiplicity: "0..1"
Source:
superclass: commons_DOMLElement
attributes:
entry:
type: String
multiplicity: "0..*"
backend:
type: String
multiplicity: "0..*"
application:
ApplicationLayer:
superclass: commons_DOMLElement
associations:
components:
class: application_ApplicationComponent
multiplicity: "0..*"
ApplicationComponent:
superclass: commons_DeployableElement # and commons_DOMLElement too, but that's definitely wrong; keeping discarding DOMLElement since DeplElem inherits it.
SoftwareComponent:
superclass: application_ApplicationComponent
attributes:
isPersistent:
type: Boolean
multiplicity: "1"
default: false
licenseCost:
type: String
multiplicity: "0..1"
associations:
exposedInterfaces:
class: application_SoftwareInterface
multiplicity: "0..*"
consumedInterfaces:
class: application_SoftwareInterface
multiplicity: "0..*"
src:
class: commons_Source
multiplicity: "0..1"
SaaS:
superclass: application_ApplicationComponent
attributes:
licenseCost:
type: String
multiplicity: "0..1"
associations:
exposedInterfaces:
class: application_SoftwareInterface
multiplicity: "0..*"
SoftwareInterface:
superclass: application_ApplicationComponent
attributes:
endPoint:
type: String
multiplicity: "0..1"
DBMS:
superclass: application_SoftwareComponent
SaaSDBMS:
superclass: application_SaaS
infrastructure:
InfrastructureLayer:
superclass: commons_DOMLElement
associations:
nodes:
class: infrastructure_ComputingNode
multiplicity: "0..*"
generators:
class: infrastructure_ComputingNodeGenerator
multiplicity: "0..*"
storages:
class: infrastructure_Storage
multiplicity: "0..*"
faas:
class: infrastructure_FunctionAsAService
multiplicity: "0..*"
credentials:
class: commons_Credentials
multiplicity: "0..*"
groups:
class: infrastructure_ComputingGroup
multiplicity: "0..*"
securityGroups:
class: infrastructure_SecurityGroup
multiplicity: "0..*"
networks:
class: infrastructure_Network
multiplicity: "0..*"
rules:
class: infrastructure_MonitoringRule
multiplicity: "0..*"
MonitoringRule:
superclass: commons_DOMLElement
attributes:
condition:
type: String
multiplicity: "1"
strategy:
type: String
multiplicity: "1"
strategyConfigurationString:
type: String
multiplicity: "0..1"
InfrastructureElement:
superclass: commons_DeployableElement
Node:
superclass: infrastructure_InfrastructureElement
associations:
ifaces:
class: infrastructure_NetworkInterface
multiplicity: "0..*"
ComputingNode:
superclass: infrastructure_Node
attributes:
architecture:
type: String
multiplicity: "0..1"
os:
type: String
multiplicity: "0..1"
memory_mb:
type: Integer
multiplicity: "0..1"
memory_kb: # Missing in official Ecore, added by parser
type: Integer
multiplicity: "0..1"
storage:
type: String
multiplicity: "0..1"
cpu_count:
type: Integer
multiplicity: "0..1"
cost:
type: Integer # in cents
multiplicity: "0..1"
disabledMonitorings:
type: String
multiplicity: "0..1"
associations:
location:
class: infrastructure_Location
multiplicity: "0..1"
credentials:
class: commons_Credentials
multiplicity: "0..1"
group:
class: infrastructure_ComputingGroup
multiplicity: "0..1"
inverse_of: infrastructure_ComputingGroup::groupedNodes
nodeSpecificMonitoring:
class: infrastructure_MonitoringRule
multiplicity: "0..1"
PhysicalComputingNode:
superclass: infrastructure_ComputingNode
VirtualMachine:
superclass: infrastructure_ComputingNode
attributes:
sizeDescription:
type: String
multiplicity: "0..1"
associations:
generatedFrom:
class: infrastructure_VMImage
multiplicity: "0..1"
Location:
superclass: commons_DOMLElement
attributes:
region:
type: String
multiplicity: "0..1"
zone:
type: String
multiplicity: "0..1"
ContainerConfig:
superclass: commons_DOMLElement
attributes:
container_port:
type: Integer
multiplicity: "0..1"
vm_port:
type: Integer
multiplicity: "0..1"
associations:
host:
class: infrastructure_ComputingNode
multiplicity: "0..1"
iface:
class: infrastructure_NetworkInterface
multiplicity: "0..1"
Container:
superclass: infrastructure_ComputingNode
associations:
generatedFrom:
class: infrastructure_ContainerImage
multiplicity: "0..1"
configs:
class: infrastructure_ContainerConfig
multiplicity: "0..*"
ComputingNodeGenerator:
superclass: commons_DOMLElement
attributes:
uri:
type: String
multiplicity: "0..1"
kind:
type: GeneratorKind # enum { SCRIPT, IMAGE }
VMImage:
superclass: infrastructure_ComputingNodeGenerator
associations:
generatedVMs:
class: infrastructure_VirtualMachine
multiplicity: "0..*"
inverse_of: infrastructure_VirtualMachine::generatedFrom
ContainerImage:
superclass: infrastructure_ComputingNodeGenerator
associations:
generatedContainers:
class: infrastructure_Container
multiplicity: "0..*"
inverse_of: infrastructure_Container::generatedFrom
AutoScalingGroup:
superclass: infrastructure_ComputingGroup
attributes:
min:
type: Integer
multiplicity: "0..1"
max:
type: Integer
multiplicity: "0..1"
loadBalancer:
type: String
multiplicity: "0..1"
associations:
machineDefinition:
class: infrastructure_VirtualMachine
multiplicity: "1"
securityGroup:
class: infrastructure_SecurityGroup
multiplicity: "0..1"
Storage:
superclass: infrastructure_Node
attributes:
label:
type: String
multiplicity: "0..1"
size_gb:
type: Integer # in GBs
multiplicity: "0..1"
cost:
type: Integer # in cents
multiplicity: "0..1"
FunctionAsAService:
superclass: infrastructure_InfrastructureElement
attributes:
cost:
type: Integer # in cents
multiplicity: "0..1"
Network:
superclass: commons_DOMLElement
attributes:
protocol:
type: String
multiplicity: "0..1"
addressRange:
type: String
multiplicity: "0..1"
cidr:
type: Integer
multiplicity: "0..1"
associations:
connectedIfaces:
class: infrastructure_NetworkInterface
multiplicity: "0..*"
inverse_of: infrastructure_NetworkInterface::belongsTo
gateways:
class: infrastructure_InternetGateway
multiplicity: "0..*"
subnets:
class: infrastructure_Subnet
multiplicity: "0..*"
Subnet:
superclass: infrastructure_Network
associations:
connectedTo:
class: infrastructure_Network
multiplicity: "0..*"
NetworkInterface:
superclass: infrastructure_InfrastructureElement
attributes:
endPoint:
type: Integer
multiplicity: "0..1"
speed:
type: String
multiplicity: "0..1"
associations:
belongsTo:
class: infrastructure_Network
multiplicity: "0..1" # This should be "1", but it would break InternetGateway
associated:
class: infrastructure_SecurityGroup
multiplicity: "0..1"
InternetGateway:
superclass: infrastructure_Node
attributes:
address:
type: String
multiplicity: "1"
ComputingGroup:
superclass: commons_DOMLElement
associations:
groupedNodes:
class: infrastructure_ComputingNode
multiplicity: "0..*"
inverse_of: infrastructure_ComputingNode::group
SecurityGroup:
superclass: commons_DOMLElement
associations:
rules:
class: infrastructure_Rule
multiplicity: "0..*"
ifaces:
class: infrastructure_NetworkInterface
multiplicity: "0..*"
inverse_of: infrastructure_NetworkInterface::associated
Rule:
superclass: commons_DOMLElement
attributes:
kind:
type: String
multiplicity: "1"
protocol:
type: String
multiplicity: "1"
fromPort:
type: Integer
multiplicity: "1"
toPort:
type: Integer
multiplicity: "1"
cidr:
type: String
multiplicity: "0..*"
SwarmRole:
superclass: commons_DOMLElement
attributes:
kind:
type: String
multiplicity: "1"
associations:
nodes:
class: infrastructure_ComputingNode
multiplicity: "0..*"
Swarm:
superclass: infrastructure_ComputingGroup
associations:
roles:
class: infrastructure_SwarmRole
multiplicity: "0..*"
ExtInfrastructureElement:
superclass: infrastructure_InfrastructureElement
concrete:
ConcreteInfrastructure:
superclass: commons_DOMLElement
associations:
providers:
class: concrete_RuntimeProvider
multiplicity: "0..*"
ConcreteElement:
superclass: commons_DOMLElement
associations:
refs:
class: concrete_ConcreteElement
multiplicity: "0..*"
attributes:
configurationScript:
type: String
multiplicity: "0..1"
preexisting:
multiplicity: "1"
type: Boolean
default: false
RuntimeProvider:
superclass: commons_DOMLElement
associations:
resources:
class: concrete_GenericResource
multiplicity: "0..*"
vms:
class: concrete_VirtualMachine
multiplicity: "0..*"
vmImages:
class: concrete_VMImage
multiplicity: "0..*"
containerImages:
class: concrete_ContainerImage
multiplicity: "0..*"
networks:
class: concrete_Network
multiplicity: "0..*"
storages:
class: concrete_Storage
multiplicity: "0..*"
faas:
class: concrete_FunctionAsAService
multiplicity: "0..*"
group:
class: concrete_ComputingGroup
multiplicity: "0..*"
VirtualMachine:
superclass: concrete_ConcreteElement
associations:
maps:
class: infrastructure_VirtualMachine
multiplicity: "0..1"
VMImage:
superclass: concrete_ConcreteElement
attributes:
image_name:
type: String
multiplicity: "1"
associations:
maps:
class: infrastructure_VMImage
multiplicity: "0..1"
ContainerImage:
superclass: concrete_ConcreteElement
associations:
maps:
class: infrastructure_ContainerImage
multiplicity: "0..1"
Network:
superclass: concrete_ConcreteElement
associations:
maps:
class: infrastructure_Network
multiplicity: "0..1"
Storage:
superclass: concrete_ConcreteElement
associations:
maps:
class: infrastructure_Storage
multiplicity: "0..1"
FunctionAsAService:
superclass: concrete_ConcreteElement
associations:
maps:
class: infrastructure_FunctionAsAService
multiplicity: "0..1"
ComputingGroup:
superclass: concrete_ConcreteElement
associations:
maps:
class: infrastructure_ComputingGroup
multiplicity: "1"
GenericResource:
superclass: concrete_ConcreteElement
attributes:
type:
type: "String"
multiplicity: "1"
gname:
type: "String"
multiplicity: "1"
<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="doml" nsURI="http://www.piacere-project.eu/doml" nsPrefix="doml">
<eAnnotations source="emf.gen">
<details key="basePackage" value="eu.piacere.doml"/>
<details key="fileExtensions" value="domlx"/>
<details key="complianceLevel" value="JDK80"/>
</eAnnotations>
<eSubpackages name="commons" nsURI="http://www.piacere-project.eu/doml/commons"
nsPrefix="commons">
<eClassifiers xsi:type="ecore:EClass" name="DOMLModel" eSuperTypes="#//commons/DOMLElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="version" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
defaultValueLiteral="3.0"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="application" eType="#//application/ApplicationLayer"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="infrastructure" eType="#//infrastructure/InfrastructureLayer"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="concretizations" upperBound="-1"
eType="#//concrete/ConcreteInfrastructure" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="optimization" eType="#//optimization/OptimizationLayer"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="configurations" upperBound="-1"
eType="#//commons/Configuration" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="activeConfiguration"
eType="#//commons/Configuration"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="activeInfrastructure"
eType="#//concrete/ConcreteInfrastructure"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="functionalRequirements"
upperBound="-1" eType="#//commons/Requirement" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Property" abstract="true">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="key" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="IProperty" eSuperTypes="#//commons/Property">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SProperty" eSuperTypes="#//commons/Property">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="FProperty" eSuperTypes="#//commons/Property">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloatObject"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="BProperty" eSuperTypes="#//commons/Property">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExtensionElement" abstract="true">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="metaclassName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DOMLElement" abstract="true">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="annotations" upperBound="-1"
eType="#//commons/Property" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="contributesTo" upperBound="-1"
eType="#//commons/Requirement" eOpposite="#//commons/Requirement/predicatesOn"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Configuration" eSuperTypes="#//commons/DOMLElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="deployments" upperBound="-1"
eType="#//commons/Deployment" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DeployableElement" abstract="true"/>
<eClassifiers xsi:type="ecore:EClass" name="Deployment">
<eStructuralFeatures xsi:type="ecore:EReference" name="component" lowerBound="1"
eType="#//commons/DeployableElement"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="node" lowerBound="1"
eType="#//infrastructure/InfrastructureElement"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Requirement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="property" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="predicatesOn" upperBound="-1"
eType="#//commons/DOMLElement" eOpposite="#//commons/DOMLElement/contributesTo"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="RangedRequirement" eSuperTypes="#//commons/Requirement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="min" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloatObject"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="max" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloatObject"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="EnumeratedRequirement" eSuperTypes="#//commons/Requirement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="values" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DeploymentRequirement" abstract="true"
eSuperTypes="#//commons/Requirement"/>
<eClassifiers xsi:type="ecore:EClass" name="DeploymentToNodeTypeRequirement" eSuperTypes="#//commons/DeploymentRequirement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="validTypes" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DeploymentToNodeWithPropertyRequirement"
eSuperTypes="#//commons/DeploymentRequirement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="min" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloatObject"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="max" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloatObject"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="values" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DeploymentToSpecificNodeRequirement"
eSuperTypes="#//commons/DeploymentRequirement">
<eStructuralFeatures xsi:type="ecore:EReference" name="validElements" upperBound="-1"
eType="#//infrastructure/InfrastructureElement"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Credentials" abstract="true" eSuperTypes="#//commons/DOMLElement"/>
<eClassifiers xsi:type="ecore:EClass" name="KeyPair" eSuperTypes="#//commons/Credentials">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="user" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="keyfile" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="algorithm" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="bits" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="UserPass" eSuperTypes="#//commons/Credentials">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="username" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="password" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Source" eSuperTypes="#//commons/DOMLElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="entry" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="backend" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
</eSubpackages>
<eSubpackages name="application" nsURI="http://www.piacere-project.eu/doml/application"
nsPrefix="app">
<eClassifiers xsi:type="ecore:EClass" name="ApplicationLayer" eSuperTypes="#//commons/DOMLElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="components" upperBound="-1"
eType="#//application/ApplicationComponent" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ApplicationComponent" abstract="true"
eSuperTypes="#//commons/DOMLElement #//commons/DeployableElement"/>
<eClassifiers xsi:type="ecore:EClass" name="SoftwareComponent" eSuperTypes="#//application/ApplicationComponent">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isPersistent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"
defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="licenseCost" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloatObject"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="exposedInterfaces" upperBound="-1"
eType="#//application/SoftwareInterface" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="consumedInterfaces" upperBound="-1"
eType="#//application/SoftwareInterface"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="src" eType="#//commons/Source"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DBMS" eSuperTypes="#//application/SoftwareComponent"/>
<eClassifiers xsi:type="ecore:EClass" name="SaaS" eSuperTypes="#//application/ApplicationComponent">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="licenseCost" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloatObject"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="exposedInterfaces" upperBound="-1"
eType="#//application/SoftwareInterface" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SaaSDBMS" eSuperTypes="#//application/SaaS"/>
<eClassifiers xsi:type="ecore:EClass" name="SoftwareInterface" eSuperTypes="#//application/ApplicationComponent">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="endPoint" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExtApplicationComponent" eSuperTypes="#//application/ApplicationComponent #//commons/ExtensionElement"/>
</eSubpackages>
<eSubpackages name="infrastructure" nsURI="http://www.piacere-project.eu/doml/infrastructure"
nsPrefix="infra">
<eClassifiers xsi:type="ecore:EClass" name="InfrastructureLayer" eSuperTypes="#//commons/DOMLElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="nodes" upperBound="-1"
eType="#//infrastructure/ComputingNode" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="generators" upperBound="-1"
eType="#//infrastructure/ComputingNodeGenerator" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="storages" upperBound="-1"
eType="#//infrastructure/Storage" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="faas" upperBound="-1"
eType="#//infrastructure/FunctionAsAService" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="credentials" upperBound="-1"
eType="#//commons/Credentials" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="groups" upperBound="-1"
eType="#//infrastructure/ComputingGroup" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="securityGroups" upperBound="-1"
eType="#//infrastructure/SecurityGroup" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="networks" upperBound="-1"
eType="#//infrastructure/Network" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="rules" upperBound="-1"
eType="#//infrastructure/MonitoringRule" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MonitoringRule" eSuperTypes="#//commons/DOMLElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="condition" lowerBound="1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="strategy" lowerBound="1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="strategyConfigurationString"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ComputingGroup" abstract="true" eSuperTypes="#//commons/DOMLElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="groupedNodes" upperBound="-1"
eType="#//infrastructure/ComputingNode" eOpposite="#//infrastructure/ComputingNode/group"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AutoScalingGroup" eSuperTypes="#//infrastructure/ComputingGroup">
<eStructuralFeatures xsi:type="ecore:EReference" name="machineDefinition" lowerBound="1"
eType="#//infrastructure/VirtualMachine" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="min" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
defaultValueLiteral="1"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="max" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
defaultValueLiteral="1"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="securityGroup" eType="#//infrastructure/SecurityGroup"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="loadBalancer" eType="#//infrastructure/LoadBalancerKind"
defaultValueLiteral="DEFAULT"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="LoadBalancerKind">
<eLiterals name="DEFAULT"/>
<eLiterals name="INTERNAL" value="1"/>
<eLiterals name="EXTERNAL" value="2"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Rule" eSuperTypes="#//commons/DOMLElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//infrastructure/RuleKind"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="protocol" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="fromPort" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="toPort" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="cidr" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="RuleKind">
<eLiterals name="EGRESS"/>
<eLiterals name="INGRESS" value="1"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SecurityGroup" eSuperTypes="#//commons/DOMLElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="rules" upperBound="-1"
eType="#//infrastructure/Rule" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="ifaces" upperBound="-1"
eType="#//infrastructure/NetworkInterface" eOpposite="#//infrastructure/NetworkInterface/associated"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AvailabilityGroup" eSuperTypes="#//infrastructure/ComputingGroup"/>
<eClassifiers xsi:type="ecore:EClass" name="InfrastructureElement" abstract="true"
eSuperTypes="#//commons/DOMLElement #//commons/DeployableElement"/>
<eClassifiers xsi:type="ecore:EClass" name="Node" abstract="true" eSuperTypes="#//infrastructure/InfrastructureElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="ifaces" upperBound="-1"
eType="#//infrastructure/NetworkInterface" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ComputingNode" abstract="true" eSuperTypes="#//infrastructure/Node">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="architecture" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="os" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="memory_mb" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloatObject"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="storage" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="cpu_count" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="cost" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloatObject"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="location" eType="#//infrastructure/Location"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="credentials" eType="#//commons/Credentials"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="group" eType="#//infrastructure/ComputingGroup"
eOpposite="#//infrastructure/ComputingGroup/groupedNodes"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="nodeSpecificMonitoring"
upperBound="-1" eType="#//infrastructure/MonitoringRule"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="disabledMonitorings"
upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ComputingNodeGenerator" abstract="true"
eSuperTypes="#//commons/DOMLElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="uri" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//infrastructure/GeneratorKind"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="GeneratorKind">
<eLiterals name="SCRIPT"/>
<eLiterals name="IMAGE" value="1"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="VMImage" eSuperTypes="#//infrastructure/ComputingNodeGenerator">
<eStructuralFeatures xsi:type="ecore:EReference" name="generatedVMs" upperBound="-1"
eType="#//infrastructure/VirtualMachine" eOpposite="#//infrastructure/VirtualMachine/generatedFrom"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ContainerImage" eSuperTypes="#//infrastructure/ComputingNodeGenerator">
<eStructuralFeatures xsi:type="ecore:EReference" name="generatedContainers"
upperBound="-1" eType="#//infrastructure/Container" eOpposite="#//infrastructure/Container/generatedFrom"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PhysicalComputingNode" eSuperTypes="#//infrastructure/ComputingNode"/>
<eClassifiers xsi:type="ecore:EClass" name="VirtualMachine" eSuperTypes="#//infrastructure/ComputingNode">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="sizeDescription" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="generatedFrom" eType="#//infrastructure/VMImage"
eOpposite="#//infrastructure/VMImage/generatedVMs"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Location" eSuperTypes="#//commons/DOMLElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="region" lowerBound="1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="zone" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ContainerConfig" eSuperTypes="#//commons/DOMLElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="container_port" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="vm_port" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="host" eType="#//infrastructure/ComputingNode"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="iface" eType="#//infrastructure/NetworkInterface"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Container" eSuperTypes="#//infrastructure/ComputingNode">
<eStructuralFeatures xsi:type="ecore:EReference" name="generatedFrom" eType="#//infrastructure/ContainerImage"
eOpposite="#//infrastructure/ContainerImage/generatedContainers"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="configs" upperBound="-1"
eType="#//infrastructure/ContainerConfig" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Network" eSuperTypes="#//commons/DOMLElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="protocol" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="addressRange" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="connectedIfaces" upperBound="-1"
eType="#//infrastructure/NetworkInterface" eOpposite="#//infrastructure/NetworkInterface/belongsTo"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="gateways" upperBound="-1"
eType="#//infrastructure/InternetGateway" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="subnets" upperBound="-1"
eType="#//infrastructure/Subnet" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Subnet" eSuperTypes="#//infrastructure/Network">
<eStructuralFeatures xsi:type="ecore:EReference" name="connectedTo" upperBound="-1"
eType="#//infrastructure/Subnet"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NetworkInterface" eSuperTypes="#//infrastructure/InfrastructureElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="speed" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="endPoint" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="belongsTo" eType="#//infrastructure/Network"
eOpposite="#//infrastructure/Network/connectedIfaces"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="associated" upperBound="-1"
eType="#//infrastructure/SecurityGroup" eOpposite="#//infrastructure/SecurityGroup/ifaces"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InternetGateway" eSuperTypes="#//infrastructure/Node">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="address" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Storage" eSuperTypes="#//infrastructure/InfrastructureElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="label" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="size_gb" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="cost" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloatObject"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="FunctionAsAService" eSuperTypes="#//infrastructure/InfrastructureElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="cost" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloatObject"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="RoleKind">
<eLiterals name="NONE"/>
<eLiterals name="MANAGER" value="1"/>
<eLiterals name="WORKER" value="2"/>
<eLiterals name="MASTER" value="3"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SwarmRole" eSuperTypes="#//commons/DOMLElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//infrastructure/RoleKind"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="nodes" upperBound="-1"
eType="#//infrastructure/ComputingNode" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Swarm" eSuperTypes="#//infrastructure/ComputingGroup">
<eStructuralFeatures xsi:type="ecore:EReference" name="roles" upperBound="-1"
eType="#//infrastructure/SwarmRole" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExtInfrastructureElement" eSuperTypes="#//infrastructure/InfrastructureElement #//commons/ExtensionElement"/>
</eSubpackages>
<eSubpackages name="concrete" nsURI="http://www.piacere-project.eu/doml/concrete"
nsPrefix="concrete">
<eClassifiers xsi:type="ecore:EClass" name="ConcreteInfrastructure" eSuperTypes="#//commons/DOMLElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="providers" upperBound="-1"
eType="#//concrete/RuntimeProvider" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="RuntimeProvider" eSuperTypes="#//commons/DOMLElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="resources" upperBound="-1"
eType="#//concrete/GenericResource" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="vms" upperBound="-1"
eType="#//concrete/VirtualMachine" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="vmImages" upperBound="-1"
eType="#//concrete/VMImage" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="containerImages" upperBound="-1"
eType="#//concrete/ContainerImage" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="networks" upperBound="-1"
eType="#//concrete/Network" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="storages" upperBound="-1"
eType="#//concrete/Storage" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="faas" upperBound="-1"
eType="#//concrete/FunctionAsAService" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="group" upperBound="-1"
eType="#//concrete/ComputingGroup" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ConcreteElement" abstract="true" eSuperTypes="#//commons/DOMLElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="configurationScript"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="preexisting" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"
defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="refs" upperBound="-1"
eType="#//concrete/ConcreteElement"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="GenericResource" eSuperTypes="#//concrete/ConcreteElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="gname" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="VirtualMachine" eSuperTypes="#//concrete/ConcreteElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="maps" eType="#//infrastructure/VirtualMachine"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="VMImage" eSuperTypes="#//concrete/ConcreteElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="image_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="maps" eType="#//infrastructure/VMImage"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ContainerImage" eSuperTypes="#//concrete/ConcreteElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="maps" eType="#//infrastructure/ContainerImage"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Network" eSuperTypes="#//concrete/ConcreteElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="maps" eType="#//infrastructure/Network"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Storage" eSuperTypes="#//concrete/ConcreteElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="maps" eType="#//infrastructure/Storage"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="FunctionAsAService" eSuperTypes="#//concrete/ConcreteElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="maps" eType="#//infrastructure/FunctionAsAService"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ComputingGroup" eSuperTypes="#//concrete/ConcreteElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="maps" eType="#//infrastructure/ComputingGroup"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExtConcreteElement" eSuperTypes="#//concrete/ConcreteElement #//commons/ExtensionElement"/>
</eSubpackages>
<eSubpackages name="optimization" nsURI="http://www.piacere-project.eu/doml/optimization"
nsPrefix="optimization">
<eClassifiers xsi:type="ecore:EClass" name="OptimizationLayer" eSuperTypes="#//commons/DOMLElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="startingHint" eType="#//commons/Configuration"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="solutions" upperBound="-1"
eType="#//optimization/OptimizationSolution" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="objectives" upperBound="-1"
eType="#//optimization/OptimizationObjective" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="nonfunctionalRequirements"
upperBound="-1" eType="#//commons/Requirement" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ObjectiveValue">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="cost" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloatObject"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="availability" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloatObject"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="performance" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloatObject"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="OptimizationSolution" eSuperTypes="#//commons/Configuration">
<eStructuralFeatures xsi:type="ecore:EReference" name="objectives" eType="#//optimization/ObjectiveValue"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="decisions" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="OptimizationObjective" abstract="true"
eSuperTypes="#//commons/DOMLElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" lowerBound="1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
defaultValueLiteral="Max"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="property" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CountObjective" eSuperTypes="#//optimization/OptimizationObjective"/>
<eClassifiers xsi:type="ecore:EClass" name="MeasurableObjective" eSuperTypes="#//optimization/OptimizationObjective"/>
<eClassifiers xsi:type="ecore:EClass" name="ExtOptimizationObjective" eSuperTypes="#//optimization/OptimizationObjective #//commons/ExtensionElement"/>
</eSubpackages>
</ecore:EPackage>
......@@ -16,6 +16,7 @@ class DOMLVersion(Enum):
V2_2 = "v2.2"
V2_2_1 = "v2.2.1"
V2_3 = "v2.3"
V3_0 = "v3.0"
def get(v: str):
"""Retrieve DOML version from string.
......
......@@ -80,6 +80,12 @@ def init_special_parsers():
("infrastructure_ComputingNode", "memory_mb"): parse_memory_mb,
("commons_FProperty", "value"): parse_fproperty,
},
DOMLVersion.V3_0: {
("infrastructure_Network", "addressRange"): parse_cidr,
("infrastructure_NetworkInterface", "endPoint"): parse_iface_address,
("infrastructure_ComputingNode", "memory_mb"): parse_memory_mb,
("commons_FProperty", "value"): parse_fproperty,
},
}
for ver in DOMLVersion:
SpecialParsers[ver] = SpecialParser(MetaModels[ver], attribute_parsers[ver])
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment