ONOS-6886 Move interface classes from incubator to core
Change-Id: Iaae4d98279e4b77fc3f0b5a63d547921f93aeb46
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/config/basics/InterfaceConfig.java b/incubator/api/src/main/java/org/onosproject/incubator/net/config/basics/InterfaceConfig.java
index 91832dc..80ee3a7 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/config/basics/InterfaceConfig.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/config/basics/InterfaceConfig.java
@@ -26,7 +26,7 @@
import org.onlab.packet.IpPrefix;
import org.onlab.packet.MacAddress;
import org.onlab.packet.VlanId;
-import org.onosproject.incubator.net.intf.Interface;
+import org.onosproject.net.intf.Interface;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.config.Config;
import org.onosproject.net.host.InterfaceIpAddress;
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/intf/Interface.java b/incubator/api/src/main/java/org/onosproject/incubator/net/intf/Interface.java
deleted file mode 100644
index c055bb0..0000000
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/intf/Interface.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.incubator.net.intf;
-
-import com.google.common.annotations.Beta;
-import com.google.common.base.MoreObjects;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Lists;
-import org.onlab.packet.MacAddress;
-import org.onlab.packet.VlanId;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.host.InterfaceIpAddress;
-
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * An Interface maps network configuration information (such as addresses and
- * vlans) to a port in the network.
- */
-@Beta
-public class Interface {
- public static final String NO_INTERFACE_NAME = "";
-
- private final String name;
- private final ConnectPoint connectPoint;
- private final List<InterfaceIpAddress> ipAddresses;
- private final MacAddress macAddress;
- // TODO: Deprecate this due to ambiguity
- private final VlanId vlan;
- private final VlanId vlanUntagged;
- private final Set<VlanId> vlanTagged;
- private final VlanId vlanNative;
-
- /**
- * Creates new Interface with the provided configuration.
- *
- * @param name name of the interface
- * @param connectPoint the connect point this interface maps to
- * @param ipAddresses list of IP addresses
- * @param macAddress MAC address
- * @param vlan VLAN ID
- */
- public Interface(String name, ConnectPoint connectPoint,
- List<InterfaceIpAddress> ipAddresses,
- MacAddress macAddress, VlanId vlan) {
- this(name, connectPoint, ipAddresses, macAddress, vlan, null, null, null);
- }
-
- /**
- * Creates new Interface with the provided configuration.
- *
- * @param name name of the interface
- * @param connectPoint the connect point this interface maps to
- * @param ipAddresses list of IP addresses
- * @param macAddress MAC address
- * @param vlan VLAN ID
- * @param vlanUntagged untagged VLAN.
- * Cannot be used with vlanTagged or vlanNative.
- * @param vlanTagged tagged VLANs.
- * Cannot be used with vlanUntagged.
- * @param vlanNative native vLAN. Optional.
- * Can only be used when vlanTagged is specified. Cannot be used with vlanUntagged.
- */
- public Interface(String name, ConnectPoint connectPoint,
- List<InterfaceIpAddress> ipAddresses,
- MacAddress macAddress, VlanId vlan,
- VlanId vlanUntagged, Set<VlanId> vlanTagged, VlanId vlanNative) {
- this.name = name == null ? NO_INTERFACE_NAME : name;
- this.connectPoint = checkNotNull(connectPoint);
- this.ipAddresses = ipAddresses == null ? Lists.newArrayList() : ipAddresses;
- this.macAddress = macAddress == null ? MacAddress.NONE : macAddress;
- this.vlan = vlan == null ? VlanId.NONE : vlan;
- this.vlanUntagged = vlanUntagged == null ? VlanId.NONE : vlanUntagged;
- this.vlanTagged = vlanTagged == null ? ImmutableSet.of() : ImmutableSet.copyOf(vlanTagged);
- this.vlanNative = vlanNative == null ? VlanId.NONE : vlanNative;
- }
-
- /**
- * Retrieves the name of the interface.
- *
- * @return name
- */
- public String name() {
- return name;
- }
-
- /**
- * Retrieves the connection point that this interface maps to.
- *
- * @return the connection point
- */
- public ConnectPoint connectPoint() {
- return connectPoint;
- }
-
- /**
- * Retrieves a list of IP addresses that are assigned to the interface in
- * the order that they were configured.
- *
- * @return list of IP addresses
- */
- public List<InterfaceIpAddress> ipAddressesList() {
- return ipAddresses;
- }
-
- /**
- * Retrieves the MAC address that is assigned to the interface.
- *
- * @return the MAC address
- */
- public MacAddress mac() {
- return macAddress;
- }
-
- /**
- * Retrieves the VLAN ID that is assigned to the interface.
- *
- * @return the VLAN ID
- */
- public VlanId vlan() {
- return vlan;
- }
-
- /**
- * Retrieves the VLAN ID that is assigned to untagged packets.
- *
- * @return the VLAN ID
- */
- public VlanId vlanUntagged() {
- return vlanUntagged;
- }
-
- /**
- * Retrieves the set of VLAN IDs that are allowed on this interface.
- *
- * @return the VLAN ID
- */
- public Set<VlanId> vlanTagged() {
- return vlanTagged;
- }
-
- /**
- * Retrieves the VLAN ID that is assigned to untagged packets on this
- * tagged interface.
- *
- * @return the VLAN ID
- */
- public VlanId vlanNative() {
- return vlanNative;
- }
-
- @Override
- public boolean equals(Object other) {
- if (!(other instanceof Interface)) {
- return false;
- }
-
- Interface otherInterface = (Interface) other;
-
- return Objects.equals(name, otherInterface.name) &&
- Objects.equals(connectPoint, otherInterface.connectPoint) &&
- Objects.equals(ipAddresses, otherInterface.ipAddresses) &&
- Objects.equals(macAddress, otherInterface.macAddress) &&
- Objects.equals(vlan, otherInterface.vlan) &&
- Objects.equals(vlanUntagged, otherInterface.vlanUntagged) &&
- Objects.equals(vlanTagged, otherInterface.vlanTagged) &&
- Objects.equals(vlanNative, otherInterface.vlanNative);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(connectPoint, name, ipAddresses, macAddress, vlan,
- vlanUntagged, vlanTagged, vlanNative);
- }
-
- @Override
- public String toString() {
- return MoreObjects.toStringHelper(getClass())
- .add("name", name)
- .add("connectPoint", connectPoint)
- .add("ipAddresses", ipAddresses)
- .add("macAddress", macAddress)
- .add("vlan", vlan)
- .add("vlanUntagged", vlanUntagged)
- .add("vlanTagged", vlanTagged)
- .add("vlanNative", vlanNative)
- .toString();
- }
-}
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/intf/InterfaceAdminService.java b/incubator/api/src/main/java/org/onosproject/incubator/net/intf/InterfaceAdminService.java
deleted file mode 100644
index 410dc39..0000000
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/intf/InterfaceAdminService.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.incubator.net.intf;
-
-import org.onosproject.net.ConnectPoint;
-
-/**
- * Provides a means to modify the interfaces configuration.
- */
-public interface InterfaceAdminService {
-
- /**
- * Adds a new interface configuration to the system.
- *
- * @param intf interface to add
- */
- void add(Interface intf);
-
- /**
- * Removes an interface configuration from the system.
- *
- * @param connectPoint connect point of the interface
- * @param name name of the interface
- * @return the result of removal
- */
- boolean remove(ConnectPoint connectPoint, String name);
-}
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/intf/InterfaceEvent.java b/incubator/api/src/main/java/org/onosproject/incubator/net/intf/InterfaceEvent.java
deleted file mode 100644
index 230b4d2..0000000
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/intf/InterfaceEvent.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.incubator.net.intf;
-
-import org.onosproject.event.AbstractEvent;
-import org.joda.time.LocalDateTime;
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-/**
- * Describes an interface event.
- */
-public class InterfaceEvent extends AbstractEvent<InterfaceEvent.Type, Interface> {
-
- private final Interface prevSubject;
-
- public enum Type {
- /**
- * Indicates a new interface has been added.
- */
- INTERFACE_ADDED,
-
- /**
- * Indicates an interface has been updated.
- */
- INTERFACE_UPDATED,
-
- /**
- * Indicates an interface has been removed.
- */
- INTERFACE_REMOVED
- }
-
- /**
- * Creates an interface event with type and subject.
- *
- * @param type event type
- * @param subject subject interface
- */
- public InterfaceEvent(Type type, Interface subject) {
- this(type, subject, null);
- }
-
- /**
- * Creates an interface event with type, subject and time of event.
- *
- * @param type event type
- * @param subject subject interface
- * @param time time of event
- */
- public InterfaceEvent(Type type, Interface subject, long time) {
- this(type, subject, null, time);
- }
-
- /**
- * Creates an interface event with type, subject and previous subject.
- *
- * @param type event type
- * @param subject subject interface
- * @param prevSubject previous interface subject
- */
- public InterfaceEvent(Type type, Interface subject, Interface prevSubject) {
- super(type, subject);
- this.prevSubject = prevSubject;
- }
-
- /**
- * Creates an interface event with type, subject, previous subject and time.
- *
- * @param type event type
- * @param subject subject interface
- * @param prevSubject previous interface subject
- * @param time time of event
- */
- public InterfaceEvent(Type type, Interface subject, Interface prevSubject, long time) {
- super(type, subject, time);
- this.prevSubject = prevSubject;
- }
-
- /**
- * Returns the previous interface subject.
- *
- * @return previous subject of interface or null if the event is not interface specific.
- */
- public Interface prevSubject() {
- return prevSubject;
- }
-
- @Override
- public String toString() {
- if (prevSubject == null) {
- return super.toString();
- }
- return toStringHelper(this)
- .add("time", new LocalDateTime(time()))
- .add("type", type())
- .add("subject", subject())
- .add("prevSubject", prevSubject)
- .toString();
- }
-}
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/intf/InterfaceListener.java b/incubator/api/src/main/java/org/onosproject/incubator/net/intf/InterfaceListener.java
deleted file mode 100644
index cf003c8..0000000
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/intf/InterfaceListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.incubator.net.intf;
-
-import org.onosproject.event.EventListener;
-
-/**
- * Listener for interface events.
- */
-public interface InterfaceListener extends EventListener<InterfaceEvent> {
-}
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/intf/InterfaceService.java b/incubator/api/src/main/java/org/onosproject/incubator/net/intf/InterfaceService.java
deleted file mode 100644
index 9a173aa..0000000
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/intf/InterfaceService.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.incubator.net.intf;
-
-import com.google.common.annotations.Beta;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.VlanId;
-import org.onosproject.event.ListenerService;
-import org.onosproject.net.ConnectPoint;
-
-import java.util.Set;
-
-/**
- * Service for interacting with interfaces.
- */
-@Beta
-public interface InterfaceService
- extends ListenerService<InterfaceEvent, InterfaceListener> {
-
- /**
- * Returns the set of all interfaces in the system.
- *
- * @return set of interfaces
- */
- Set<Interface> getInterfaces();
-
- /**
- * Returns the interface with the given name.
- *
- * @param connectPoint connect point of the interface
- * @param name name of the interface
- * @return interface if it exists, otherwise null
- */
- Interface getInterfaceByName(ConnectPoint connectPoint, String name);
-
- /**
- * Returns the set of interfaces configured on the given port.
- *
- * @param port connect point
- * @return set of interfaces
- */
- Set<Interface> getInterfacesByPort(ConnectPoint port);
-
- /**
- * Returns the set of interfaces with the given IP address.
- *
- * @param ip IP address
- * @return set of interfaces
- */
- Set<Interface> getInterfacesByIp(IpAddress ip);
-
- /**
- * Returns the set of interfaces in the given VLAN.
- *
- * @param vlan VLAN ID of the interfaces
- * @return set of interfaces
- */
- Set<Interface> getInterfacesByVlan(VlanId vlan);
-
- /**
- * Returns an interface that has an address that is in the same subnet as
- * the given IP address.
- *
- * @param ip IP address to find matching subnet interface for
- * @return interface
- */
- Interface getMatchingInterface(IpAddress ip);
-
- /**
- * Returns all interfaces that have an address that is in the same
- * subnet as the given IP address.
- *
- * @param ip IP address to find matching subnet interface for
- * @return a set of interfaces
- */
- Set<Interface> getMatchingInterfaces(IpAddress ip);
-}
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/intf/package-info.java b/incubator/api/src/main/java/org/onosproject/incubator/net/intf/package-info.java
deleted file mode 100644
index 2466e78..0000000
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/intf/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * 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.
- */
-
-/**
- * Interface Service.
- */
-package org.onosproject.incubator.net.intf;
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/neighbour/NeighbourHandlerRegistration.java b/incubator/api/src/main/java/org/onosproject/incubator/net/neighbour/NeighbourHandlerRegistration.java
index 4c55e24..df35319 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/neighbour/NeighbourHandlerRegistration.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/neighbour/NeighbourHandlerRegistration.java
@@ -17,7 +17,7 @@
package org.onosproject.incubator.net.neighbour;
import org.onosproject.core.ApplicationId;
-import org.onosproject.incubator.net.intf.Interface;
+import org.onosproject.net.intf.Interface;
/**
* Information about the registration of a neighbour message handler.
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/neighbour/NeighbourMessageActions.java b/incubator/api/src/main/java/org/onosproject/incubator/net/neighbour/NeighbourMessageActions.java
index 9561b89..0e04aee 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/neighbour/NeighbourMessageActions.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/neighbour/NeighbourMessageActions.java
@@ -18,7 +18,7 @@
import com.google.common.annotations.Beta;
import org.onlab.packet.MacAddress;
-import org.onosproject.incubator.net.intf.Interface;
+import org.onosproject.net.intf.Interface;
import org.onosproject.net.ConnectPoint;
/**
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/neighbour/NeighbourMessageContext.java b/incubator/api/src/main/java/org/onosproject/incubator/net/neighbour/NeighbourMessageContext.java
index 2a0ddd9..ca5e3ce 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/neighbour/NeighbourMessageContext.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/neighbour/NeighbourMessageContext.java
@@ -21,7 +21,7 @@
import org.onlab.packet.IpAddress;
import org.onlab.packet.MacAddress;
import org.onlab.packet.VlanId;
-import org.onosproject.incubator.net.intf.Interface;
+import org.onosproject.net.intf.Interface;
import org.onosproject.net.ConnectPoint;
/**
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/neighbour/NeighbourResolutionService.java b/incubator/api/src/main/java/org/onosproject/incubator/net/neighbour/NeighbourResolutionService.java
index 986ecbe..e6e3e20 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/neighbour/NeighbourResolutionService.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/neighbour/NeighbourResolutionService.java
@@ -18,7 +18,7 @@
import com.google.common.annotations.Beta;
import org.onosproject.core.ApplicationId;
-import org.onosproject.incubator.net.intf.Interface;
+import org.onosproject.net.intf.Interface;
import org.onosproject.net.ConnectPoint;
import java.util.Collection;