From a912c5ce9968da5936a695064f22083898e7b93d Mon Sep 17 00:00:00 2001 From: Ashlee Young Date: Fri, 23 Oct 2015 08:26:04 -0700 Subject: Moving new files to patches to avoid being overwritten when we update the onos tree Change-Id: I7506c6e451fb9d46e36f691593b26b42626e8a64 Signed-off-by: Ashlee Young --- .../vtnrsc/sfc/DefaultFlowClassifier.java | 414 +++++++++++++++++++++ .../onosproject/vtnrsc/sfc/DefaultPortPair.java | 200 ++++++++++ .../org/onosproject/vtnrsc/sfc/FlowClassifier.java | 257 +++++++++++++ .../onosproject/vtnrsc/sfc/FlowClassifierId.java | 71 ++++ .../java/org/onosproject/vtnrsc/sfc/PortPair.java | 140 +++++++ .../org/onosproject/vtnrsc/sfc/PortPairId.java | 92 +++++ .../org/onosproject/vtnrsc/sfc/package-info.java | 20 + .../vtnrsc/sfc/DefaultFlowClassifier.java | 414 --------------------- .../onosproject/vtnrsc/sfc/DefaultPortPair.java | 200 ---------- .../org/onosproject/vtnrsc/sfc/FlowClassifier.java | 257 ------------- .../onosproject/vtnrsc/sfc/FlowClassifierId.java | 71 ---- .../java/org/onosproject/vtnrsc/sfc/PortPair.java | 140 ------- .../org/onosproject/vtnrsc/sfc/PortPairId.java | 92 ----- .../org/onosproject/vtnrsc/sfc/package-info.java | 20 - 14 files changed, 1194 insertions(+), 1194 deletions(-) create mode 100644 framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/DefaultFlowClassifier.java create mode 100644 framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/DefaultPortPair.java create mode 100644 framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/FlowClassifier.java create mode 100644 framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/FlowClassifierId.java create mode 100644 framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPair.java create mode 100644 framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPairId.java create mode 100644 framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/package-info.java delete mode 100644 framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/DefaultFlowClassifier.java delete mode 100644 framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/DefaultPortPair.java delete mode 100644 framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/FlowClassifier.java delete mode 100644 framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/FlowClassifierId.java delete mode 100644 framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPair.java delete mode 100644 framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPairId.java delete mode 100644 framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/package-info.java diff --git a/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/DefaultFlowClassifier.java b/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/DefaultFlowClassifier.java new file mode 100644 index 00000000..7e06f332 --- /dev/null +++ b/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/DefaultFlowClassifier.java @@ -0,0 +1,414 @@ +/* + * Copyright 2015 Open Networking Laboratory + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onosproject.vtnrsc.sfc; + +import java.util.Objects; + +import org.onlab.packet.EthType.EtherType; +import org.onlab.packet.IpPrefix; +import org.onosproject.vtnrsc.TenantId; +import org.onosproject.vtnrsc.VirtualPortId; + +import com.google.common.base.MoreObjects; +import static com.google.common.base.Preconditions.checkNotNull; +/** + * Provides Default flow classifier. + */ +public final class DefaultFlowClassifier implements FlowClassifier { + + private final FlowClassifierId flowClassifierId; + private final TenantId tenantId; + private final String name; + private final String description; + private final EtherType etherType; + private final String protocol; + private final int minSrcPortRange; + private final int maxSrcPortRange; + private final int minDstPortRange; + private final int maxDstPortRange; + private final IpPrefix srcIpPrefix; + private final IpPrefix dstIpPrefix; + private final VirtualPortId srcPort; + private final VirtualPortId dstPort; + private static final int NULL_PORT = 0; + + /** + * Constructor to create default flow classifier. + * + * @param flowClassifierId flow classifier Id + * @param tenantId Tenant ID + * @param name flow classifier name + * @param description flow classifier description + * @param etherType etherType + * @param protocol IP protocol + * @param minSrcPortRange Minimum Source port range + * @param maxSrcPortRange Maximum Source port range + * @param minDstPortRange Minimum destination port range + * @param maxDstPortRange Maximum destination port range + * @param srcIpPrefix Source IP prefix + * @param dstIpPrefix destination IP prefix + * @param srcPort Source VirtualPort + * @param dstPort destination VirtualPort + */ + private DefaultFlowClassifier(FlowClassifierId flowClassifierId, TenantId tenantId, String name, + String description, EtherType etherType, String protocol, int minSrcPortRange, int maxSrcPortRange, + int minDstPortRange, int maxDstPortRange, IpPrefix srcIpPrefix, IpPrefix dstIpPrefix, + VirtualPortId srcPort, VirtualPortId dstPort) { + this.flowClassifierId = flowClassifierId; + this.tenantId = tenantId; + this.name = name; + this.description = description; + this.etherType = etherType; + this.protocol = protocol; + this.minSrcPortRange = minSrcPortRange; + this.maxSrcPortRange = maxSrcPortRange; + this.minDstPortRange = minDstPortRange; + this.maxDstPortRange = maxDstPortRange; + this.srcIpPrefix = srcIpPrefix; + this.dstIpPrefix = dstIpPrefix; + this.srcPort = srcPort; + this.dstPort = dstPort; + } + + @Override + public FlowClassifierId flowClassifierId() { + return flowClassifierId; + } + + @Override + public TenantId tenantId() { + return tenantId; + } + + @Override + public String flowclassifierName() { + return name; + } + + @Override + public String flowClassifierDescription() { + return description; + } + + @Override + public EtherType etherType() { + return etherType; + } + + @Override + public String ipProtocol() { + return protocol; + } + + @Override + public int minSrcPortRange() { + return minSrcPortRange; + } + + @Override + public int maxSrcPortRange() { + return maxSrcPortRange; + } + + @Override + public int minDstPortRange() { + return minDstPortRange; + } + + @Override + public int maxDstPortRange() { + return maxDstPortRange; + } + + @Override + public IpPrefix srcIpPrefix() { + return srcIpPrefix; + } + + @Override + public IpPrefix dstIpPrefix() { + return dstIpPrefix; + } + + @Override + public VirtualPortId srcVirtualPort() { + return srcPort; + } + + @Override + public VirtualPortId dstVirtualPort() { + return dstPort; + } + + /** + * Builder class for constructing Flow classifier. + */ + public static class Builder implements FlowClassifier.Builder { + + private FlowClassifierId flowClassifierId; + private TenantId tenantId; + private String name; + private boolean isFlowClassifierNameSet = false; + private String description; + private boolean isFlowClassifierDescriptionSet = false; + private EtherType etherType; + private boolean isEtherTypeSet = false; + private String protocol; + private boolean isProtocolSet = false; + private int minSrcPortRange; + private boolean isMinSrcPortRangeSet = false; + private int maxSrcPortRange; + private boolean isMaxSrcPortRangeSet = false; + private int minDstPortRange; + private boolean isMinDstPortRangeSet = false; + private int maxDstPortRange; + private boolean isMaxDstPortRangeSet = false; + private IpPrefix srcIpPrefix; + private boolean isSrcIpPrefixSet = false; + private IpPrefix dstIpPrefix; + private boolean isDstIpPrefixSet = false; + private VirtualPortId srcPort; + private boolean isSrcPortSet = false; + private VirtualPortId dstPort; + private boolean isDstPortSet = false; + + @Override + public FlowClassifier build() { + + checkNotNull(flowClassifierId, "FlowClassifier id can not be null."); + checkNotNull(tenantId, "Tenant id can not be null."); + String name = null; + String description = null; + EtherType etherType = null; + String protocol = null; + int minSrcPortRange = NULL_PORT; + int maxSrcPortRange = NULL_PORT; + int minDstPortRange = NULL_PORT; + int maxDstPortRange = NULL_PORT; + IpPrefix srcIpPrefix = null; + IpPrefix dstIpPrefix = null; + VirtualPortId srcPort = null; + VirtualPortId dstPort = null; + + if (isFlowClassifierNameSet) { + name = this.name; + } + if (isFlowClassifierDescriptionSet) { + description = this.description; + } + if (isEtherTypeSet) { + etherType = this.etherType; + } + if (isProtocolSet) { + protocol = this.protocol; + } + if (isMinSrcPortRangeSet) { + minSrcPortRange = this.minSrcPortRange; + } + if (isMaxSrcPortRangeSet) { + maxSrcPortRange = this.maxSrcPortRange; + } + if (isMinDstPortRangeSet) { + minDstPortRange = this.minDstPortRange; + } + if (isMaxDstPortRangeSet) { + maxDstPortRange = this.maxDstPortRange; + } + if (isSrcIpPrefixSet) { + srcIpPrefix = this.srcIpPrefix; + } + if (isDstIpPrefixSet) { + dstIpPrefix = this.dstIpPrefix; + } + if (isSrcPortSet) { + srcPort = this.srcPort; + } + if (isDstPortSet) { + dstPort = this.dstPort; + } + + return new DefaultFlowClassifier(flowClassifierId, tenantId, name, description, etherType, protocol, + minSrcPortRange, maxSrcPortRange, minDstPortRange, maxDstPortRange, srcIpPrefix, dstIpPrefix, + srcPort, dstPort); + } + + @Override + public Builder setFlowClassifierId(FlowClassifierId flowClassifierId) { + this.flowClassifierId = flowClassifierId; + return this; + } + + @Override + public Builder setTenantId(TenantId tenantId) { + this.tenantId = tenantId; + return this; + } + + @Override + public Builder setFlowClassifierName(String name) { + this.name = name; + this.isFlowClassifierNameSet = true; + return this; + } + + @Override + public Builder setFlowClassifierDescription(String description) { + this.description = description; + this.isFlowClassifierDescriptionSet = true; + return this; + } + + @Override + public Builder setEtherType(EtherType etherType) { + this.etherType = etherType; + this.isEtherTypeSet = true; + return this; + } + + @Override + public Builder setIpProtocol(String protocol) { + this.protocol = protocol; + this.isProtocolSet = true; + return this; + } + + @Override + public Builder setMinSrcPortRange(int minSrcPortRange) { + this.minSrcPortRange = minSrcPortRange; + this.isMinSrcPortRangeSet = true; + return this; + } + + @Override + public Builder setMaxSrcPortRange(int maxSrcPortRange) { + this.maxSrcPortRange = maxSrcPortRange; + this.isMaxSrcPortRangeSet = true; + return this; + } + + @Override + public Builder setMinDstPortRange(int minDstPortRange) { + this.minDstPortRange = minDstPortRange; + this.isMinDstPortRangeSet = true; + return this; + } + + @Override + public Builder setMaxDstPortRange(int maxDstPortRange) { + this.maxDstPortRange = maxDstPortRange; + this.isMaxDstPortRangeSet = true; + return this; + } + + @Override + public Builder setSrcIpPrefix(IpPrefix srcIpPrefix) { + this.srcIpPrefix = srcIpPrefix; + this.isSrcIpPrefixSet = true; + return this; + } + + @Override + public Builder setDstIpPrefix(IpPrefix dstIpPrefix) { + this.dstIpPrefix = dstIpPrefix; + this.isDstIpPrefixSet = true; + return this; + } + + @Override + public Builder setSrcVirtualPort(VirtualPortId srcPort) { + this.srcPort = srcPort; + this.isSrcPortSet = true; + return this; + } + + @Override + public Builder setDstVirtualPort(VirtualPortId dstPort) { + this.dstPort = dstPort; + this.isDstPortSet = true; + return this; + } + } + + @Override + public int hashCode() { + return Objects.hash(flowClassifierId, tenantId, name, description, etherType, protocol, minSrcPortRange, + maxSrcPortRange, minDstPortRange, maxDstPortRange, srcIpPrefix, dstIpPrefix, srcPort, dstPort); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj instanceof DefaultFlowClassifier) { + DefaultFlowClassifier other = (DefaultFlowClassifier) obj; + return Objects.equals(this.flowClassifierId, other.flowClassifierId) + && Objects.equals(this.tenantId, other.tenantId) + && Objects.equals(this.name, other.name) + && Objects.equals(this.description, other.description) + && Objects.equals(this.etherType, other.etherType) + && Objects.equals(this.protocol, other.protocol) + && Objects.equals(this.minSrcPortRange, other.minSrcPortRange) + && Objects.equals(this.maxSrcPortRange, other.maxSrcPortRange) + && Objects.equals(this.minDstPortRange, other.minDstPortRange) + && Objects.equals(this.maxDstPortRange, other.maxDstPortRange) + && Objects.equals(this.srcIpPrefix, other.srcIpPrefix) + && Objects.equals(this.dstIpPrefix, other.dstIpPrefix) + && Objects.equals(this.srcPort, other.srcPort) + && Objects.equals(this.dstPort, other.dstPort); + } + return false; + } + + @Override + public boolean exactMatch(FlowClassifier flowClassifier) { + return this.equals(flowClassifier) + && Objects.equals(this.flowClassifierId, flowClassifier.flowClassifierId()) + && Objects.equals(this.tenantId, flowClassifier.tenantId()) + && Objects.equals(this.name, flowClassifier.flowclassifierName()) + && Objects.equals(this.description, flowClassifier.flowClassifierDescription()) + && Objects.equals(this.etherType, flowClassifier.etherType()) + && Objects.equals(this.protocol, flowClassifier.ipProtocol()) + && Objects.equals(this.minSrcPortRange, flowClassifier.minSrcPortRange()) + && Objects.equals(this.maxSrcPortRange, flowClassifier.maxSrcPortRange()) + && Objects.equals(this.minDstPortRange, flowClassifier.minDstPortRange()) + && Objects.equals(this.maxDstPortRange, flowClassifier.maxDstPortRange()) + && Objects.equals(this.srcIpPrefix, flowClassifier.srcIpPrefix()) + && Objects.equals(this.dstIpPrefix, flowClassifier.dstIpPrefix()) + && Objects.equals(this.srcPort, flowClassifier.srcVirtualPort()) + && Objects.equals(this.dstPort, flowClassifier.dstVirtualPort()); + } + + @Override + public String toString() { + return MoreObjects.toStringHelper(getClass()) + .add("FlowClassifierId", flowClassifierId) + .add("TenantId", tenantId) + .add("Name", name) + .add("Description", description) + .add("EtherType", etherType) + .add("Protocol", protocol) + .add("MinSrcPortRange", minSrcPortRange) + .add("MaxSrcPortRange", maxSrcPortRange) + .add("MinDstPortRange", minDstPortRange) + .add("MaxDstPortRange", maxDstPortRange) + .add("SrcIpPrefix", srcIpPrefix) + .add("DstIpPrefix", dstIpPrefix) + .add("SrcPort", srcPort) + .add("DstPort", dstPort) + .toString(); + } +} \ No newline at end of file diff --git a/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/DefaultPortPair.java b/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/DefaultPortPair.java new file mode 100644 index 00000000..ed480fb7 --- /dev/null +++ b/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/DefaultPortPair.java @@ -0,0 +1,200 @@ +/* + * Copyright 2015 Open Networking Laboratory + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onosproject.vtnrsc.sfc; + +import static com.google.common.base.MoreObjects.toStringHelper; +import static com.google.common.base.Preconditions.checkNotNull; + +import java.util.Objects; + +import org.onosproject.vtnrsc.TenantId; + +/** + * Implementation of port pair. + */ +public final class DefaultPortPair implements PortPair { + + private final PortPairId portPairId; + private final TenantId tenantId; + private final String name; + private final String description; + private final String ingress; + private final String egress; + + /** + * Default constructor to create Port Pair. + * + * @param portPairId port pair id + * @param tenantId tenant id + * @param name name of port pair + * @param description description of port pair + * @param ingress ingress port + * @param egress egress port + */ + private DefaultPortPair(PortPairId portPairId, TenantId tenantId, + String name, String description, + String ingress, String egress) { + + this.portPairId = portPairId; + this.tenantId = tenantId; + this.name = name; + this.description = description; + this.ingress = ingress; + this.egress = egress; + } + + @Override + public PortPairId portPairId() { + return portPairId; + } + + @Override + public TenantId tenantId() { + return tenantId; + } + + @Override + public String name() { + return name; + } + + @Override + public String description() { + return description; + } + + @Override + public String ingress() { + return ingress; + } + + @Override + public String egress() { + return egress; + } + + @Override + public int hashCode() { + return Objects.hash(portPairId, tenantId, name, description, + ingress, egress); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj instanceof DefaultPortPair) { + DefaultPortPair that = (DefaultPortPair) obj; + return Objects.equals(portPairId, that.portPairId) && + Objects.equals(tenantId, that.tenantId) && + Objects.equals(name, that.name) && + Objects.equals(description, that.description) && + Objects.equals(ingress, that.ingress) && + Objects.equals(egress, that.egress); + } + return false; + } + + @Override + public boolean exactMatch(PortPair portPair) { + return this.equals(portPair) && + Objects.equals(this.portPairId, portPair.portPairId()) && + Objects.equals(this.tenantId, portPair.tenantId()); + } + + @Override + public String toString() { + return toStringHelper(this) + .add("id", portPairId.toString()) + .add("tenantId", tenantId.tenantId()) + .add("name", name) + .add("description", description) + .add("ingress", ingress) + .add("egress", egress) + .toString(); + } + + /** + * To create an instance of the builder. + * + * @return instance of builder + */ + public static Builder builder() { + return new Builder(); + } + + /** + * Builder class for Port pair. + */ + public static final class Builder implements PortPair.Builder { + + private PortPairId portPairId; + private TenantId tenantId; + private String name; + private String description; + private String ingress; + private String egress; + + @Override + public Builder setId(PortPairId portPairId) { + this.portPairId = portPairId; + return this; + } + + @Override + public Builder setTenantId(TenantId tenantId) { + this.tenantId = tenantId; + return this; + } + + @Override + public Builder setName(String name) { + this.name = name; + return this; + } + + @Override + public Builder setDescription(String description) { + this.description = description; + return this; + } + + @Override + public Builder setIngress(String ingress) { + this.ingress = ingress; + return this; + } + + @Override + public Builder setEgress(String egress) { + this.egress = egress; + return this; + } + + @Override + public PortPair build() { + + checkNotNull(portPairId, "Port pair id cannot be null"); + checkNotNull(tenantId, "Tenant id cannot be null"); + checkNotNull(ingress, "Ingress of a port pair cannot be null"); + checkNotNull(egress, "Egress of a port pair cannot be null"); + + return new DefaultPortPair(portPairId, tenantId, name, description, + ingress, egress); + } + } +} diff --git a/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/FlowClassifier.java b/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/FlowClassifier.java new file mode 100644 index 00000000..0931206c --- /dev/null +++ b/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/FlowClassifier.java @@ -0,0 +1,257 @@ +/* + * Copyright 2015 Open Networking Laboratory + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onosproject.vtnrsc.sfc; + +import org.onlab.packet.IpPrefix; +import org.onosproject.vtnrsc.TenantId; +import org.onosproject.vtnrsc.VirtualPortId; +/** + * Abstraction of an entity which provides flow classifier for service function chain. + */ +public interface FlowClassifier { + + /** + * Returns flow classifier ID. + * + * @return flow classifier id + */ + FlowClassifierId flowClassifierId(); + + /** + * Returns Tenant ID. + * + * @return tenant Id + */ + TenantId tenantId(); + + /** + * Returns flow classifier name. + * + * @return flow classifier name + */ + String flowclassifierName(); + + /** + * Returns flow classifier description. + * + * @return flow classifier description + */ + String flowClassifierDescription(); + + /** + * Returns ethernet type. + * + * @return ethernet type + */ + String etherType(); + + /** + * Returns IP Protocol. + * + * @return IP protocol + */ + String ipProtocol(); + + /** + * Returns minimum source port range. + * + * @return minimum source port range + */ + int minSrcPortRange(); + + /** + * Returns maximum source port range. + * + * @return maximum source port range + */ + int maxSrcPortRange(); + + /** + * Returns minimum destination port range. + * + * @return minimum destination port range + */ + int minDstPortRange(); + + /** + * Returns maximum destination port range. + * + * @return maximum destination port range. + */ + int maxDstPortRange(); + + /** + * Returns Source IP prefix. + * + * @return Source IP prefix + */ + IpPrefix srcIpPrefix(); + + /** + * Returns Destination IP prefix. + * + * @return Destination IP prefix + */ + IpPrefix dstIpPrefix(); + + /** + * Returns Source virtual port. + * + * @return Source virtual port + */ + VirtualPortId srcVirtualPort(); + + /** + * Returns Destination virtual port. + * + * @return Destination virtual port + */ + VirtualPortId dstVirtualPort(); + + /** + * Returns whether this Flow classifier is an exact match to the + * Flow classifier given in the argument. + * + * @param flowClassifier other flowClassifier to match against + * @return true if the flowClassifiers are an exact match, otherwise false + */ + boolean exactMatch(FlowClassifier flowClassifier); + + /** + * Builder for flow Classifier. + */ + interface Builder { + + /** + * Returns Flow Classifier. + * + * @return flow classifier. + */ + FlowClassifier build(); + + /** + * Sets Flow Classifier ID. + * + * @param flowClassifierId flow classifier id. + * @return Builder object by setting flow classifier Id. + */ + Builder setFlowClassifierId(FlowClassifierId flowClassifierId); + + /** + * Sets Tenant ID. + * + * @param tenantId tenant id. + * @return Builder object by setting Tenant ID. + */ + Builder setTenantId(TenantId tenantId); + + /** + * Sets Flow classifier name. + * + * @param name flow classifier name + * @return builder object by setting flow classifier name + */ + Builder setFlowClassifierName(String name); + + /** + * Sets flow classifier description. + * + * @param description flow classifier description + * @return flow classifier description + */ + Builder setFlowClassifierDescription(String description); + + /** + * Sets Ehternet type. + * + * @param etherType ethernet type + * @return ethernet type + */ + Builder setEtherType(String etherType); + + /** + * Sets IP protocol. + * + * @param protocol IP protocol + * @return builder object by setting IP protocol + */ + Builder setIpProtocol(String protocol); + + /** + * Set minimum source port range. + * + * @param minRange minimum source port range + * @return builder object by setting minimum source port range + */ + Builder setMinSrcPortRange(int minRange); + + /** + * Sets maximum source port range. + * + * @param maxRange maximum source port range + * @return builder object by setting maximum source port range + */ + Builder setMaxSrcPortRange(int maxRange); + + /** + * Sets minimum destination port range. + * + * @param minRange minimum destination port range + * @return builder object by setting minimum destination port range + */ + Builder setMinDstPortRange(int minRange); + + /** + * Sets maximum destination port range. + * + * @param maxRange maximum destination port range. + * @return builder object by setting maximum destination port range. + */ + Builder setMaxDstPortRange(int maxRange); + + /** + * Sets Source IP prefix. + * + * @param srcIpPrefix Source IP prefix + * @return builder object by setting Source IP prefix + */ + Builder setSrcIpPrefix(IpPrefix srcIpPrefix); + + /** + * Sets Destination IP prefix. + * + * @param dstIpPrefix Destination IP prefix + * @return builder object by setting Destination IP prefix + */ + Builder setDstIpPrefix(IpPrefix dstIpPrefix); + + /** + * Sets Source virtual port. + * + * @param srcPort Source virtual port + * @return builder object by setting Source virtual port + */ + Builder setSrcVirtualPort(VirtualPortId srcPort); + + /** + * Sets Destination virtual port. + * + * @param dstPort Destination virtual port + * @return builder object by setting Destination virtual port + */ + Builder setDstVirtualPort(VirtualPortId dstPort); + } +} diff --git a/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/FlowClassifierId.java b/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/FlowClassifierId.java new file mode 100644 index 00000000..d0f03959 --- /dev/null +++ b/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/FlowClassifierId.java @@ -0,0 +1,71 @@ +/* + * Copyright 2015 Open Networking Laboratory + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onosproject.vtnrsc.sfc; + +import java.util.Objects; +import java.util.UUID; +import com.google.common.base.MoreObjects; + +/** + * flow classification identifier. + */ +public final class FlowClassifierId { + + private final UUID flowClassifierId; + + /** + * Constructor to create flow classifier id. + * + * @param flowClassifierId flow classifier id. + */ + private FlowClassifierId(final UUID flowClassifierId) { + this.flowClassifierId = flowClassifierId; + } + + /** + * Returns new flow classifier id. + * + * @param flowClassifierId flow classifier id + * @return new flow classifier id + */ + public static FlowClassifierId flowClassifierId(final UUID flowClassifierId) { + return new FlowClassifierId(flowClassifierId); + } + + @Override + public int hashCode() { + return Objects.hashCode(this.flowClassifierId); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj instanceof FlowClassifierId) { + final FlowClassifierId other = (FlowClassifierId) obj; + return Objects.equals(this.flowClassifierId, other.flowClassifierId); + } + return false; + } + + @Override + public String toString() { + return MoreObjects.toStringHelper(getClass()) + .add("FlowClassifierId", flowClassifierId) + .toString(); + } +} diff --git a/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPair.java b/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPair.java new file mode 100644 index 00000000..e3df941d --- /dev/null +++ b/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPair.java @@ -0,0 +1,140 @@ +/* + * Copyright 2015 Open Networking Laboratory + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onosproject.vtnrsc.sfc; + +import org.onosproject.vtnrsc.TenantId; + +/** + * Abstraction of an entity providing Port Pair information. + * A port pair represents a service function instance. + */ +public interface PortPair { + + /** + * Returns the ID of this port Pair. + * + * @return the port pair id + */ + PortPairId portPairId(); + + /** + * Returns the tenant id of this port pair. + * + * @return an tenant id + */ + TenantId tenantId(); + + /** + * Returns the description of this port pair. + * + * @return description of port pair + */ + String name(); + + /** + * Returns the description of this port pair. + * + * @return description of port pair + */ + String description(); + + /** + * Returns the ingress port of this port pair. + * + * @return ingress of port pair + */ + String ingress(); + + /** + * Returns the egress port of this port pair. + * + * @return egress of port pair + */ + String egress(); + + /** + * Returns whether this port pair is an exact match to the port pair given + * in the argument. + *

+ * Exact match means the Port port pairs match with the given port pair. + * It does not consider the port pair id, name and description. + *

+ * @param portPair other port pair to match against + * @return true if the port pairs are an exact match, otherwise false + */ + boolean exactMatch(PortPair portPair); + + /** + * A port pair builder.. + */ + interface Builder { + + /** + * Assigns the port pair id to this object. + * + * @param portPairId the port pair id + * @return this the builder object + */ + Builder setId(PortPairId portPairId); + + /** + * Assigns tenant id to this object. + * + * @param tenantId tenant id of the port pair + * @return this the builder object + */ + Builder setTenantId(TenantId tenantId); + + /** + * Assigns the name to this object. + * + * @param name name of the port pair + * @return this the builder object + */ + Builder setName(String name); + + /** + * Assigns the description to this object. + * + * @param description description of the port pair + * @return this the builder object + */ + Builder setDescription(String description); + + /** + * Assigns the ingress port to this object. + * + * @param port ingress port of the port pair + * @return this the builder object + */ + Builder setIngress(String port); + + /** + * Assigns the egress port to this object. + * + * @param port egress port of the port pair + * @return this the builder object + */ + Builder setEgress(String port); + + /** + * Builds a port pair object. + * + * @return a port pair. + */ + PortPair build(); + } +} diff --git a/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPairId.java b/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPairId.java new file mode 100644 index 00000000..0209c23e --- /dev/null +++ b/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPairId.java @@ -0,0 +1,92 @@ +/* + * Copyright 2015 Open Networking Laboratory + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onosproject.vtnrsc.sfc; + +import static com.google.common.base.Preconditions.checkNotNull; + +import java.util.UUID; + +import com.google.common.base.Objects; + +/** + * Representation of a Port Pair ID. + */ +public final class PortPairId { + + private final UUID portPairId; + + /** + * Private constructor for port pair id. + * + * @param id UUID id of port pair + */ + private PortPairId(UUID id) { + checkNotNull(id, "Port chain id can not be null"); + this.portPairId = id; + } + + /** + * Constructor to create port pair id from UUID. + * + * @param id UUID of port pair id + * @return object of port pair id + */ + public static PortPairId portPairId(UUID id) { + return new PortPairId(id); + } + + /** + * Constructor to create port pair id from string. + * + * @param id port pair id in string + * @return object of port pair id + */ + public static PortPairId portPairId(String id) { + return new PortPairId(UUID.fromString(id)); + } + + /** + * Returns teh value of port pair id. + * + * @return port pair id + */ + public UUID value() { + return portPairId; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + + if (obj.getClass() == this.getClass()) { + PortPairId that = (PortPairId) obj; + return Objects.equal(this.portPairId, that.portPairId); + } + return false; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.portPairId); + } + + @Override + public String toString() { + return portPairId.toString(); + } +} diff --git a/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/package-info.java b/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/package-info.java new file mode 100644 index 00000000..4fbcfd29 --- /dev/null +++ b/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/package-info.java @@ -0,0 +1,20 @@ +/* + * Copyright 2015 Open Networking Laboratory + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Service for interacting with SFC. + */ +package org.onosproject.vtnrsc.sfc; diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/DefaultFlowClassifier.java b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/DefaultFlowClassifier.java deleted file mode 100644 index 7e06f332..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/DefaultFlowClassifier.java +++ /dev/null @@ -1,414 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.sfc; - -import java.util.Objects; - -import org.onlab.packet.EthType.EtherType; -import org.onlab.packet.IpPrefix; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.VirtualPortId; - -import com.google.common.base.MoreObjects; -import static com.google.common.base.Preconditions.checkNotNull; -/** - * Provides Default flow classifier. - */ -public final class DefaultFlowClassifier implements FlowClassifier { - - private final FlowClassifierId flowClassifierId; - private final TenantId tenantId; - private final String name; - private final String description; - private final EtherType etherType; - private final String protocol; - private final int minSrcPortRange; - private final int maxSrcPortRange; - private final int minDstPortRange; - private final int maxDstPortRange; - private final IpPrefix srcIpPrefix; - private final IpPrefix dstIpPrefix; - private final VirtualPortId srcPort; - private final VirtualPortId dstPort; - private static final int NULL_PORT = 0; - - /** - * Constructor to create default flow classifier. - * - * @param flowClassifierId flow classifier Id - * @param tenantId Tenant ID - * @param name flow classifier name - * @param description flow classifier description - * @param etherType etherType - * @param protocol IP protocol - * @param minSrcPortRange Minimum Source port range - * @param maxSrcPortRange Maximum Source port range - * @param minDstPortRange Minimum destination port range - * @param maxDstPortRange Maximum destination port range - * @param srcIpPrefix Source IP prefix - * @param dstIpPrefix destination IP prefix - * @param srcPort Source VirtualPort - * @param dstPort destination VirtualPort - */ - private DefaultFlowClassifier(FlowClassifierId flowClassifierId, TenantId tenantId, String name, - String description, EtherType etherType, String protocol, int minSrcPortRange, int maxSrcPortRange, - int minDstPortRange, int maxDstPortRange, IpPrefix srcIpPrefix, IpPrefix dstIpPrefix, - VirtualPortId srcPort, VirtualPortId dstPort) { - this.flowClassifierId = flowClassifierId; - this.tenantId = tenantId; - this.name = name; - this.description = description; - this.etherType = etherType; - this.protocol = protocol; - this.minSrcPortRange = minSrcPortRange; - this.maxSrcPortRange = maxSrcPortRange; - this.minDstPortRange = minDstPortRange; - this.maxDstPortRange = maxDstPortRange; - this.srcIpPrefix = srcIpPrefix; - this.dstIpPrefix = dstIpPrefix; - this.srcPort = srcPort; - this.dstPort = dstPort; - } - - @Override - public FlowClassifierId flowClassifierId() { - return flowClassifierId; - } - - @Override - public TenantId tenantId() { - return tenantId; - } - - @Override - public String flowclassifierName() { - return name; - } - - @Override - public String flowClassifierDescription() { - return description; - } - - @Override - public EtherType etherType() { - return etherType; - } - - @Override - public String ipProtocol() { - return protocol; - } - - @Override - public int minSrcPortRange() { - return minSrcPortRange; - } - - @Override - public int maxSrcPortRange() { - return maxSrcPortRange; - } - - @Override - public int minDstPortRange() { - return minDstPortRange; - } - - @Override - public int maxDstPortRange() { - return maxDstPortRange; - } - - @Override - public IpPrefix srcIpPrefix() { - return srcIpPrefix; - } - - @Override - public IpPrefix dstIpPrefix() { - return dstIpPrefix; - } - - @Override - public VirtualPortId srcVirtualPort() { - return srcPort; - } - - @Override - public VirtualPortId dstVirtualPort() { - return dstPort; - } - - /** - * Builder class for constructing Flow classifier. - */ - public static class Builder implements FlowClassifier.Builder { - - private FlowClassifierId flowClassifierId; - private TenantId tenantId; - private String name; - private boolean isFlowClassifierNameSet = false; - private String description; - private boolean isFlowClassifierDescriptionSet = false; - private EtherType etherType; - private boolean isEtherTypeSet = false; - private String protocol; - private boolean isProtocolSet = false; - private int minSrcPortRange; - private boolean isMinSrcPortRangeSet = false; - private int maxSrcPortRange; - private boolean isMaxSrcPortRangeSet = false; - private int minDstPortRange; - private boolean isMinDstPortRangeSet = false; - private int maxDstPortRange; - private boolean isMaxDstPortRangeSet = false; - private IpPrefix srcIpPrefix; - private boolean isSrcIpPrefixSet = false; - private IpPrefix dstIpPrefix; - private boolean isDstIpPrefixSet = false; - private VirtualPortId srcPort; - private boolean isSrcPortSet = false; - private VirtualPortId dstPort; - private boolean isDstPortSet = false; - - @Override - public FlowClassifier build() { - - checkNotNull(flowClassifierId, "FlowClassifier id can not be null."); - checkNotNull(tenantId, "Tenant id can not be null."); - String name = null; - String description = null; - EtherType etherType = null; - String protocol = null; - int minSrcPortRange = NULL_PORT; - int maxSrcPortRange = NULL_PORT; - int minDstPortRange = NULL_PORT; - int maxDstPortRange = NULL_PORT; - IpPrefix srcIpPrefix = null; - IpPrefix dstIpPrefix = null; - VirtualPortId srcPort = null; - VirtualPortId dstPort = null; - - if (isFlowClassifierNameSet) { - name = this.name; - } - if (isFlowClassifierDescriptionSet) { - description = this.description; - } - if (isEtherTypeSet) { - etherType = this.etherType; - } - if (isProtocolSet) { - protocol = this.protocol; - } - if (isMinSrcPortRangeSet) { - minSrcPortRange = this.minSrcPortRange; - } - if (isMaxSrcPortRangeSet) { - maxSrcPortRange = this.maxSrcPortRange; - } - if (isMinDstPortRangeSet) { - minDstPortRange = this.minDstPortRange; - } - if (isMaxDstPortRangeSet) { - maxDstPortRange = this.maxDstPortRange; - } - if (isSrcIpPrefixSet) { - srcIpPrefix = this.srcIpPrefix; - } - if (isDstIpPrefixSet) { - dstIpPrefix = this.dstIpPrefix; - } - if (isSrcPortSet) { - srcPort = this.srcPort; - } - if (isDstPortSet) { - dstPort = this.dstPort; - } - - return new DefaultFlowClassifier(flowClassifierId, tenantId, name, description, etherType, protocol, - minSrcPortRange, maxSrcPortRange, minDstPortRange, maxDstPortRange, srcIpPrefix, dstIpPrefix, - srcPort, dstPort); - } - - @Override - public Builder setFlowClassifierId(FlowClassifierId flowClassifierId) { - this.flowClassifierId = flowClassifierId; - return this; - } - - @Override - public Builder setTenantId(TenantId tenantId) { - this.tenantId = tenantId; - return this; - } - - @Override - public Builder setFlowClassifierName(String name) { - this.name = name; - this.isFlowClassifierNameSet = true; - return this; - } - - @Override - public Builder setFlowClassifierDescription(String description) { - this.description = description; - this.isFlowClassifierDescriptionSet = true; - return this; - } - - @Override - public Builder setEtherType(EtherType etherType) { - this.etherType = etherType; - this.isEtherTypeSet = true; - return this; - } - - @Override - public Builder setIpProtocol(String protocol) { - this.protocol = protocol; - this.isProtocolSet = true; - return this; - } - - @Override - public Builder setMinSrcPortRange(int minSrcPortRange) { - this.minSrcPortRange = minSrcPortRange; - this.isMinSrcPortRangeSet = true; - return this; - } - - @Override - public Builder setMaxSrcPortRange(int maxSrcPortRange) { - this.maxSrcPortRange = maxSrcPortRange; - this.isMaxSrcPortRangeSet = true; - return this; - } - - @Override - public Builder setMinDstPortRange(int minDstPortRange) { - this.minDstPortRange = minDstPortRange; - this.isMinDstPortRangeSet = true; - return this; - } - - @Override - public Builder setMaxDstPortRange(int maxDstPortRange) { - this.maxDstPortRange = maxDstPortRange; - this.isMaxDstPortRangeSet = true; - return this; - } - - @Override - public Builder setSrcIpPrefix(IpPrefix srcIpPrefix) { - this.srcIpPrefix = srcIpPrefix; - this.isSrcIpPrefixSet = true; - return this; - } - - @Override - public Builder setDstIpPrefix(IpPrefix dstIpPrefix) { - this.dstIpPrefix = dstIpPrefix; - this.isDstIpPrefixSet = true; - return this; - } - - @Override - public Builder setSrcVirtualPort(VirtualPortId srcPort) { - this.srcPort = srcPort; - this.isSrcPortSet = true; - return this; - } - - @Override - public Builder setDstVirtualPort(VirtualPortId dstPort) { - this.dstPort = dstPort; - this.isDstPortSet = true; - return this; - } - } - - @Override - public int hashCode() { - return Objects.hash(flowClassifierId, tenantId, name, description, etherType, protocol, minSrcPortRange, - maxSrcPortRange, minDstPortRange, maxDstPortRange, srcIpPrefix, dstIpPrefix, srcPort, dstPort); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultFlowClassifier) { - DefaultFlowClassifier other = (DefaultFlowClassifier) obj; - return Objects.equals(this.flowClassifierId, other.flowClassifierId) - && Objects.equals(this.tenantId, other.tenantId) - && Objects.equals(this.name, other.name) - && Objects.equals(this.description, other.description) - && Objects.equals(this.etherType, other.etherType) - && Objects.equals(this.protocol, other.protocol) - && Objects.equals(this.minSrcPortRange, other.minSrcPortRange) - && Objects.equals(this.maxSrcPortRange, other.maxSrcPortRange) - && Objects.equals(this.minDstPortRange, other.minDstPortRange) - && Objects.equals(this.maxDstPortRange, other.maxDstPortRange) - && Objects.equals(this.srcIpPrefix, other.srcIpPrefix) - && Objects.equals(this.dstIpPrefix, other.dstIpPrefix) - && Objects.equals(this.srcPort, other.srcPort) - && Objects.equals(this.dstPort, other.dstPort); - } - return false; - } - - @Override - public boolean exactMatch(FlowClassifier flowClassifier) { - return this.equals(flowClassifier) - && Objects.equals(this.flowClassifierId, flowClassifier.flowClassifierId()) - && Objects.equals(this.tenantId, flowClassifier.tenantId()) - && Objects.equals(this.name, flowClassifier.flowclassifierName()) - && Objects.equals(this.description, flowClassifier.flowClassifierDescription()) - && Objects.equals(this.etherType, flowClassifier.etherType()) - && Objects.equals(this.protocol, flowClassifier.ipProtocol()) - && Objects.equals(this.minSrcPortRange, flowClassifier.minSrcPortRange()) - && Objects.equals(this.maxSrcPortRange, flowClassifier.maxSrcPortRange()) - && Objects.equals(this.minDstPortRange, flowClassifier.minDstPortRange()) - && Objects.equals(this.maxDstPortRange, flowClassifier.maxDstPortRange()) - && Objects.equals(this.srcIpPrefix, flowClassifier.srcIpPrefix()) - && Objects.equals(this.dstIpPrefix, flowClassifier.dstIpPrefix()) - && Objects.equals(this.srcPort, flowClassifier.srcVirtualPort()) - && Objects.equals(this.dstPort, flowClassifier.dstVirtualPort()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("FlowClassifierId", flowClassifierId) - .add("TenantId", tenantId) - .add("Name", name) - .add("Description", description) - .add("EtherType", etherType) - .add("Protocol", protocol) - .add("MinSrcPortRange", minSrcPortRange) - .add("MaxSrcPortRange", maxSrcPortRange) - .add("MinDstPortRange", minDstPortRange) - .add("MaxDstPortRange", maxDstPortRange) - .add("SrcIpPrefix", srcIpPrefix) - .add("DstIpPrefix", dstIpPrefix) - .add("SrcPort", srcPort) - .add("DstPort", dstPort) - .toString(); - } -} \ No newline at end of file diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/DefaultPortPair.java b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/DefaultPortPair.java deleted file mode 100644 index ed480fb7..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/DefaultPortPair.java +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.sfc; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -import org.onosproject.vtnrsc.TenantId; - -/** - * Implementation of port pair. - */ -public final class DefaultPortPair implements PortPair { - - private final PortPairId portPairId; - private final TenantId tenantId; - private final String name; - private final String description; - private final String ingress; - private final String egress; - - /** - * Default constructor to create Port Pair. - * - * @param portPairId port pair id - * @param tenantId tenant id - * @param name name of port pair - * @param description description of port pair - * @param ingress ingress port - * @param egress egress port - */ - private DefaultPortPair(PortPairId portPairId, TenantId tenantId, - String name, String description, - String ingress, String egress) { - - this.portPairId = portPairId; - this.tenantId = tenantId; - this.name = name; - this.description = description; - this.ingress = ingress; - this.egress = egress; - } - - @Override - public PortPairId portPairId() { - return portPairId; - } - - @Override - public TenantId tenantId() { - return tenantId; - } - - @Override - public String name() { - return name; - } - - @Override - public String description() { - return description; - } - - @Override - public String ingress() { - return ingress; - } - - @Override - public String egress() { - return egress; - } - - @Override - public int hashCode() { - return Objects.hash(portPairId, tenantId, name, description, - ingress, egress); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultPortPair) { - DefaultPortPair that = (DefaultPortPair) obj; - return Objects.equals(portPairId, that.portPairId) && - Objects.equals(tenantId, that.tenantId) && - Objects.equals(name, that.name) && - Objects.equals(description, that.description) && - Objects.equals(ingress, that.ingress) && - Objects.equals(egress, that.egress); - } - return false; - } - - @Override - public boolean exactMatch(PortPair portPair) { - return this.equals(portPair) && - Objects.equals(this.portPairId, portPair.portPairId()) && - Objects.equals(this.tenantId, portPair.tenantId()); - } - - @Override - public String toString() { - return toStringHelper(this) - .add("id", portPairId.toString()) - .add("tenantId", tenantId.tenantId()) - .add("name", name) - .add("description", description) - .add("ingress", ingress) - .add("egress", egress) - .toString(); - } - - /** - * To create an instance of the builder. - * - * @return instance of builder - */ - public static Builder builder() { - return new Builder(); - } - - /** - * Builder class for Port pair. - */ - public static final class Builder implements PortPair.Builder { - - private PortPairId portPairId; - private TenantId tenantId; - private String name; - private String description; - private String ingress; - private String egress; - - @Override - public Builder setId(PortPairId portPairId) { - this.portPairId = portPairId; - return this; - } - - @Override - public Builder setTenantId(TenantId tenantId) { - this.tenantId = tenantId; - return this; - } - - @Override - public Builder setName(String name) { - this.name = name; - return this; - } - - @Override - public Builder setDescription(String description) { - this.description = description; - return this; - } - - @Override - public Builder setIngress(String ingress) { - this.ingress = ingress; - return this; - } - - @Override - public Builder setEgress(String egress) { - this.egress = egress; - return this; - } - - @Override - public PortPair build() { - - checkNotNull(portPairId, "Port pair id cannot be null"); - checkNotNull(tenantId, "Tenant id cannot be null"); - checkNotNull(ingress, "Ingress of a port pair cannot be null"); - checkNotNull(egress, "Egress of a port pair cannot be null"); - - return new DefaultPortPair(portPairId, tenantId, name, description, - ingress, egress); - } - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/FlowClassifier.java b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/FlowClassifier.java deleted file mode 100644 index 0931206c..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/FlowClassifier.java +++ /dev/null @@ -1,257 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.sfc; - -import org.onlab.packet.IpPrefix; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.VirtualPortId; -/** - * Abstraction of an entity which provides flow classifier for service function chain. - */ -public interface FlowClassifier { - - /** - * Returns flow classifier ID. - * - * @return flow classifier id - */ - FlowClassifierId flowClassifierId(); - - /** - * Returns Tenant ID. - * - * @return tenant Id - */ - TenantId tenantId(); - - /** - * Returns flow classifier name. - * - * @return flow classifier name - */ - String flowclassifierName(); - - /** - * Returns flow classifier description. - * - * @return flow classifier description - */ - String flowClassifierDescription(); - - /** - * Returns ethernet type. - * - * @return ethernet type - */ - String etherType(); - - /** - * Returns IP Protocol. - * - * @return IP protocol - */ - String ipProtocol(); - - /** - * Returns minimum source port range. - * - * @return minimum source port range - */ - int minSrcPortRange(); - - /** - * Returns maximum source port range. - * - * @return maximum source port range - */ - int maxSrcPortRange(); - - /** - * Returns minimum destination port range. - * - * @return minimum destination port range - */ - int minDstPortRange(); - - /** - * Returns maximum destination port range. - * - * @return maximum destination port range. - */ - int maxDstPortRange(); - - /** - * Returns Source IP prefix. - * - * @return Source IP prefix - */ - IpPrefix srcIpPrefix(); - - /** - * Returns Destination IP prefix. - * - * @return Destination IP prefix - */ - IpPrefix dstIpPrefix(); - - /** - * Returns Source virtual port. - * - * @return Source virtual port - */ - VirtualPortId srcVirtualPort(); - - /** - * Returns Destination virtual port. - * - * @return Destination virtual port - */ - VirtualPortId dstVirtualPort(); - - /** - * Returns whether this Flow classifier is an exact match to the - * Flow classifier given in the argument. - * - * @param flowClassifier other flowClassifier to match against - * @return true if the flowClassifiers are an exact match, otherwise false - */ - boolean exactMatch(FlowClassifier flowClassifier); - - /** - * Builder for flow Classifier. - */ - interface Builder { - - /** - * Returns Flow Classifier. - * - * @return flow classifier. - */ - FlowClassifier build(); - - /** - * Sets Flow Classifier ID. - * - * @param flowClassifierId flow classifier id. - * @return Builder object by setting flow classifier Id. - */ - Builder setFlowClassifierId(FlowClassifierId flowClassifierId); - - /** - * Sets Tenant ID. - * - * @param tenantId tenant id. - * @return Builder object by setting Tenant ID. - */ - Builder setTenantId(TenantId tenantId); - - /** - * Sets Flow classifier name. - * - * @param name flow classifier name - * @return builder object by setting flow classifier name - */ - Builder setFlowClassifierName(String name); - - /** - * Sets flow classifier description. - * - * @param description flow classifier description - * @return flow classifier description - */ - Builder setFlowClassifierDescription(String description); - - /** - * Sets Ehternet type. - * - * @param etherType ethernet type - * @return ethernet type - */ - Builder setEtherType(String etherType); - - /** - * Sets IP protocol. - * - * @param protocol IP protocol - * @return builder object by setting IP protocol - */ - Builder setIpProtocol(String protocol); - - /** - * Set minimum source port range. - * - * @param minRange minimum source port range - * @return builder object by setting minimum source port range - */ - Builder setMinSrcPortRange(int minRange); - - /** - * Sets maximum source port range. - * - * @param maxRange maximum source port range - * @return builder object by setting maximum source port range - */ - Builder setMaxSrcPortRange(int maxRange); - - /** - * Sets minimum destination port range. - * - * @param minRange minimum destination port range - * @return builder object by setting minimum destination port range - */ - Builder setMinDstPortRange(int minRange); - - /** - * Sets maximum destination port range. - * - * @param maxRange maximum destination port range. - * @return builder object by setting maximum destination port range. - */ - Builder setMaxDstPortRange(int maxRange); - - /** - * Sets Source IP prefix. - * - * @param srcIpPrefix Source IP prefix - * @return builder object by setting Source IP prefix - */ - Builder setSrcIpPrefix(IpPrefix srcIpPrefix); - - /** - * Sets Destination IP prefix. - * - * @param dstIpPrefix Destination IP prefix - * @return builder object by setting Destination IP prefix - */ - Builder setDstIpPrefix(IpPrefix dstIpPrefix); - - /** - * Sets Source virtual port. - * - * @param srcPort Source virtual port - * @return builder object by setting Source virtual port - */ - Builder setSrcVirtualPort(VirtualPortId srcPort); - - /** - * Sets Destination virtual port. - * - * @param dstPort Destination virtual port - * @return builder object by setting Destination virtual port - */ - Builder setDstVirtualPort(VirtualPortId dstPort); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/FlowClassifierId.java b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/FlowClassifierId.java deleted file mode 100644 index d0f03959..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/FlowClassifierId.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.sfc; - -import java.util.Objects; -import java.util.UUID; -import com.google.common.base.MoreObjects; - -/** - * flow classification identifier. - */ -public final class FlowClassifierId { - - private final UUID flowClassifierId; - - /** - * Constructor to create flow classifier id. - * - * @param flowClassifierId flow classifier id. - */ - private FlowClassifierId(final UUID flowClassifierId) { - this.flowClassifierId = flowClassifierId; - } - - /** - * Returns new flow classifier id. - * - * @param flowClassifierId flow classifier id - * @return new flow classifier id - */ - public static FlowClassifierId flowClassifierId(final UUID flowClassifierId) { - return new FlowClassifierId(flowClassifierId); - } - - @Override - public int hashCode() { - return Objects.hashCode(this.flowClassifierId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof FlowClassifierId) { - final FlowClassifierId other = (FlowClassifierId) obj; - return Objects.equals(this.flowClassifierId, other.flowClassifierId); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("FlowClassifierId", flowClassifierId) - .toString(); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPair.java b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPair.java deleted file mode 100644 index e3df941d..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPair.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.sfc; - -import org.onosproject.vtnrsc.TenantId; - -/** - * Abstraction of an entity providing Port Pair information. - * A port pair represents a service function instance. - */ -public interface PortPair { - - /** - * Returns the ID of this port Pair. - * - * @return the port pair id - */ - PortPairId portPairId(); - - /** - * Returns the tenant id of this port pair. - * - * @return an tenant id - */ - TenantId tenantId(); - - /** - * Returns the description of this port pair. - * - * @return description of port pair - */ - String name(); - - /** - * Returns the description of this port pair. - * - * @return description of port pair - */ - String description(); - - /** - * Returns the ingress port of this port pair. - * - * @return ingress of port pair - */ - String ingress(); - - /** - * Returns the egress port of this port pair. - * - * @return egress of port pair - */ - String egress(); - - /** - * Returns whether this port pair is an exact match to the port pair given - * in the argument. - *

- * Exact match means the Port port pairs match with the given port pair. - * It does not consider the port pair id, name and description. - *

- * @param portPair other port pair to match against - * @return true if the port pairs are an exact match, otherwise false - */ - boolean exactMatch(PortPair portPair); - - /** - * A port pair builder.. - */ - interface Builder { - - /** - * Assigns the port pair id to this object. - * - * @param portPairId the port pair id - * @return this the builder object - */ - Builder setId(PortPairId portPairId); - - /** - * Assigns tenant id to this object. - * - * @param tenantId tenant id of the port pair - * @return this the builder object - */ - Builder setTenantId(TenantId tenantId); - - /** - * Assigns the name to this object. - * - * @param name name of the port pair - * @return this the builder object - */ - Builder setName(String name); - - /** - * Assigns the description to this object. - * - * @param description description of the port pair - * @return this the builder object - */ - Builder setDescription(String description); - - /** - * Assigns the ingress port to this object. - * - * @param port ingress port of the port pair - * @return this the builder object - */ - Builder setIngress(String port); - - /** - * Assigns the egress port to this object. - * - * @param port egress port of the port pair - * @return this the builder object - */ - Builder setEgress(String port); - - /** - * Builds a port pair object. - * - * @return a port pair. - */ - PortPair build(); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPairId.java b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPairId.java deleted file mode 100644 index 0209c23e..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPairId.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.sfc; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.UUID; - -import com.google.common.base.Objects; - -/** - * Representation of a Port Pair ID. - */ -public final class PortPairId { - - private final UUID portPairId; - - /** - * Private constructor for port pair id. - * - * @param id UUID id of port pair - */ - private PortPairId(UUID id) { - checkNotNull(id, "Port chain id can not be null"); - this.portPairId = id; - } - - /** - * Constructor to create port pair id from UUID. - * - * @param id UUID of port pair id - * @return object of port pair id - */ - public static PortPairId portPairId(UUID id) { - return new PortPairId(id); - } - - /** - * Constructor to create port pair id from string. - * - * @param id port pair id in string - * @return object of port pair id - */ - public static PortPairId portPairId(String id) { - return new PortPairId(UUID.fromString(id)); - } - - /** - * Returns teh value of port pair id. - * - * @return port pair id - */ - public UUID value() { - return portPairId; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj.getClass() == this.getClass()) { - PortPairId that = (PortPairId) obj; - return Objects.equal(this.portPairId, that.portPairId); - } - return false; - } - - @Override - public int hashCode() { - return Objects.hashCode(this.portPairId); - } - - @Override - public String toString() { - return portPairId.toString(); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/package-info.java b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/package-info.java deleted file mode 100644 index 4fbcfd29..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Service for interacting with SFC. - */ -package org.onosproject.vtnrsc.sfc; -- cgit 1.2.3-korg