mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-28 14:51:37 +01:00
Initial sketch of driver based configuration api.
Change-Id: I82468aea5d698b28a4fd996142f9c88d7a56e31f
This commit is contained in:
parent
e25c5a2d15
commit
8c2a8b33c1
@ -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<ControllerInfo> getControllers();
|
||||
|
||||
/**
|
||||
* Set a list of controllers on a device.
|
||||
* @param controllers a list of controller descriptions
|
||||
*/
|
||||
void setControllers(List<ControllerInfo> controllers);
|
||||
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
|
||||
}
|
||||
@ -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<QueueInfo> 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);
|
||||
|
||||
}
|
||||
@ -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() {}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user