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

Add more tests 'UseCases'

parent ebdd1dc8
No related branches found
No related tags found
No related merge requests found
doml nio3_test_exec_env
application app {
// To be discussed
software_component potainer {
source r1 {
}
}
software_component nio3_git {
source r1 {
entry "ansible/provision.yml"
backend "ansible"
properties {
nexus_docker_registry_user = "***";
nexus_docker_registry_password = "***";
}
}
}
}
infrastructure infra {
container co1 {
host vm1
}
vm vm1 {
os "CentOS-7-2111"
cpu_count 2
mem_mb 8192.0
iface i1 {
address "10.0.0.1"
belongs_to net1
}
}
net net1 {
// cidr "/24" -> WRONG
// cidr "[10.0.0.1, 10.0.0.5]" -> WRONG
cidr "10.0.0.0/29" // -> 2^3 ips, 10.0.0.1-10.0.0.6
protocol "tcp/ip"
}
sto disk0 {
label "disk0"
size_gb 40
}
}
deployment conf {
potainer -> co1,
co1 -> vm1
}
active deployment conf
concretizations {
concrete_infrastructure con_infra {
provider openstack {
properties {}
vm concrete_vm {
properties {
vm_flavor = "small-centos";
}
maps vm1
}
net concrete_net {
preexisting true
properties {}
maps net1
}
storage concrete_disk {
maps disk0
}
}
}
active con_infra
}
<?xml version="1.0" encoding="ASCII"?>
<commons:DOMLModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:app="http://www.piacere-project.eu/doml/application" xmlns:commons="http://www.piacere-project.eu/doml/commons" xmlns:infra="http://www.piacere-project.eu/doml/infrastructure" name="nio3_test_exec_env" activeConfiguration="//@configurations.0" activeInfrastructure="//@concretizations.0">
<application name="app">
<components xsi:type="app:SoftwareComponent" name="potainer">
<src name="r1"/>
</components>
<components xsi:type="app:SoftwareComponent" name="nio3_git">
<src name="r1" entry="ansible/provision.yml" backend="ansible">
<annotations xsi:type="commons:SProperty" key="nexus_docker_registry_user" value="***"/>
<annotations xsi:type="commons:SProperty" key="nexus_docker_registry_password" value="***"/>
</src>
</components>
</application>
<infrastructure name="infra">
<nodes xsi:type="infra:Container" name="co1">
<configs host="//@infrastructure/@nodes.1"/>
</nodes>
<nodes xsi:type="infra:VirtualMachine" name="vm1" os="CentOS-7-2111" memory_mb="8192.0" cpu_count="2">
<ifaces name="i1" endPoint="10.0.0.1" belongsTo="//@infrastructure/@networks.0"/>
</nodes>
<storages name="disk0" label="disk0" size_gb="40"/>
<networks name="net1" protocol="tcp/ip" addressRange="10.0.0.0/29" connectedIfaces="//@infrastructure/@nodes.1/@ifaces.0"/>
</infrastructure>
<concretizations name="con_infra">
<providers name="openstack">
<vms name="concrete_vm" maps="//@infrastructure/@nodes.1">
<annotations xsi:type="commons:SProperty" key="vm_flavor" value="small-centos"/>
</vms>
<networks name="concrete_net" preexisting="true" maps="//@infrastructure/@networks.0"/>
<storages name="concrete_disk" maps="//@infrastructure/@storages.0"/>
</providers>
</concretizations>
<configurations name="conf">
<deployments component="//@application/@components.0" node="//@infrastructure/@nodes.0"/>
<deployments component="//@infrastructure/@nodes.0" node="//@infrastructure/@nodes.1"/>
</configurations>
</commons:DOMLModel>
doml nio3_test_exec_env
application app {
software_component nio3 {
properties {}
}
}
infrastructure infra {
net net1 {
cidr "/24"
protocol "tcp/ip"
gateway g1 {
address "10.83.18.65"
}
}
user_pass ssh_pass {
user "root"
pass "pa$$w0rd"
}
key_pair ssh_key {
keyfile "/home/rmandal/.ssh/id_rsa.pub"
}
vm_image img {
generates vm1, vm2
}
vm vm1 {
os "centos7_64Guest"
cpu_count 2
mem_mb 1024.0
iface i1 {
address "10.83.18.92"
belongs_to net1
}
credentials ssh_pass
}
vm vm2 {
os "centos7_64Guest"
cpu_count 2
mem_mb 1024.0
iface i1 {
address "10.83.18.88"
belongs_to net1
}
credentials ssh_pass
}
sto disk0 {
label "disk0"
size_gb 100
}
}
deployment conf {
nio3 -> vm1, nio3 -> vm2
}
active deployment conf
concretizations {
concrete_infrastructure con_infra {
provider vsphere {
properties {
username = "vc_username";
password = "vc_password";
vsphere_server = "psvc10000002.cd.sigov.si";
allow_unverified_ssl = true;
}
generic_resource dc {
preexisting true
type 'vsphere_datacenter'
gname 'MB'
}
generic_resource cl {
preexisting true
refs_to dc
type 'vsphere_compute_cluster'
gname 'MB-PIAC-NIC-1'
}
generic_resource pool {
preexisting true
refs_to dc
type 'vsphere_resource_pool'
gname 'PIAC'
}
vm_image template {
preexisting true
refs_to dc
properties {
vsphere_virtual_machine_name = "Centos7_PIAC";
}
maps img
}
storage datastore {
preexisting true
refs_to dc
properties {
vsphere_datastore_name = 'VNX01-0200-NIC-TA-PIAC-DRO-VMW-P';
}
maps disk0
}
net network {
preexisting true
refs_to dc
properties {
vsphere_network_name = "DRO-MB-P-BG001-2098";
}
maps net1
}
vm con_vm1 {
refs_to pool, datastore
properties {
host_name = "piac-0";
domain = "ad.sigov.si";
}
maps vm1
}
vm con_vm2 {
refs_to pool, datastore
properties {
host_name = "piac-1";
domain = "ad.sigov.si";
}
maps vm2
}
}
}
active con_infra
}
<?xml version="1.0" encoding="ASCII"?>
<commons:DOMLModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:app="http://www.piacere-project.eu/doml/application" xmlns:commons="http://www.piacere-project.eu/doml/commons" xmlns:infra="http://www.piacere-project.eu/doml/infrastructure" name="nio3_test_exec_env" activeConfiguration="//@configurations.0" activeInfrastructure="//@concretizations.0">
<application name="app">
<components xsi:type="app:SoftwareComponent" name="nio3"/>
</application>
<infrastructure name="infra">
<nodes xsi:type="infra:VirtualMachine" name="vm1" os="centos7_64Guest" memory_mb="1024.0" cpu_count="2" credentials="//@infrastructure/@credentials.0" generatedFrom="//@infrastructure/@generators.0">
<ifaces name="i1" endPoint="10.83.18.92" belongsTo="//@infrastructure/@networks.0"/>
</nodes>
<nodes xsi:type="infra:VirtualMachine" name="vm2" os="centos7_64Guest" memory_mb="1024.0" cpu_count="2" credentials="//@infrastructure/@credentials.0" generatedFrom="//@infrastructure/@generators.0">
<ifaces name="i1" endPoint="10.83.18.88" belongsTo="//@infrastructure/@networks.0"/>
</nodes>
<generators xsi:type="infra:VMImage" name="img" generatedVMs="//@infrastructure/@nodes.0 //@infrastructure/@nodes.1"/>
<storages name="disk0" label="disk0" size_gb="100"/>
<credentials xsi:type="commons:UserPass" name="ssh_pass" username="root" password="pa$$w0rd"/>
<credentials xsi:type="commons:KeyPair" name="ssh_key" keyfile="/home/rmandal/.ssh/id_rsa.pub"/>
<networks name="net1" protocol="tcp/ip" addressRange="/24" connectedIfaces="//@infrastructure/@nodes.0/@ifaces.0 //@infrastructure/@nodes.1/@ifaces.0">
<gateways name="g1" address="10.83.18.65"/>
</networks>
</infrastructure>
<concretizations name="con_infra">
<providers name="vsphere">
<annotations xsi:type="commons:SProperty" key="username" value="vc_username"/>
<annotations xsi:type="commons:SProperty" key="password" value="vc_password"/>
<annotations xsi:type="commons:SProperty" key="vsphere_server" value="psvc10000002.cd.sigov.si"/>
<annotations xsi:type="commons:BProperty" key="allow_unverified_ssl" value="true"/>
<resources name="dc" preexisting="true" type="vsphere_datacenter" gname="MB"/>
<resources name="cl" preexisting="true" refs="//@concretizations.0/@providers.0/@resources.0" type="vsphere_compute_cluster" gname="MB-PIAC-NIC-1"/>
<resources name="pool" preexisting="true" refs="//@concretizations.0/@providers.0/@resources.0" type="vsphere_resource_pool" gname="PIAC"/>
<vms name="con_vm1" refs="//@concretizations.0/@providers.0/@resources.2 //@concretizations.0/@providers.0/@storages.0" maps="//@infrastructure/@nodes.0">
<annotations xsi:type="commons:SProperty" key="host_name" value="piac-0"/>
<annotations xsi:type="commons:SProperty" key="domain" value="ad.sigov.si"/>
</vms>
<vms name="con_vm2" refs="//@concretizations.0/@providers.0/@resources.2 //@concretizations.0/@providers.0/@storages.0" maps="//@infrastructure/@nodes.1">
<annotations xsi:type="commons:SProperty" key="host_name" value="piac-1"/>
<annotations xsi:type="commons:SProperty" key="domain" value="ad.sigov.si"/>
</vms>
<vmImages name="template" preexisting="true" refs="//@concretizations.0/@providers.0/@resources.0" maps="//@infrastructure/@generators.0">
<annotations xsi:type="commons:SProperty" key="vsphere_virtual_machine_name" value="Centos7_PIAC"/>
</vmImages>
<networks name="network" preexisting="true" refs="//@concretizations.0/@providers.0/@resources.0" maps="//@infrastructure/@networks.0">
<annotations xsi:type="commons:SProperty" key="vsphere_network_name" value="DRO-MB-P-BG001-2098"/>
</networks>
<storages name="datastore" preexisting="true" refs="//@concretizations.0/@providers.0/@resources.0" maps="//@infrastructure/@storages.0">
<annotations xsi:type="commons:SProperty" key="vsphere_datastore_name" value="VNX01-0200-NIC-TA-PIAC-DRO-VMW-P"/>
</storages>
</providers>
</concretizations>
<configurations name="conf">
<deployments component="//@application/@components.0" node="//@infrastructure/@nodes.0"/>
<deployments component="//@application/@components.0" node="//@infrastructure/@nodes.1"/>
</configurations>
</commons:DOMLModel>
doml posidonia
properties {
entorno="pre";
proyecto="baleares";
}
// Application Definition
application posidonia {
software_component Gestaut {
provides { http https }
consumes { dbAccess, search }
}
software_component ElasticSearch {
provides { search }
consumes { dbAccess }
}
software_component Edi {
provides { edi }
consumes { dbAccess }
}
dbms Database {
provides {
dbAccess
}
}
}
infrastructure abstractInfra {
// Networks
net vpc {
cidr "/16"
protocol "tcp/ip"
subnet subnet1 {
cidr "/24"
protocol "tcp/ip"
}
subnet subnet2 {
cidr "/24"
protocol "tcp/ip"
}
subnet subnet3 {
cidr "/24"
protocol "tcp/ip"
}
}
// Credentials
// TODO: key file?
key_pair GestautKeyName {
algorithm "RSA"
bits 4096
}
key_pair ESKeyName {
algorithm "RSA"
bits 4096
}
key_pair EdiKeyName {
algorithm "RSA"
bits 4096
}
user_pass dbCredentials {
user "***"
pass "***"
}
// Nodes
vm OracleDB {
iface db1 {
belongs_to subnet1
}
iface db2 {
belongs_to subnet2
}
iface db3 {
belongs_to subnet3
}
sto "20"
credentials dbCredentials
}
vm_image posidonia_image {
generates gestaut_vm, elasticsearch_vm, edi_vm
image "ami-02a6bfdcf8224bd77"
}
autoscale_group gestaut_asg {
// TODO: Shouldn't vm live outside the group leaving a reference here? vm might also be referenced by other components.
// It also applies to the following vms in other groups.
vm gestaut_vm {
credentials GestautKeyName
}
min 1
max 1 // Using AutoScaleGroup as a way to automatically reboot a machine in case of error
}
autoscale_group elasticsearch_asg {
// TODO
vm elasticsearch_vm {
credentials ESKeyName
}
min 1
max 1 // Using AutoScaleGroup as a way to automatically reboot a machine in case of error
}
autoscale_group edi_asg {
// TODO
vm edi_vm {
credentials EdiKeyName
}
min 1
max 1 // Using AutoScaleGroup as a way to automatically reboot a machine in case of error
}
security_group sg {
// TODO: the following vms should have the associated interfaces (ifaces) in the security group?
//nodes gestaut_vm, elasticsearch_vm, edi_vm
egress salida {
protocol "-1"
from_port 0
to_port 0
cidr ["0.0.0.0/0"]
}
ingress lb {
protocol "tcp"
from_port 80
to_port 80
cidr ["10.100.1.0/24", "10.100.2.0/24", "10.100.3.0/24"]
}
ingress es {
protocol "tcp"
from_port 9200
to_port 9200
cidr ["10.100.1.0/24", "10.100.2.0/24", "10.100.3.0/24"]
}
ingress monitor {
protocol "tcp"
from_port 6556
to_port 6556
cidr ["54.217.119.81/32"]
}
// TODO: ftp (20/21) or ssh (22)?
ingress ftp {
protocol "tcp"
from_port 22
to_port 22
cidr ["213.96.27.139/32", "37.187.173.88/32", "51.89.40.59/32", "195.53.242.200/32"]
}
}
security_group dbsg {
// TODO: the associated vms and ifaces?
egress salida {
protocol "-1"
from_port 0
to_port 0
cidr ["0.0.0.0/0"]
}
ingress ora {
protocol "tcp"
from_port 1521
to_port 1521
cidr ["10.100.1.0/24", "10.100.2.0/24", "10.100.3.0/24", "84.124.78.66/32"]
}
}
security_group elbsg {
// TODO: the associated vms and ifaces?
egress salida {
protocol "-1"
from_port 0
to_port 0
cidr ["0.0.0.0/0"]
}
ingress http {
protocol "tcp"
from_port 80
to_port 80
cidr ["0.0.0.0/0", "::/0"]
}
ingress https {
protocol "tcp"
from_port 443
to_port 443
cidr ["0.0.0.0/0", "::/0"]
}
ingress es {
protocol "tcp"
from_port 9200
to_port 9200
cidr ["10.100.1.0/24", "10.100.2.0/24", "10.100.3.0/24"]
}
}
security_group checkmk {
// TODO: the associated vms and ifaces?
egress salida {
protocol "-1"
from_port 0
to_port 0
cidr ["0.0.0.0/0"]
}
ingress http {
protocol "tcp"
from_port 80
to_port 80
cidr ["84.124.78.66/32"]
}
ingress https {
protocol "tcp"
from_port 443
to_port 443
cidr ["84.124.78.66/32"]
}
// TODO: ftp (20/21) or ssh (22)?
ingress ftp {
protocol "tcp"
from_port 22
to_port 22
cidr ["84.124.78.66/32"]
}
}
}
deployment dep {
Gestaut -> gestaut_vm,
ElasticSearch -> elasticsearch_vm,
Edi -> edi_vm,
Database -> OracleDB
}
active deployment dep
// Concretization to AWS
concretizations {
concrete_infrastructure dev {
provider aws {
autoscale_group asg1 {
maps elasticsearch_asg
}
autoscale_group asg2 {
maps edi_asg
}
autoscale_group asg3 {
maps gestaut_asg
}
}
}
// concrete_infrastructure pro {
// provider aws {
//
// }
// }
active dev
}
<?xml version="1.0" encoding="ASCII"?>
<commons:DOMLModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:app="http://www.piacere-project.eu/doml/application" xmlns:commons="http://www.piacere-project.eu/doml/commons" xmlns:infra="http://www.piacere-project.eu/doml/infrastructure" name="posidonia" activeConfiguration="//@configurations.0" activeInfrastructure="//@concretizations.0">
<annotations xsi:type="commons:SProperty" key="entorno" value="pre"/>
<annotations xsi:type="commons:SProperty" key="proyecto" value="baleares"/>
<application name="posidonia">
<components xsi:type="app:SoftwareComponent" name="Gestaut" consumedInterfaces="//@application/@components.3/@exposedInterfaces.0 //@application/@components.1/@exposedInterfaces.0">
<exposedInterfaces name="http"/>
<exposedInterfaces name="https"/>
</components>
<components xsi:type="app:SoftwareComponent" name="ElasticSearch" consumedInterfaces="//@application/@components.3/@exposedInterfaces.0">
<exposedInterfaces name="search"/>
</components>
<components xsi:type="app:SoftwareComponent" name="Edi" consumedInterfaces="//@application/@components.3/@exposedInterfaces.0">
<exposedInterfaces name="edi"/>
</components>
<components xsi:type="app:DBMS" name="Database">
<exposedInterfaces name="dbAccess"/>
</components>
</application>
<infrastructure name="abstractInfra">
<nodes xsi:type="infra:VirtualMachine" name="OracleDB" storage="20" credentials="//@infrastructure/@credentials.3">
<ifaces name="db1" belongsTo="//@infrastructure/@networks.0/@subnets.0"/>
<ifaces name="db2" belongsTo="//@infrastructure/@networks.0/@subnets.1"/>
<ifaces name="db3" belongsTo="//@infrastructure/@networks.0/@subnets.2"/>
</nodes>
<generators xsi:type="infra:VMImage" name="posidonia_image" uri="ami-02a6bfdcf8224bd77" kind="IMAGE" generatedVMs="//@infrastructure/@groups.0/@machineDefinition //@infrastructure/@groups.1/@machineDefinition //@infrastructure/@groups.2/@machineDefinition"/>
<credentials xsi:type="commons:KeyPair" name="GestautKeyName" algorithm="RSA" bits="4096"/>
<credentials xsi:type="commons:KeyPair" name="ESKeyName" algorithm="RSA" bits="4096"/>
<credentials xsi:type="commons:KeyPair" name="EdiKeyName" algorithm="RSA" bits="4096"/>
<credentials xsi:type="commons:UserPass" name="dbCredentials" username="***" password="***"/>
<groups xsi:type="infra:AutoScalingGroup" name="gestaut_asg">
<machineDefinition name="gestaut_vm" credentials="//@infrastructure/@credentials.0" generatedFrom="//@infrastructure/@generators.0"/>
</groups>
<groups xsi:type="infra:AutoScalingGroup" name="elasticsearch_asg">
<machineDefinition name="elasticsearch_vm" credentials="//@infrastructure/@credentials.1" generatedFrom="//@infrastructure/@generators.0"/>
</groups>
<groups xsi:type="infra:AutoScalingGroup" name="edi_asg">
<machineDefinition name="edi_vm" credentials="//@infrastructure/@credentials.2" generatedFrom="//@infrastructure/@generators.0"/>
</groups>
<securityGroups name="sg">
<rules name="salida" protocol="-1" fromPort="0" toPort="0">
<cidr>0.0.0.0/0</cidr>
</rules>
<rules name="lb" kind="INGRESS" protocol="tcp" fromPort="80" toPort="80">
<cidr>10.100.1.0/24</cidr>
<cidr>10.100.2.0/24</cidr>
<cidr>10.100.3.0/24</cidr>
</rules>
<rules name="es" kind="INGRESS" protocol="tcp" fromPort="9200" toPort="9200">
<cidr>10.100.1.0/24</cidr>
<cidr>10.100.2.0/24</cidr>
<cidr>10.100.3.0/24</cidr>
</rules>
<rules name="monitor" kind="INGRESS" protocol="tcp" fromPort="6556" toPort="6556">
<cidr>54.217.119.81/32</cidr>
</rules>
<rules name="ftp" kind="INGRESS" protocol="tcp" fromPort="22" toPort="22">
<cidr>213.96.27.139/32</cidr>
<cidr>37.187.173.88/32</cidr>
<cidr>51.89.40.59/32</cidr>
<cidr>195.53.242.200/32</cidr>
</rules>
</securityGroups>
<securityGroups name="dbsg">
<rules name="salida" protocol="-1" fromPort="0" toPort="0">
<cidr>0.0.0.0/0</cidr>
</rules>
<rules name="ora" kind="INGRESS" protocol="tcp" fromPort="1521" toPort="1521">
<cidr>10.100.1.0/24</cidr>
<cidr>10.100.2.0/24</cidr>
<cidr>10.100.3.0/24</cidr>
<cidr>84.124.78.66/32</cidr>
</rules>
</securityGroups>
<securityGroups name="elbsg">
<rules name="salida" protocol="-1" fromPort="0" toPort="0">
<cidr>0.0.0.0/0</cidr>
</rules>
<rules name="http" kind="INGRESS" protocol="tcp" fromPort="80" toPort="80">
<cidr>0.0.0.0/0</cidr>
<cidr>::/0</cidr>
</rules>
<rules name="https" kind="INGRESS" protocol="tcp" fromPort="443" toPort="443">
<cidr>0.0.0.0/0</cidr>
<cidr>::/0</cidr>
</rules>
<rules name="es" kind="INGRESS" protocol="tcp" fromPort="9200" toPort="9200">
<cidr>10.100.1.0/24</cidr>
<cidr>10.100.2.0/24</cidr>
<cidr>10.100.3.0/24</cidr>
</rules>
</securityGroups>
<securityGroups name="checkmk">
<rules name="salida" protocol="-1" fromPort="0" toPort="0">
<cidr>0.0.0.0/0</cidr>
</rules>
<rules name="http" kind="INGRESS" protocol="tcp" fromPort="80" toPort="80">
<cidr>84.124.78.66/32</cidr>
</rules>
<rules name="https" kind="INGRESS" protocol="tcp" fromPort="443" toPort="443">
<cidr>84.124.78.66/32</cidr>
</rules>
<rules name="ftp" kind="INGRESS" protocol="tcp" fromPort="22" toPort="22">
<cidr>84.124.78.66/32</cidr>
</rules>
</securityGroups>
<networks name="vpc" protocol="tcp/ip" addressRange="/16">
<subnets name="subnet1" protocol="tcp/ip" addressRange="/24" connectedIfaces="//@infrastructure/@nodes.0/@ifaces.0"/>
<subnets name="subnet2" protocol="tcp/ip" addressRange="/24" connectedIfaces="//@infrastructure/@nodes.0/@ifaces.1"/>
<subnets name="subnet3" protocol="tcp/ip" addressRange="/24" connectedIfaces="//@infrastructure/@nodes.0/@ifaces.2"/>
</networks>
</infrastructure>
<concretizations name="dev">
<providers name="aws">
<group name="asg1" maps="//@infrastructure/@groups.1"/>
<group name="asg2" maps="//@infrastructure/@groups.2"/>
<group name="asg3" maps="//@infrastructure/@groups.0"/>
</providers>
</concretizations>
<configurations name="dep">
<deployments component="//@application/@components.0" node="//@infrastructure/@groups.0/@machineDefinition"/>
<deployments component="//@application/@components.1" node="//@infrastructure/@groups.1/@machineDefinition"/>
<deployments component="//@application/@components.2" node="//@infrastructure/@groups.2/@machineDefinition"/>
<deployments component="//@application/@components.3" node="//@infrastructure/@nodes.0"/>
</configurations>
</commons:DOMLModel>
doml posidonia
properties {
entorno="pre";
proyecto="baleares";
}
// Application Definition
application posidonia {
software_component Gestaut {
// Interfaces should be separated by commas, but the IDE needs to be fixed
provides { http https }
consumes { dbAccess, search }
}
software_component ElasticSearch {
provides { search }
consumes { dbAccess }
}
software_component Edi {
provides { edi }
consumes { dbAccess }
}
dbms Database {
provides {
dbAccess
}
}
}
infrastructure abstractInfra {
// Networks
net vpc {
// In DOML 2.1, you can specify an address before the length of the subnet mask
// Actually it should also work in DOML 2.2 for ICG
cidr "/16"
protocol "TCP/IP"
subnet subnet1 {
// We have to check whether this address (which was copy-pasted from the
// security group rules cidr) actually was the one intended for the subnet
cidr "10.100.1.0/24"
protocol "TCP/IP"
}
subnet subnet2 {
cidr "/24"
protocol "TCP/IP"
}
subnet subnet3 {
cidr "/24"
protocol "TCP/IP"
}
}
// Credentials
// TODO: key file?
key_pair GestautKeyName {
// We're here specifying the key through the keyfile attribute instead of using it for specifying the keyfile path.
user "..."
keyfile "not the path, but currently the key itself"
algorithm "RSA"
bits 4096
}
key_pair ESKeyName {
user "..."
keyfile "not the path, but currently the key itself"
algorithm "RSA"
bits 4096
}
key_pair EdiKeyName {
user "..."
keyfile "not the path, but currently the key itself"
algorithm "RSA"
bits 4096
}
user_pass dbCredentials {
user "***"
pass "***"
}
// Nodes
vm OracleDB {
// It can be updated by specifying the VM characteristics through the usage of attributes
iface db1 {
belongs_to subnet1
// We can define the security group associated to the interface either by using the
// security attribute here or specifying the name of the interface in the
// ifaces attribute of the security group itself
security dbsg
}
iface db2 {
belongs_to subnet2
}
iface db3 {
belongs_to subnet3
}
// We have to specify GB or ...
sto "20"
credentials dbCredentials
}
/*
* We currently don't use images, but specify properties through VM attributes definition
vm_image posidonia_image {
generates gestaut_vm, elasticsearch_vm, edi_vm
image "ami-02a6bfdcf8224bd77"
}
*/
autoscale_group gestaut_asg {
// TODO: Shouldn't vm live outside the group leaving a reference here? vm might also be referenced by other components.
// It also applies to the following vms in other groups.
vm gestaut_vm {
credentials GestautKeyName
}
min 1
max 1 // Using AutoScaleGroup as a way to automatically reboot a machine in case of error
/*
* In order to specify the sg for the three VMs defined for the AGs, we can
* use the security attribute of the autoscale_group class.
* We have to define a new security group inside the autoscale_group
* when using such attribute.
*/
}
autoscale_group elasticsearch_asg {
// TODO
vm elasticsearch_vm {
credentials ESKeyName
}
min 1
max 1 // Using AutoScaleGroup as a way to automatically reboot a machine in case of error
}
autoscale_group edi_asg {
// TODO
vm edi_vm {
credentials EdiKeyName
}
min 1
max 1 // Using AutoScaleGroup as a way to automatically reboot a machine in case of error
}
security_group sg {
// TODO: the following vms should have the associated interfaces (ifaces) in the security group?
//nodes gestaut_vm, elasticsearch_vm, edi_vm
egress salida {
protocol "-1"
from_port 0
to_port 0
cidr ["0.0.0.0/0"]
}
ingress lb {
protocol "TCP"
from_port 80
to_port 80
cidr ["10.100.1.0/24", "10.100.2.0/24", "10.100.3.0/24"]
}
ingress es {
protocol "TCP"
from_port 9200
to_port 9200
cidr ["10.100.1.0/24", "10.100.2.0/24", "10.100.3.0/24"]
}
ingress monitor {
protocol "TCP"
from_port 6556
to_port 6556
cidr ["54.217.119.81/32"]
}
// TODO: ftp (20/21) or ssh (22)?
ingress ftp {
protocol "TCP"
from_port 22
to_port 22
cidr ["213.96.27.139/32", "37.187.173.88/32", "51.89.40.59/32", "195.53.242.200/32"]
}
}
/*
* TODO: We have to define interfaces or check which interfaces/AGs belong to each sg
*/
security_group dbsg {
egress salida {
protocol "-1"
from_port 0
to_port 0
cidr ["0.0.0.0/0"]
}
ingress ora {
protocol "TCP"
from_port 1521
to_port 1521
cidr ["10.100.1.0/24", "10.100.2.0/24", "10.100.3.0/24", "84.124.78.66/32"]
}
// As discussed above, here is provided the other way to specify the sg
// associated to interfaces
ifaces db1, db2, db3
}
security_group elbsg {
egress salida {
protocol "-1"
from_port 0
to_port 0
cidr ["0.0.0.0/0"]
}
ingress http {
protocol "TCP"
from_port 80
to_port 80
cidr ["0.0.0.0/0", "::/0"]
}
ingress https {
protocol "TCP"
from_port 443
to_port 443
cidr ["0.0.0.0/0", "::/0"]
}
ingress es {
protocol "TCP"
from_port 9200
to_port 9200
cidr ["10.100.1.0/24", "10.100.2.0/24", "10.100.3.0/24"]
}
}
security_group checkmk {
egress salida {
protocol "-1"
from_port 0
to_port 0
cidr ["0.0.0.0/0"]
}
ingress http {
protocol "TCP"
from_port 80
to_port 80
cidr ["84.124.78.66/32"]
}
ingress https {
protocol "TCP"
from_port 443
to_port 443
cidr ["84.124.78.66/32"]
}
// TODO: ftp (20/21) or ssh (22)?
ingress ftp {
protocol "TCP"
from_port 22
to_port 22
cidr ["84.124.78.66/32"]
}
}
}
deployment dep {
Gestaut -> gestaut_vm,
ElasticSearch -> elasticsearch_vm,
Edi -> edi_vm,
Database -> OracleDB
}
active deployment dep
// Concretization to AWS
concretizations {
concrete_infrastructure dev {
provider aws {
net concrete_vpc {
maps vpc
}
vm concrete_oracleDB {
maps OracleDB
}
autoscale_group asg1 {
maps elasticsearch_asg
}
autoscale_group asg2 {
maps edi_asg
}
autoscale_group asg3 {
maps gestaut_asg
}
}
}
// concrete_infrastructure pro {
// provider aws {
//
// }
// }
active dev
}
optimization opt {
objectives {
"cost" => min
"availability" => max
}
nonfunctional_requirements {
req1 "Cost <= 70.0" max 70.0 => "cost";
req2 "Availability >= 66.5%" min 66.5 => "availability";
}
}
<?xml version="1.0" encoding="ASCII"?>
<commons:DOMLModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:app="http://www.piacere-project.eu/doml/application" xmlns:commons="http://www.piacere-project.eu/doml/commons" xmlns:infra="http://www.piacere-project.eu/doml/infrastructure" xmlns:optimization="http://www.piacere-project.eu/doml/optimization" name="posidonia" activeConfiguration="//@configurations.0" activeInfrastructure="//@concretizations.0">
<annotations xsi:type="commons:SProperty" key="entorno" value="pre"/>
<annotations xsi:type="commons:SProperty" key="proyecto" value="baleares"/>
<application name="posidonia">
<components xsi:type="app:SoftwareComponent" name="Gestaut" consumedInterfaces="//@application/@components.3/@exposedInterfaces.0 //@application/@components.1/@exposedInterfaces.0">
<exposedInterfaces name="http"/>
<exposedInterfaces name="https"/>
</components>
<components xsi:type="app:SoftwareComponent" name="ElasticSearch" consumedInterfaces="//@application/@components.3/@exposedInterfaces.0">
<exposedInterfaces name="search"/>
</components>
<components xsi:type="app:SoftwareComponent" name="Edi" consumedInterfaces="//@application/@components.3/@exposedInterfaces.0">
<exposedInterfaces name="edi"/>
</components>
<components xsi:type="app:DBMS" name="Database">
<exposedInterfaces name="dbAccess"/>
</components>
</application>
<infrastructure name="abstractInfra">
<nodes xsi:type="infra:VirtualMachine" name="OracleDB" storage="20" credentials="//@infrastructure/@credentials.3">
<ifaces name="db1" belongsTo="//@infrastructure/@networks.0/@subnets.0"/>
<ifaces name="db2" belongsTo="//@infrastructure/@networks.0/@subnets.1"/>
<ifaces name="db3" belongsTo="//@infrastructure/@networks.0/@subnets.2"/>
</nodes>
<generators xsi:type="infra:VMImage" name="posidonia_image" uri="ami-02a6bfdcf8224bd77" kind="IMAGE" generatedVMs="//@infrastructure/@groups.0/@machineDefinition //@infrastructure/@groups.1/@machineDefinition //@infrastructure/@groups.2/@machineDefinition"/>
<credentials xsi:type="commons:KeyPair" name="GestautKeyName" algorithm="RSA" bits="4096"/>
<credentials xsi:type="commons:KeyPair" name="ESKeyName" algorithm="RSA" bits="4096"/>
<credentials xsi:type="commons:KeyPair" name="EdiKeyName" algorithm="RSA" bits="4096"/>
<credentials xsi:type="commons:UserPass" name="dbCredentials" username="***" password="***"/>
<groups xsi:type="infra:AutoScalingGroup" name="gestaut_asg">
<machineDefinition name="gestaut_vm" credentials="//@infrastructure/@credentials.0" generatedFrom="//@infrastructure/@generators.0"/>
</groups>
<groups xsi:type="infra:AutoScalingGroup" name="elasticsearch_asg">
<machineDefinition name="elasticsearch_vm" credentials="//@infrastructure/@credentials.1" generatedFrom="//@infrastructure/@generators.0"/>
</groups>
<groups xsi:type="infra:AutoScalingGroup" name="edi_asg">
<machineDefinition name="edi_vm" credentials="//@infrastructure/@credentials.2" generatedFrom="//@infrastructure/@generators.0"/>
</groups>
<securityGroups name="sg">
<rules name="salida" protocol="-1" fromPort="0" toPort="0">
<cidr>0.0.0.0/0</cidr>
</rules>
<rules name="lb" kind="INGRESS" protocol="tcp" fromPort="80" toPort="80">
<cidr>10.100.1.0/24</cidr>
<cidr>10.100.2.0/24</cidr>
<cidr>10.100.3.0/24</cidr>
</rules>
<rules name="es" kind="INGRESS" protocol="tcp" fromPort="9200" toPort="9200">
<cidr>10.100.1.0/24</cidr>
<cidr>10.100.2.0/24</cidr>
<cidr>10.100.3.0/24</cidr>
</rules>
<rules name="monitor" kind="INGRESS" protocol="tcp" fromPort="6556" toPort="6556">
<cidr>54.217.119.81/32</cidr>
</rules>
<rules name="ftp" kind="INGRESS" protocol="tcp" fromPort="22" toPort="22">
<cidr>213.96.27.139/32</cidr>
<cidr>37.187.173.88/32</cidr>
<cidr>51.89.40.59/32</cidr>
<cidr>195.53.242.200/32</cidr>
</rules>
</securityGroups>
<securityGroups name="dbsg">
<rules name="salida" protocol="-1" fromPort="0" toPort="0">
<cidr>0.0.0.0/0</cidr>
</rules>
<rules name="ora" kind="INGRESS" protocol="tcp" fromPort="1521" toPort="1521">
<cidr>10.100.1.0/24</cidr>
<cidr>10.100.2.0/24</cidr>
<cidr>10.100.3.0/24</cidr>
<cidr>84.124.78.66/32</cidr>
</rules>
</securityGroups>
<securityGroups name="elbsg">
<rules name="salida" protocol="-1" fromPort="0" toPort="0">
<cidr>0.0.0.0/0</cidr>
</rules>
<rules name="http" kind="INGRESS" protocol="tcp" fromPort="80" toPort="80">
<cidr>0.0.0.0/0</cidr>
<cidr>::/0</cidr>
</rules>
<rules name="https" kind="INGRESS" protocol="tcp" fromPort="443" toPort="443">
<cidr>0.0.0.0/0</cidr>
<cidr>::/0</cidr>
</rules>
<rules name="es" kind="INGRESS" protocol="tcp" fromPort="9200" toPort="9200">
<cidr>10.100.1.0/24</cidr>
<cidr>10.100.2.0/24</cidr>
<cidr>10.100.3.0/24</cidr>
</rules>
</securityGroups>
<securityGroups name="checkmk">
<rules name="salida" protocol="-1" fromPort="0" toPort="0">
<cidr>0.0.0.0/0</cidr>
</rules>
<rules name="http" kind="INGRESS" protocol="tcp" fromPort="80" toPort="80">
<cidr>84.124.78.66/32</cidr>
</rules>
<rules name="https" kind="INGRESS" protocol="tcp" fromPort="443" toPort="443">
<cidr>84.124.78.66/32</cidr>
</rules>
<rules name="ftp" kind="INGRESS" protocol="tcp" fromPort="22" toPort="22">
<cidr>84.124.78.66/32</cidr>
</rules>
</securityGroups>
<networks name="vpc" protocol="tcp/ip" addressRange="/16">
<subnets name="subnet1" protocol="tcp/ip" addressRange="/24" connectedIfaces="//@infrastructure/@nodes.0/@ifaces.0"/>
<subnets name="subnet2" protocol="tcp/ip" addressRange="/24" connectedIfaces="//@infrastructure/@nodes.0/@ifaces.1"/>
<subnets name="subnet3" protocol="tcp/ip" addressRange="/24" connectedIfaces="//@infrastructure/@nodes.0/@ifaces.2"/>
</networks>
</infrastructure>
<concretizations name="dev">
<providers name="aws">
<group name="asg1" maps="//@infrastructure/@groups.1"/>
<group name="asg2" maps="//@infrastructure/@groups.2"/>
<group name="asg3" maps="//@infrastructure/@groups.0"/>
</providers>
</concretizations>
<optimization name="opt">
<objectives xsi:type="optimization:MeasurableObjective" kind="min" property="cost"/>
<objectives xsi:type="optimization:MeasurableObjective" kind="max" property="availability"/>
<nonfunctionalRequirements xsi:type="commons:RangedRequirement" name="req1" description="Cost &lt;= 70.0" property="cost" max="70.0"/>
<nonfunctionalRequirements xsi:type="commons:RangedRequirement" name="req2" description="Availability >= 66.5%" property="availability" min="66.5"/>
</optimization>
<configurations name="dep">
<deployments component="//@application/@components.0" node="//@infrastructure/@groups.0/@machineDefinition"/>
<deployments component="//@application/@components.1" node="//@infrastructure/@groups.1/@machineDefinition"/>
<deployments component="//@application/@components.2" node="//@infrastructure/@groups.2/@machineDefinition"/>
<deployments component="//@application/@components.3" node="//@infrastructure/@nodes.0"/>
</configurations>
</commons:DOMLModel>
doml uc3_openstack
application app {
// need to define all sw components of the project this is a placeholder
// need to understand what is really needed in this spec
// need to specify all provides/consumes
software_component iwg {
provides { net_info }
}
software_component osint {
provides { osint_info }
consumes { net_info, get_twitter, ewcf_rest_interface }
}
software_component ewcf {
provides { ewcf_rest_interface }
// ??? consumes { get_firebase }
}
saas external_twitter {
provides { get_twitter @ "https://twitter_api/get" }
}
}
infrastructure infra {
vm_image v_img1 {
generates osint_vm
}
container c {
host osint_vm {
container_port 80
vm_port 8080
iface osint_igw_port
properties {
env_var1 = "value1";
}
}
}
cont_image c_img {
generates c
image "web-app:0.1.0" // needs to be replaced and other containers added
}
vm_image v_img2 {
generates igw_vm
}
vm_image v_img3 {
generates ewcf_vm
}
net net1 {
cidr "/24"
protocol "tcp/ip"
}
net net2 {
cidr "/24"
protocol "tcp/ip"
}
net net3 {
cidr "/24"
protocol "tcp/ip"
}
net oam {
cidr "/24"
protocol "tcp/ip"
}
// security group is left as originally defined needs to be updated
security_group sg {
egress icmp {
from_port -1
to_port -1
protocol "icmp"
cidr ["0.0.0.0/0"]
}
ingress http {
from_port 80
to_port 80
protocol "tcp"
cidr ["0.0.0.0/0"]
}
ingress https {
from_port 443
to_port 443
protocol "tcp"
cidr ["0.0.0.0/0"]
}
ingress ssh {
from_port 22
to_port 22
protocol "tcp"
cidr ["0.0.0.0/0"]
}
}
key_pair ssh_key {
user "ubuntu"
keyfile "/home/user1/.ssh/openstack.key"
algorithm "RSA"
bits 4096
}
autoscale_group osint_ag {
vm osint_vm {
os "ubuntu-20.04.3"
credentials ssh_key
iface osint_vm_net1 {
belongs_to net1
}
iface osint_vm_oam {
belongs_to oam
}
iface osint_igw_port{
belongs_to net1
}
}
}
autoscale_group igw_ag {
vm igw_vm {
os "ubuntu-20.04.3"
credentials ssh_key
iface igw_vm_net2 {
belongs_to net2
}
iface igw_vm_oam {
belongs_to oam
}
}
}
autoscale_group ewcf_ag {
vm ewcf_vm {
os "ubuntu-20.04.3"
credentials ssh_key
iface ewcf_vm_net3 {
belongs_to net3
}
iface ewcf_vm_oam {
belongs_to oam
}
}
}
}
deployment conf {
osint -> osint_vm,
iwg -> igw_vm,
ewcf -> ewcf_vm
}
active deployment conf
concretizations {
concrete_infrastructure con_infra {
provider openstack {
vm concrete_osint_vm {
properties {
vm_name = "osint";
vm_flavor = "small";
vm_key_name = "user1";
}
maps osint_vm
}
vm concrete_igw_vm {
properties {
vm_name = "igw";
vm_flavor = "small";
vm_key_name = "user1";
}
maps igw_vm
}
vm concrete_ewcf_vm {
properties {
vm_name = "ewcf";
vm_flavor = "small";
vm_key_name = "user1";
}
maps ewcf_vm
}
vm_image concrete_vm_image1 {
properties {
name = "ubuntu-20.04.3";
}
maps v_img1
}
vm_image concrete_vm_image2{
properties {
name = "ubuntu-20.04.3";
}
maps v_img2
}
vm_image concrete_vm_image3 {
properties {
name = "ubuntu-20.04.3";
}
maps v_img3
}
net concrete_net1 {
properties {
name = "uc3_net1";
}
maps net1
}
net concrete_net2 {
properties {
name = "uc3_net2";
}
maps net2
}
net concrete_net3 {
properties {
name = "uc3_net3";
}
maps net3
}
net concrete_net4 {
properties {
name = "uc3_net4";
}
maps oam
}
}
}
active con_infra
}
optimization opt {
objectives {
"cost" => min
}
nonfunctional_requirements {
req1 "Cost <= 200" max 200.0 => "cost";
req2 "Provider" values "AMAZ" => "provider";
}
}
<?xml version="1.0" encoding="ASCII"?>
<commons:DOMLModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:app="http://www.piacere-project.eu/doml/application" xmlns:commons="http://www.piacere-project.eu/doml/commons" xmlns:infra="http://www.piacere-project.eu/doml/infrastructure" xmlns:optimization="http://www.piacere-project.eu/doml/optimization" name="uc3_openstack" activeConfiguration="//@configurations.0" activeInfrastructure="//@concretizations.0">
<application name="app">
<components xsi:type="app:SoftwareComponent" name="iwg">
<exposedInterfaces name="net_info"/>
</components>
<components xsi:type="app:SoftwareComponent" name="osint" consumedInterfaces="//@application/@components.0/@exposedInterfaces.0 //@application/@components.3/@exposedInterfaces.0 //@application/@components.2/@exposedInterfaces.0">
<exposedInterfaces name="osint_info"/>
</components>
<components xsi:type="app:SoftwareComponent" name="ewcf">
<exposedInterfaces name="ewcf_rest_interface"/>
</components>
<components xsi:type="app:SaaS" name="external_twitter">
<exposedInterfaces name="get_twitter" endPoint="https://twitter_api/get"/>
</components>
</application>
<infrastructure name="infra">
<nodes xsi:type="infra:Container" name="c" generatedFrom="//@infrastructure/@generators.1">
<configs container_port="80" vm_port="8080" host="//@infrastructure/@groups.0/@machineDefinition" iface="//@infrastructure/@groups.0/@machineDefinition/@ifaces.2">
<annotations xsi:type="commons:SProperty" key="env_var1" value="value1"/>
</configs>
</nodes>
<generators xsi:type="infra:VMImage" name="v_img1" generatedVMs="//@infrastructure/@groups.0/@machineDefinition"/>
<generators xsi:type="infra:ContainerImage" name="c_img" uri="web-app:0.1.0" kind="IMAGE" generatedContainers="//@infrastructure/@nodes.0"/>
<generators xsi:type="infra:VMImage" name="v_img2" generatedVMs="//@infrastructure/@groups.1/@machineDefinition"/>
<generators xsi:type="infra:VMImage" name="v_img3" generatedVMs="//@infrastructure/@groups.2/@machineDefinition"/>
<credentials xsi:type="commons:KeyPair" name="ssh_key" user="ubuntu" keyfile="/home/user1/.ssh/openstack.key" algorithm="RSA" bits="4096"/>
<groups xsi:type="infra:AutoScalingGroup" name="osint_ag">
<machineDefinition name="osint_vm" os="ubuntu-20.04.3" credentials="//@infrastructure/@credentials.0" generatedFrom="//@infrastructure/@generators.0">
<ifaces name="osint_vm_net1" belongsTo="//@infrastructure/@networks.0"/>
<ifaces name="osint_vm_oam" belongsTo="//@infrastructure/@networks.3"/>
<ifaces name="osint_igw_port" belongsTo="//@infrastructure/@networks.0"/>
</machineDefinition>
</groups>
<groups xsi:type="infra:AutoScalingGroup" name="igw_ag">
<machineDefinition name="igw_vm" os="ubuntu-20.04.3" credentials="//@infrastructure/@credentials.0" generatedFrom="//@infrastructure/@generators.2">
<ifaces name="igw_vm_net2" belongsTo="//@infrastructure/@networks.1"/>
<ifaces name="igw_vm_oam" belongsTo="//@infrastructure/@networks.3"/>
</machineDefinition>
</groups>
<groups xsi:type="infra:AutoScalingGroup" name="ewcf_ag">
<machineDefinition name="ewcf_vm" os="ubuntu-20.04.3" credentials="//@infrastructure/@credentials.0" generatedFrom="//@infrastructure/@generators.3">
<ifaces name="ewcf_vm_net3" belongsTo="//@infrastructure/@networks.2"/>
<ifaces name="ewcf_vm_oam" belongsTo="//@infrastructure/@networks.3"/>
</machineDefinition>
</groups>
<securityGroups name="sg">
<rules name="icmp" protocol="icmp" fromPort="-1" toPort="-1">
<cidr>0.0.0.0/0</cidr>
</rules>
<rules name="http" kind="INGRESS" protocol="tcp" fromPort="80" toPort="80">
<cidr>0.0.0.0/0</cidr>
</rules>
<rules name="https" kind="INGRESS" protocol="tcp" fromPort="443" toPort="443">
<cidr>0.0.0.0/0</cidr>
</rules>
<rules name="ssh" kind="INGRESS" protocol="tcp" fromPort="22" toPort="22">
<cidr>0.0.0.0/0</cidr>
</rules>
</securityGroups>
<networks name="net1" protocol="tcp/ip" addressRange="/24" connectedIfaces="//@infrastructure/@groups.0/@machineDefinition/@ifaces.0 //@infrastructure/@groups.0/@machineDefinition/@ifaces.2"/>
<networks name="net2" protocol="tcp/ip" addressRange="/24" connectedIfaces="//@infrastructure/@groups.1/@machineDefinition/@ifaces.0"/>
<networks name="net3" protocol="tcp/ip" addressRange="/24" connectedIfaces="//@infrastructure/@groups.2/@machineDefinition/@ifaces.0"/>
<networks name="oam" protocol="tcp/ip" addressRange="/24" connectedIfaces="//@infrastructure/@groups.0/@machineDefinition/@ifaces.1 //@infrastructure/@groups.1/@machineDefinition/@ifaces.1 //@infrastructure/@groups.2/@machineDefinition/@ifaces.1"/>
</infrastructure>
<concretizations name="con_infra">
<providers name="openstack">
<vms name="concrete_osint_vm" maps="//@infrastructure/@groups.0/@machineDefinition">
<annotations xsi:type="commons:SProperty" key="vm_name" value="osint"/>
<annotations xsi:type="commons:SProperty" key="vm_flavor" value="small"/>
<annotations xsi:type="commons:SProperty" key="vm_key_name" value="user1"/>
</vms>
<vms name="concrete_igw_vm" maps="//@infrastructure/@groups.1/@machineDefinition">
<annotations xsi:type="commons:SProperty" key="vm_name" value="igw"/>
<annotations xsi:type="commons:SProperty" key="vm_flavor" value="small"/>
<annotations xsi:type="commons:SProperty" key="vm_key_name" value="user1"/>
</vms>
<vms name="concrete_ewcf_vm" maps="//@infrastructure/@groups.2/@machineDefinition">
<annotations xsi:type="commons:SProperty" key="vm_name" value="ewcf"/>
<annotations xsi:type="commons:SProperty" key="vm_flavor" value="small"/>
<annotations xsi:type="commons:SProperty" key="vm_key_name" value="user1"/>
</vms>
<vmImages name="concrete_vm_image1" maps="//@infrastructure/@generators.0">
<annotations xsi:type="commons:SProperty" key="name" value="ubuntu-20.04.3"/>
</vmImages>
<vmImages name="concrete_vm_image2" maps="//@infrastructure/@generators.2">
<annotations xsi:type="commons:SProperty" key="name" value="ubuntu-20.04.3"/>
</vmImages>
<vmImages name="concrete_vm_image3" maps="//@infrastructure/@generators.3">
<annotations xsi:type="commons:SProperty" key="name" value="ubuntu-20.04.3"/>
</vmImages>
<networks name="concrete_net1" maps="//@infrastructure/@networks.0">
<annotations xsi:type="commons:SProperty" key="name" value="uc3_net1"/>
</networks>
<networks name="concrete_net2" maps="//@infrastructure/@networks.1">
<annotations xsi:type="commons:SProperty" key="name" value="uc3_net2"/>
</networks>
<networks name="concrete_net3" maps="//@infrastructure/@networks.2">
<annotations xsi:type="commons:SProperty" key="name" value="uc3_net3"/>
</networks>
<networks name="concrete_net4" maps="//@infrastructure/@networks.3">
<annotations xsi:type="commons:SProperty" key="name" value="uc3_net4"/>
</networks>
</providers>
</concretizations>
<optimization name="opt">
<objectives xsi:type="optimization:MeasurableObjective" kind="min" property="cost"/>
<nonfunctionalRequirements xsi:type="commons:RangedRequirement" name="req1" description="Cost &lt;= 200" property="cost" max="200.0"/>
<nonfunctionalRequirements xsi:type="commons:EnumeratedRequirement" name="req2" description="Provider" property="provider">
<values>AMAZ</values>
</nonfunctionalRequirements>
</optimization>
<configurations name="conf">
<deployments component="//@application/@components.1" node="//@infrastructure/@groups.0/@machineDefinition"/>
<deployments component="//@application/@components.0" node="//@infrastructure/@groups.1/@machineDefinition"/>
<deployments component="//@application/@components.2" node="//@infrastructure/@groups.2/@machineDefinition"/>
</configurations>
</commons:DOMLModel>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment