Skip to content

Commit

Permalink
Merge branch 'feature/metamodel-improvement' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
maxkratz committed Jul 28, 2021
2 parents 1823349 + 42ccb7a commit 1bc84da
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public ActiveSubstrateSwitchMetric(final SubstrateNetwork sNet) {

for (final Node n : facade.getAllSwitchesOfNetwork(sNet.getName())) {
final SubstrateSwitch sw = (SubstrateSwitch) n;
if (!sw.getGuestSwitches().isEmpty() || !sw.getGuestLinks().isEmpty()) {
if (!sw.getGuestSwitches().isEmpty()) {
value++;
}
}
Expand Down
27 changes: 16 additions & 11 deletions network.model/model/Model.ecore
Original file line number Diff line number Diff line change
Expand Up @@ -137,12 +137,6 @@
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Abstract class that represents a substrate element."/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="guestLinks" upperBound="-1"
eType="#//VirtualLink" eOpposite="#//VirtualLink/host">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Virtual guest links."/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SubstrateNode" abstract="true" eSuperTypes="#//Node #//SubstrateElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
Expand Down Expand Up @@ -173,7 +167,18 @@
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SubstrateServer" eSuperTypes="#//Server #//SubstrateNode">
<eClassifiers xsi:type="ecore:EClass" name="SubstrateHostLink" abstract="true" eSuperTypes="#//SubstrateElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Abstract class that can host a virtual link."/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="guestLinks" upperBound="-1"
eType="#//VirtualLink" eOpposite="#//VirtualLink/host">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Virtual guest links."/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SubstrateServer" eSuperTypes="#//Server #//SubstrateNode #//SubstrateHostLink">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Class that represents a substrate server."/>
</eAnnotations>
Expand Down Expand Up @@ -213,7 +218,7 @@
<details key="documentation" value="Class that represents a substrate switch."/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SubstrateLink" eSuperTypes="#//Link #//SubstrateElement">
<eClassifiers xsi:type="ecore:EClass" name="SubstrateLink" eSuperTypes="#//Link #//SubstrateElement #//SubstrateHostLink">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Class that represents a substrate link."/>
</eAnnotations>
Expand All @@ -230,7 +235,7 @@
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SubstratePath" eSuperTypes="#//SubstrateElement">
<eClassifiers xsi:type="ecore:EClass" name="SubstratePath" eSuperTypes="#//SubstrateElement #//SubstrateHostLink">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Class that represents a substrate path."/>
</eAnnotations>
Expand Down Expand Up @@ -335,8 +340,8 @@
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Class that represents a virtual link."/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="host" lowerBound="1" eType="#//SubstrateElement"
eOpposite="#//SubstrateElement/guestLinks">
<eStructuralFeatures xsi:type="ecore:EReference" name="host" lowerBound="1" eType="#//SubstrateHostLink"
eOpposite="#//SubstrateHostLink/guestLinks">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Substrate host element."/>
</eAnnotations>
Expand Down
20 changes: 11 additions & 9 deletions network.model/model/Model.emf
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,7 @@ abstract class Network extends Element {
}

@GenModel(documentation="Abstract class that represents a substrate element.")
abstract class SubstrateElement extends Element {
// Keep in mind: The host element must not be a switch!
@GenModel(documentation="Virtual guest links.")
ref VirtualLink [*]#host guestLinks;
abstract class SubstrateElement extends Element {
}

@GenModel(documentation="Abstract class that represents a substrate node.")
Expand All @@ -95,8 +92,14 @@ abstract class SubstrateNode extends Node, SubstrateElement {
ref SubstratePath [*]#target incomingPaths;
}

@GenModel(documentation="Abstract class that can host a virtual link.")
abstract class SubstrateHostLink extends SubstrateElement {
@GenModel(documentation="Virtual guest links.")
ref VirtualLink [*]#host guestLinks;
}

@GenModel(documentation="Class that represents a substrate server.")
class SubstrateServer extends Server, SubstrateNode {
class SubstrateServer extends Server, SubstrateNode, SubstrateHostLink {
@GenModel(documentation="Virtual guest servers.")
ref VirtualServer [*]#host guestServers;

Expand All @@ -120,7 +123,7 @@ class SubstrateSwitch extends Switch, SubstrateNode {
}

@GenModel(documentation="Class that represents a substrate link.")
class SubstrateLink extends Link, SubstrateElement {
class SubstrateLink extends Link, SubstrateElement, SubstrateHostLink {
@GenModel(documentation="Residual bandwidth amount of this link.")
attr EInt [1] residualBandwidth;

Expand All @@ -129,7 +132,7 @@ class SubstrateLink extends Link, SubstrateElement {
}

@GenModel(documentation="Class that represents a substrate path.")
class SubstratePath extends SubstrateElement {
class SubstratePath extends SubstrateElement, SubstrateHostLink {
@GenModel(documentation="Network this path belongs to.")
ref SubstrateNetwork [1]#paths network;

Expand Down Expand Up @@ -188,9 +191,8 @@ class VirtualSwitch extends Switch, VirtualNode {

@GenModel(documentation="Class that represents a virtual link.")
class VirtualLink extends Link, VirtualElement {
// Keep in mind: The host element must not be a switch!
@GenModel(documentation="Substrate host element.")
ref SubstrateElement [1]#guestLinks host;
ref SubstrateHostLink [1]#guestLinks host;
}

@GenModel(documentation="Represents a virtual network.")
Expand Down
4 changes: 2 additions & 2 deletions network.model/src/facade/ModelFacade.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import model.Node;
import model.Root;
import model.Server;
import model.SubstrateElement;
import model.SubstrateHostLink;
import model.SubstrateLink;
import model.SubstrateNetwork;
import model.SubstrateNode;
Expand Down Expand Up @@ -1269,7 +1269,7 @@ public void unembedVirtualNetwork(final VirtualNetwork vNet) {

for (final Link l : vNet.getLinks()) {
final VirtualLink vl = (VirtualLink) l;
final SubstrateElement host = vl.getHost();
final SubstrateHostLink host = vl.getHost();
if (host == null) {
continue;
}
Expand Down

0 comments on commit 1bc84da

Please sign in to comment.