diff --git a/core/api/src/main/java/org/onosproject/net/behaviour/ControllerConfig.java b/core/api/src/main/java/org/onosproject/net/behaviour/ControllerConfig.java new file mode 100644 index 0000000000..bb8a788b6d --- /dev/null +++ b/core/api/src/main/java/org/onosproject/net/behaviour/ControllerConfig.java @@ -0,0 +1,39 @@ +/* + * 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.net.behaviour; + +import java.util.List; + +/** + * Device behaviour to obtain and set controllers at the device. + */ +public interface ControllerConfig { + + //TODO: add other controller parameters as needed. + + /** + * Obtain the list of controller which are currently configured. + * @return a list for controller descriptions + */ + List getControllers(); + + /** + * Set a list of controllers on a device. + * @param controllers a list of controller descriptions + */ + void setControllers(List controllers); + +} diff --git a/core/api/src/main/java/org/onosproject/net/behaviour/ControllerInfo.java b/core/api/src/main/java/org/onosproject/net/behaviour/ControllerInfo.java new file mode 100644 index 0000000000..9867622960 --- /dev/null +++ b/core/api/src/main/java/org/onosproject/net/behaviour/ControllerInfo.java @@ -0,0 +1,32 @@ +/* + * 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.net.behaviour; + +import org.onlab.packet.IpAddress; + +/** + * Represents information for a device to connect to a controller. + */ +public class ControllerInfo { + + public final IpAddress ip; + public final int tcpPort; + + public ControllerInfo(IpAddress ip, int tcpPort) { + this.ip = ip; + this.tcpPort = tcpPort; + } +} diff --git a/core/api/src/main/java/org/onosproject/net/behaviour/PortConfig.java b/core/api/src/main/java/org/onosproject/net/behaviour/PortConfig.java new file mode 100644 index 0000000000..0f0c1da9e6 --- /dev/null +++ b/core/api/src/main/java/org/onosproject/net/behaviour/PortConfig.java @@ -0,0 +1,46 @@ +/* + * 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.net.behaviour; + +import com.google.common.primitives.UnsignedInteger; +import org.onosproject.net.PortNumber; + +/** + * Means to configure a logical port at the device. + */ +public interface PortConfig { + + /** + * Apply QoS configuration on a device. + * @param port a port number + * @param queueId an unsigned integer + */ + void applyQoS(PortNumber port, UnsignedInteger queueId); + + /** + * Remove a QoS configuration. + * @param port a port number + */ + void removeQoS(PortNumber port); + + /** + * Enable/disable administratively a port. + * @param port a port number + * @param state a boolean indicating state + */ + void setEnabled(PortNumber port, boolean state); + +} diff --git a/core/api/src/main/java/org/onosproject/net/behaviour/QueueConfig.java b/core/api/src/main/java/org/onosproject/net/behaviour/QueueConfig.java new file mode 100644 index 0000000000..22f3ecb775 --- /dev/null +++ b/core/api/src/main/java/org/onosproject/net/behaviour/QueueConfig.java @@ -0,0 +1,56 @@ +/* + * 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.net.behaviour; + +import com.google.common.primitives.UnsignedInteger; + +import java.util.Set; + +/** + * Means to alter a device's dataplane queues. + */ +public interface QueueConfig { + + /** + * Obtain all queues configured on a device. + * + * @return a list of queue descriptions + */ + Set getQueues(); + + /** + * Obtain a specific queue given a queue id. + * + * @param queueId an unsigned integer representing a queue id + * @return a queue description + */ + QueueInfo getQueue(UnsignedInteger queueId); + + /** + * Add a queue to a device. + * + * @param queue a queue description + */ + void addQueue(QueueInfo queue); + + /** + * Remove a queue from a device. + * + * @param queueId an unsigned integer + */ + void removeQueue(UnsignedInteger queueId); + +} diff --git a/core/api/src/main/java/org/onosproject/net/behaviour/QueueInfo.java b/core/api/src/main/java/org/onosproject/net/behaviour/QueueInfo.java new file mode 100644 index 0000000000..25852b36e6 --- /dev/null +++ b/core/api/src/main/java/org/onosproject/net/behaviour/QueueInfo.java @@ -0,0 +1,56 @@ +/* + * 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.net.behaviour; + +import com.google.common.primitives.UnsignedInteger; + +/** + * Represents a dataplane queue. + */ +public class QueueInfo { + + public enum Type { + /** + * Supports burst and priority as well as min and max rates. + */ + FULL, + + /** + * Only support min and max rates. + */ + MINMAX + } + + private final UnsignedInteger queueId; + private final Type type; + private final long minRate; + private final long maxRate; + private final long burst; + private final long priority; + + public QueueInfo(UnsignedInteger queueId, Type type, long minRate, + long maxRate, long burst, long priority) { + this.queueId = queueId; + this.type = type; + this.minRate = minRate; + this.maxRate = maxRate; + this.burst = burst; + this.priority = priority; + } + + //TODO builder + // public static QueueInfoBuilder builder() {} +}