diff --git a/network.metrics/src/metrics/embedding/ActiveSubstrateSwitchMetric.java b/network.metrics/src/metrics/embedding/ActiveSubstrateSwitchMetric.java index 72c161f2..6d2db908 100644 --- a/network.metrics/src/metrics/embedding/ActiveSubstrateSwitchMetric.java +++ b/network.metrics/src/metrics/embedding/ActiveSubstrateSwitchMetric.java @@ -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++; } } diff --git a/network.model/model/Model.ecore b/network.model/model/Model.ecore index 07f1053b..7413ce96 100644 --- a/network.model/model/Model.ecore +++ b/network.model/model/Model.ecore @@ -137,12 +137,6 @@
- - -
- - @@ -173,7 +167,18 @@ - + + +
+ + + +
+ + + +
@@ -213,7 +218,7 @@
- +
@@ -230,7 +235,7 @@ - +
@@ -335,8 +340,8 @@
- +
diff --git a/network.model/model/Model.emf b/network.model/model/Model.emf index 9d31e331..02b64507 100644 --- a/network.model/model/Model.emf +++ b/network.model/model/Model.emf @@ -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.") @@ -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; @@ -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; @@ -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; @@ -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.") diff --git a/network.model/src/facade/ModelFacade.java b/network.model/src/facade/ModelFacade.java index a4420312..13bd21e8 100644 --- a/network.model/src/facade/ModelFacade.java +++ b/network.model/src/facade/ModelFacade.java @@ -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; @@ -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; }