diff options
Diffstat (limited to 'framework/src/onos/drivers/src/main/java/org/onosproject/driver/ovsdb/OvsdbControllerConfig.java')
-rw-r--r-- | framework/src/onos/drivers/src/main/java/org/onosproject/driver/ovsdb/OvsdbControllerConfig.java | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/ovsdb/OvsdbControllerConfig.java b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/ovsdb/OvsdbControllerConfig.java deleted file mode 100644 index f116ab84..00000000 --- a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/ovsdb/OvsdbControllerConfig.java +++ /dev/null @@ -1,103 +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.driver.ovsdb; - -import com.google.common.collect.ImmutableSet; -import org.onlab.packet.IpAddress; -import org.onlab.packet.TpPort; -import org.onosproject.net.AnnotationKeys; -import org.onosproject.net.DeviceId; -import org.onosproject.net.behaviour.ControllerConfig; -import org.onosproject.net.behaviour.ControllerInfo; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.driver.AbstractHandlerBehaviour; -import org.onosproject.net.driver.DriverHandler; -import org.onosproject.ovsdb.controller.OvsdbBridge; -import org.onosproject.ovsdb.controller.OvsdbClientService; -import org.onosproject.ovsdb.controller.OvsdbController; -import org.onosproject.ovsdb.controller.OvsdbNodeId; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -import static com.google.common.base.Preconditions.checkState; -import static org.onlab.util.Tools.delay; - -/** - * Implementation of controller config which allows to get and set controllers. - */ -public class OvsdbControllerConfig extends AbstractHandlerBehaviour implements ControllerConfig { - @Override - public List<ControllerInfo> getControllers() { - DriverHandler handler = handler(); - OvsdbClientService clientService = getOvsdbClientService(handler); - Set<ControllerInfo> controllers = clientService.getControllers( - handler().data().deviceId()); - return new ArrayList<>(controllers); - } - - @Override - public void setControllers(List<ControllerInfo> controllers) { - DriverHandler handler = handler(); - OvsdbClientService clientService = getOvsdbClientService(handler); - if (!clientService.getControllers(handler().data().deviceId()) - .equals(ImmutableSet.copyOf(controllers))) { - clientService.setControllersWithDeviceId(handler(). - data().deviceId(), controllers); - } - } - - // Used for getting OvsdbClientService. - private OvsdbClientService getOvsdbClientService(DriverHandler handler) { - OvsdbController ovsController = handler.get(OvsdbController.class); - DeviceService deviceService = handler.get(DeviceService.class); - DeviceId ofDeviceId = handler.data().deviceId(); - String[] mgmtAddress = deviceService.getDevice(ofDeviceId) - .annotations().value(AnnotationKeys.MANAGEMENT_ADDRESS).split(":"); - String targetIp = mgmtAddress[0]; - TpPort targetPort = null; - if (mgmtAddress.length > 1) { - targetPort = TpPort.tpPort(Integer.parseInt(mgmtAddress[1])); - } - - List<OvsdbNodeId> nodeIds = ovsController.getNodeIds().stream() - .filter(nodeId -> nodeId.getIpAddress().equals(targetIp)) - .collect(Collectors.toList()); - if (nodeIds.size() == 0) { - //TODO decide what port? - ovsController.connect(IpAddress.valueOf(targetIp), - targetPort == null ? TpPort.tpPort(6640) : targetPort); - delay(1000); //FIXME... connect is async - } - List<OvsdbClientService> clientServices = ovsController.getNodeIds().stream() - .filter(nodeId -> nodeId.getIpAddress().equals(targetIp)) - .map(ovsController::getOvsdbClient) - .filter(cs -> cs.getBridges().stream().anyMatch(b -> dpidMatches(b, ofDeviceId))) - .collect(Collectors.toList()); - checkState(clientServices.size() > 0, "No clientServices found"); - //FIXME add connection to management address if null --> done ? - return clientServices.size() > 0 ? clientServices.get(0) : null; - } - - private static boolean dpidMatches(OvsdbBridge bridge, DeviceId deviceId) { - String bridgeDpid = "of:" + bridge.datapathId().value(); - String ofDpid = deviceId.toString(); - return bridgeDpid.equals(ofDpid); - } -}
\ No newline at end of file |