package org.opennaas.extensions.vcpe.manager.model; import java.util.ArrayList; import java.util.List; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import org.opennaas.extensions.vcpe.model.Domain; import org.opennaas.extensions.vcpe.model.Link; import org.opennaas.extensions.vcpe.model.Router; import org.opennaas.extensions.vcpe.model.VCPENetworkElement; // TODO this class should be template independent. Hence, no structure can be pre-defined // TODO this class should be replaced by a NetworkResource with its topology. // This approach would allow users to: // 1. create resources in opennaas // 2. create a network with desired resources // 3. create a VCPENetworkManager with desired network as a physical topology // 4. create VCPENetworkResources for clients. // and all that without touching a single configuration file. // No need to say that Template and VCPENetworkBuilder logic will need to change significantly to support that :S // But that's the way to go, IMO. @XmlAccessorType(XmlAccessType.FIELD) public class VCPEPhysicalInfrastructure { private Router phyRouterCore; private Router phyRouterMaster; private Router phyRouterBackup; private Domain phyBoD; private List<Link> phyLinks; public Router getPhyRouterCore() { return phyRouterCore; } public void setPhyRouterCore(Router phyRouterCore) { this.phyRouterCore = phyRouterCore; } public Router getPhyRouterMaster() { return phyRouterMaster; } public void setPhyRouterMaster(Router phyRouterMaster) { this.phyRouterMaster = phyRouterMaster; } public Router getPhyRouterBackup() { return phyRouterBackup; } public void setPhyRouterBackup(Router phyRouterBackup) { this.phyRouterBackup = phyRouterBackup; } public Domain getPhyBoD() { return phyBoD; } public void setPhyBoD(Domain phyBoD) { this.phyBoD = phyBoD; } public List<Link> getPhyLinks() { return phyLinks; } public void setPhyLinks(List<Link> phyLinks) { this.phyLinks = phyLinks; } /** * Creates a list with all VCPENetworkElements forming the physicalInfrastructure. Adding elements to returned list does NOT include the elements * in this PhysicalInfrastructure . * * @return a list with all VCPENetworkElements forming the physicalInfrastructure */ public List<VCPENetworkElement> getAllElements() { List<VCPENetworkElement> all = new ArrayList<VCPENetworkElement>(); all.add(phyRouterCore); all.add(phyRouterMaster); all.add(phyRouterBackup); all.add(phyBoD); all.addAll(phyLinks); all.addAll(phyRouterCore.getInterfaces()); all.addAll(phyRouterMaster.getInterfaces()); all.addAll(phyRouterBackup.getInterfaces()); all.addAll(phyBoD.getInterfaces()); return all; } }