Committed by
Gerrit Code Review
[ONOS-4045]Adding mastership service to NetconfProvider
Change-Id: Id39cbef54a079ab6e080a9d3f60770c4bea90b3f
Showing
11 changed files
with
350 additions
and
61 deletions
| ... | @@ -18,6 +18,7 @@ package org.onosproject.drivers.netconf; | ... | @@ -18,6 +18,7 @@ package org.onosproject.drivers.netconf; |
| 18 | 18 | ||
| 19 | import com.google.common.base.Preconditions; | 19 | import com.google.common.base.Preconditions; |
| 20 | import org.onosproject.drivers.utilities.XmlConfigParser; | 20 | import org.onosproject.drivers.utilities.XmlConfigParser; |
| 21 | +import org.onosproject.mastership.MastershipService; | ||
| 21 | import org.onosproject.net.DeviceId; | 22 | import org.onosproject.net.DeviceId; |
| 22 | import org.onosproject.net.behaviour.ControllerConfig; | 23 | import org.onosproject.net.behaviour.ControllerConfig; |
| 23 | import org.onosproject.net.behaviour.ControllerInfo; | 24 | import org.onosproject.net.behaviour.ControllerInfo; |
| ... | @@ -44,21 +45,29 @@ public class NetconfControllerConfig extends AbstractHandlerBehaviour | ... | @@ -44,21 +45,29 @@ public class NetconfControllerConfig extends AbstractHandlerBehaviour |
| 44 | 45 | ||
| 45 | private final Logger log = getLogger(NetconfControllerConfig.class); | 46 | private final Logger log = getLogger(NetconfControllerConfig.class); |
| 46 | 47 | ||
| 48 | + | ||
| 47 | @Override | 49 | @Override |
| 48 | public List<ControllerInfo> getControllers() { | 50 | public List<ControllerInfo> getControllers() { |
| 49 | DriverHandler handler = handler(); | 51 | DriverHandler handler = handler(); |
| 50 | NetconfController controller = handler.get(NetconfController.class); | 52 | NetconfController controller = handler.get(NetconfController.class); |
| 51 | - DeviceId ofDeviceId = handler.data().deviceId(); | 53 | + MastershipService mastershipService = handler.get(MastershipService.class); |
| 54 | + DeviceId deviceId = handler.data().deviceId(); | ||
| 52 | Preconditions.checkNotNull(controller, "Netconf controller is null"); | 55 | Preconditions.checkNotNull(controller, "Netconf controller is null"); |
| 53 | List<ControllerInfo> controllers = new ArrayList<>(); | 56 | List<ControllerInfo> controllers = new ArrayList<>(); |
| 57 | + if (mastershipService.isLocalMaster(deviceId)) { | ||
| 54 | try { | 58 | try { |
| 55 | - String reply = controller.getDevicesMap().get(ofDeviceId).getSession(). | 59 | + String reply = controller.getNetconfDevice(deviceId).getSession(). |
| 56 | getConfig("running"); | 60 | getConfig("running"); |
| 57 | log.debug("Reply XML {}", reply); | 61 | log.debug("Reply XML {}", reply); |
| 58 | controllers.addAll(XmlConfigParser.parseStreamControllers(XmlConfigParser. | 62 | controllers.addAll(XmlConfigParser.parseStreamControllers(XmlConfigParser. |
| 59 | loadXml(new ByteArrayInputStream(reply.getBytes(StandardCharsets.UTF_8))))); | 63 | loadXml(new ByteArrayInputStream(reply.getBytes(StandardCharsets.UTF_8))))); |
| 60 | } catch (IOException e) { | 64 | } catch (IOException e) { |
| 61 | - log.error("Cannot communicate with device {} ", ofDeviceId); | 65 | + log.error("Cannot communicate with device {} ", deviceId, e); |
| 66 | + } | ||
| 67 | + } else { | ||
| 68 | + log.warn("I'm not master for {} please use master, {} to execute command", | ||
| 69 | + deviceId, | ||
| 70 | + mastershipService.getMasterFor(deviceId)); | ||
| 62 | } | 71 | } |
| 63 | return controllers; | 72 | return controllers; |
| 64 | } | 73 | } |
| ... | @@ -69,6 +78,8 @@ public class NetconfControllerConfig extends AbstractHandlerBehaviour | ... | @@ -69,6 +78,8 @@ public class NetconfControllerConfig extends AbstractHandlerBehaviour |
| 69 | NetconfController controller = handler.get(NetconfController.class); | 78 | NetconfController controller = handler.get(NetconfController.class); |
| 70 | DeviceId deviceId = handler.data().deviceId(); | 79 | DeviceId deviceId = handler.data().deviceId(); |
| 71 | Preconditions.checkNotNull(controller, "Netconf controller is null"); | 80 | Preconditions.checkNotNull(controller, "Netconf controller is null"); |
| 81 | + MastershipService mastershipService = handler.get(MastershipService.class); | ||
| 82 | + if (mastershipService.isLocalMaster(deviceId)) { | ||
| 72 | try { | 83 | try { |
| 73 | NetconfDevice device = controller.getNetconfDevice(deviceId); | 84 | NetconfDevice device = controller.getNetconfDevice(deviceId); |
| 74 | String config = null; | 85 | String config = null; |
| ... | @@ -92,7 +103,11 @@ public class NetconfControllerConfig extends AbstractHandlerBehaviour | ... | @@ -92,7 +103,11 @@ public class NetconfControllerConfig extends AbstractHandlerBehaviour |
| 92 | } catch (IOException e) { | 103 | } catch (IOException e) { |
| 93 | log.error("Cannot comunicate to device {} , exception {}", deviceId, e.getMessage()); | 104 | log.error("Cannot comunicate to device {} , exception {}", deviceId, e.getMessage()); |
| 94 | } | 105 | } |
| 95 | - | 106 | + } else { |
| 107 | + log.warn("I'm not master for {} please use master, {} to execute command", | ||
| 108 | + deviceId, | ||
| 109 | + mastershipService.getMasterFor(deviceId)); | ||
| 110 | + } | ||
| 96 | } | 111 | } |
| 97 | 112 | ||
| 98 | //TODO maybe put method getNetconfClientService like in ovsdb if we need it | 113 | //TODO maybe put method getNetconfClientService like in ovsdb if we need it | ... | ... |
| ... | @@ -46,31 +46,31 @@ public interface NetconfController { | ... | @@ -46,31 +46,31 @@ public interface NetconfController { |
| 46 | * Tries to connect to a specific NETCONF device, if the connection is succesful | 46 | * Tries to connect to a specific NETCONF device, if the connection is succesful |
| 47 | * it creates and adds the device to the ONOS core as a NetconfDevice. | 47 | * it creates and adds the device to the ONOS core as a NetconfDevice. |
| 48 | * | 48 | * |
| 49 | - * @param deviceInfo info about the device to add | 49 | + * @param deviceId deviceId of the device to connect |
| 50 | * @return NetconfDevice Netconf device | 50 | * @return NetconfDevice Netconf device |
| 51 | * @throws NetconfException when device is not available | 51 | * @throws NetconfException when device is not available |
| 52 | */ | 52 | */ |
| 53 | - NetconfDevice connectDevice(NetconfDeviceInfo deviceInfo) throws NetconfException; | 53 | + NetconfDevice connectDevice(DeviceId deviceId) throws NetconfException; |
| 54 | 54 | ||
| 55 | /** | 55 | /** |
| 56 | * Disconnects a Netconf device and removes it from the core. | 56 | * Disconnects a Netconf device and removes it from the core. |
| 57 | * | 57 | * |
| 58 | - * @param deviceInfo info about the device to remove | 58 | + * @param deviceId id of the device to remove |
| 59 | + * @param remove true if device is to be removed from core | ||
| 59 | */ | 60 | */ |
| 60 | - void disconnectDevice(NetconfDeviceInfo deviceInfo); | 61 | + void disconnectDevice(DeviceId deviceId, boolean remove); |
| 61 | 62 | ||
| 62 | /** | 63 | /** |
| 63 | * Removes a Netconf device from the core. | 64 | * Removes a Netconf device from the core. |
| 64 | * | 65 | * |
| 65 | - * @param deviceInfo info about the device to remove | 66 | + * @param deviceId id of the device to remove |
| 66 | */ | 67 | */ |
| 67 | - void removeDevice(NetconfDeviceInfo deviceInfo); | 68 | + void removeDevice(DeviceId deviceId); |
| 68 | 69 | ||
| 69 | /** | 70 | /** |
| 70 | * Gets all the nodes information. | 71 | * Gets all the nodes information. |
| 71 | * | 72 | * |
| 72 | * @return map of devices | 73 | * @return map of devices |
| 73 | - * | ||
| 74 | */ | 74 | */ |
| 75 | Map<DeviceId, NetconfDevice> getDevicesMap(); | 75 | Map<DeviceId, NetconfDevice> getDevicesMap(); |
| 76 | 76 | ||
| ... | @@ -97,5 +97,4 @@ public interface NetconfController { | ... | @@ -97,5 +97,4 @@ public interface NetconfController { |
| 97 | * @return NetconfDevice Netconf device | 97 | * @return NetconfDevice Netconf device |
| 98 | */ | 98 | */ |
| 99 | NetconfDevice getNetconfDevice(IpAddress ip, int port); | 99 | NetconfDevice getNetconfDevice(IpAddress ip, int port); |
| 100 | - | ||
| 101 | } | 100 | } | ... | ... |
| ... | @@ -16,22 +16,25 @@ | ... | @@ -16,22 +16,25 @@ |
| 16 | 16 | ||
| 17 | package org.onosproject.netconf; | 17 | package org.onosproject.netconf; |
| 18 | 18 | ||
| 19 | +import org.onosproject.net.DeviceId; | ||
| 20 | + | ||
| 19 | /** | 21 | /** |
| 20 | * Allows for providers interested in node events to be notified. | 22 | * Allows for providers interested in node events to be notified. |
| 21 | */ | 23 | */ |
| 22 | public interface NetconfDeviceListener { | 24 | public interface NetconfDeviceListener { |
| 23 | 25 | ||
| 24 | /** | 26 | /** |
| 25 | - * Notifies that the node was added. | 27 | + * Notifies that the device was added. |
| 26 | * | 28 | * |
| 27 | - * @param nodeId the node where the event occurred | 29 | + * @param deviceId the device that was added |
| 28 | */ | 30 | */ |
| 29 | - void deviceAdded(NetconfDeviceInfo nodeId); | 31 | + void deviceAdded(DeviceId deviceId); |
| 30 | 32 | ||
| 31 | /** | 33 | /** |
| 32 | - * Notifies that the node was removed. | 34 | + * Notifies that the device was removed. |
| 33 | * | 35 | * |
| 34 | - * @param nodeId the node where the event occurred | 36 | + * @param deviceId the device that was removed |
| 35 | */ | 37 | */ |
| 36 | - void deviceRemoved(NetconfDeviceInfo nodeId); | 38 | + |
| 39 | + void deviceRemoved(DeviceId deviceId); | ||
| 37 | } | 40 | } | ... | ... |
| ... | @@ -35,7 +35,7 @@ public class DefaultNetconfDevice implements NetconfDevice { | ... | @@ -35,7 +35,7 @@ public class DefaultNetconfDevice implements NetconfDevice { |
| 35 | .getLogger(DefaultNetconfDevice.class); | 35 | .getLogger(DefaultNetconfDevice.class); |
| 36 | 36 | ||
| 37 | private NetconfDeviceInfo netconfDeviceInfo; | 37 | private NetconfDeviceInfo netconfDeviceInfo; |
| 38 | - private boolean deviceState = false; | 38 | + private boolean deviceState = true; |
| 39 | protected NetconfSessionFactory sessionFactory = new SshNetconfSessionFactory(); | 39 | protected NetconfSessionFactory sessionFactory = new SshNetconfSessionFactory(); |
| 40 | private NetconfSession netconfSession; | 40 | private NetconfSession netconfSession; |
| 41 | 41 | ||
| ... | @@ -53,10 +53,10 @@ public class DefaultNetconfDevice implements NetconfDevice { | ... | @@ -53,10 +53,10 @@ public class DefaultNetconfDevice implements NetconfDevice { |
| 53 | try { | 53 | try { |
| 54 | netconfSession = sessionFactory.createNetconfSession(deviceInfo); | 54 | netconfSession = sessionFactory.createNetconfSession(deviceInfo); |
| 55 | } catch (IOException e) { | 55 | } catch (IOException e) { |
| 56 | + deviceState = false; | ||
| 56 | throw new NetconfException("Cannot create connection and session for device " + | 57 | throw new NetconfException("Cannot create connection and session for device " + |
| 57 | deviceInfo, e); | 58 | deviceInfo, e); |
| 58 | } | 59 | } |
| 59 | - deviceState = true; | ||
| 60 | } | 60 | } |
| 61 | 61 | ||
| 62 | @Override | 62 | @Override | ... | ... |
| ... | @@ -19,9 +19,16 @@ package org.onosproject.netconf.ctl; | ... | @@ -19,9 +19,16 @@ package org.onosproject.netconf.ctl; |
| 19 | import org.apache.felix.scr.annotations.Activate; | 19 | import org.apache.felix.scr.annotations.Activate; |
| 20 | import org.apache.felix.scr.annotations.Component; | 20 | import org.apache.felix.scr.annotations.Component; |
| 21 | import org.apache.felix.scr.annotations.Deactivate; | 21 | import org.apache.felix.scr.annotations.Deactivate; |
| 22 | +import org.apache.felix.scr.annotations.Reference; | ||
| 23 | +import org.apache.felix.scr.annotations.ReferenceCardinality; | ||
| 22 | import org.apache.felix.scr.annotations.Service; | 24 | import org.apache.felix.scr.annotations.Service; |
| 23 | import org.onlab.packet.IpAddress; | 25 | import org.onlab.packet.IpAddress; |
| 26 | +import org.onosproject.net.Device; | ||
| 24 | import org.onosproject.net.DeviceId; | 27 | import org.onosproject.net.DeviceId; |
| 28 | +import org.onosproject.net.device.DeviceService; | ||
| 29 | +import org.onosproject.net.key.DeviceKeyId; | ||
| 30 | +import org.onosproject.net.key.DeviceKeyService; | ||
| 31 | +import org.onosproject.net.key.UsernamePassword; | ||
| 25 | import org.onosproject.netconf.NetconfController; | 32 | import org.onosproject.netconf.NetconfController; |
| 26 | import org.onosproject.netconf.NetconfDevice; | 33 | import org.onosproject.netconf.NetconfDevice; |
| 27 | import org.onosproject.netconf.NetconfDeviceFactory; | 34 | import org.onosproject.netconf.NetconfDeviceFactory; |
| ... | @@ -34,6 +41,7 @@ import org.osgi.service.component.ComponentContext; | ... | @@ -34,6 +41,7 @@ import org.osgi.service.component.ComponentContext; |
| 34 | import org.slf4j.Logger; | 41 | import org.slf4j.Logger; |
| 35 | import org.slf4j.LoggerFactory; | 42 | import org.slf4j.LoggerFactory; |
| 36 | 43 | ||
| 44 | +import java.util.Arrays; | ||
| 37 | import java.util.Map; | 45 | import java.util.Map; |
| 38 | import java.util.Set; | 46 | import java.util.Set; |
| 39 | import java.util.concurrent.ConcurrentHashMap; | 47 | import java.util.concurrent.ConcurrentHashMap; |
| ... | @@ -45,6 +53,11 @@ import java.util.concurrent.CopyOnWriteArraySet; | ... | @@ -45,6 +53,11 @@ import java.util.concurrent.CopyOnWriteArraySet; |
| 45 | @Component(immediate = true) | 53 | @Component(immediate = true) |
| 46 | @Service | 54 | @Service |
| 47 | public class NetconfControllerImpl implements NetconfController { | 55 | public class NetconfControllerImpl implements NetconfController { |
| 56 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
| 57 | + protected DeviceService deviceService; | ||
| 58 | + | ||
| 59 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
| 60 | + protected DeviceKeyService deviceKeyService; | ||
| 48 | 61 | ||
| 49 | public static final Logger log = LoggerFactory | 62 | public static final Logger log = LoggerFactory |
| 50 | .getLogger(NetconfControllerImpl.class); | 63 | .getLogger(NetconfControllerImpl.class); |
| ... | @@ -95,55 +108,93 @@ public class NetconfControllerImpl implements NetconfController { | ... | @@ -95,55 +108,93 @@ public class NetconfControllerImpl implements NetconfController { |
| 95 | } | 108 | } |
| 96 | 109 | ||
| 97 | @Override | 110 | @Override |
| 98 | - public NetconfDevice connectDevice(NetconfDeviceInfo deviceInfo) throws NetconfException { | 111 | + public NetconfDevice connectDevice(DeviceId deviceId) throws NetconfException { |
| 99 | - if (netconfDeviceMap.containsKey(deviceInfo.getDeviceId())) { | 112 | + if (netconfDeviceMap.containsKey(deviceId)) { |
| 100 | - log.info("Device {} is already present", deviceInfo); | 113 | + log.debug("Device {} is already present", deviceId); |
| 101 | - return netconfDeviceMap.get(deviceInfo.getDeviceId()); | 114 | + return netconfDeviceMap.get(deviceId); |
| 115 | + } else { | ||
| 116 | + log.debug("Creating NETCONF device {}", deviceId); | ||
| 117 | + Device device = deviceService.getDevice(deviceId); | ||
| 118 | + String ip; | ||
| 119 | + int port; | ||
| 120 | + if (device != null) { | ||
| 121 | + ip = device.annotations().value("ipaddress"); | ||
| 122 | + port = Integer.parseInt(device.annotations().value("port")); | ||
| 123 | + } else { | ||
| 124 | + String[] info = deviceId.toString().split(":"); | ||
| 125 | + if (info.length == 3) { | ||
| 126 | + ip = info[1]; | ||
| 127 | + port = Integer.parseInt(info[2]); | ||
| 102 | } else { | 128 | } else { |
| 103 | - log.info("Creating NETCONF device {}", deviceInfo); | 129 | + ip = Arrays.asList(info).stream().filter(el -> !el.equals(info[0]) |
| 104 | - NetconfDevice device = createDevice(deviceInfo); | 130 | + && !el.equals(info[info.length - 1])) |
| 105 | - device.getSession().addDeviceOutputListener(downListener); | 131 | + .reduce((t, u) -> t + ":" + u) |
| 106 | - return device; | 132 | + .get(); |
| 133 | + log.debug("ip v6 {}", ip); | ||
| 134 | + port = Integer.parseInt(info[info.length - 1]); | ||
| 135 | + } | ||
| 136 | + } | ||
| 137 | + try { | ||
| 138 | + UsernamePassword deviceKey = deviceKeyService.getDeviceKey( | ||
| 139 | + DeviceKeyId.deviceKeyId(deviceId.toString())).asUsernamePassword(); | ||
| 140 | + | ||
| 141 | + NetconfDeviceInfo deviceInfo = new NetconfDeviceInfo(deviceKey.username(), | ||
| 142 | + deviceKey.password(), | ||
| 143 | + IpAddress.valueOf(ip), | ||
| 144 | + port); | ||
| 145 | + NetconfDevice netconfDevicedevice = createDevice(deviceInfo); | ||
| 146 | + | ||
| 147 | + netconfDevicedevice.getSession().addDeviceOutputListener(downListener); | ||
| 148 | + return netconfDevicedevice; | ||
| 149 | + } catch (NullPointerException e) { | ||
| 150 | + throw new NetconfException("No Device Key for device " + deviceId, e); | ||
| 151 | + } | ||
| 107 | } | 152 | } |
| 108 | } | 153 | } |
| 109 | 154 | ||
| 110 | @Override | 155 | @Override |
| 111 | - public void disconnectDevice(NetconfDeviceInfo deviceInfo) { | 156 | + public void disconnectDevice(DeviceId deviceId, boolean remove) { |
| 112 | - if (!netconfDeviceMap.containsKey(deviceInfo.getDeviceId())) { | 157 | + if (!netconfDeviceMap.containsKey(deviceId)) { |
| 113 | - log.warn("Device {} is not present", deviceInfo); | 158 | + log.warn("Device {} is not present", deviceId); |
| 114 | } else { | 159 | } else { |
| 115 | - stopDevice(deviceInfo); | 160 | + stopDevice(deviceId, remove); |
| 161 | + } | ||
| 162 | + } | ||
| 163 | + | ||
| 164 | + private void stopDevice(DeviceId deviceId, boolean remove) { | ||
| 165 | + netconfDeviceMap.get(deviceId).disconnect(); | ||
| 166 | + netconfDeviceMap.remove(deviceId); | ||
| 167 | + if (remove) { | ||
| 168 | + for (NetconfDeviceListener l : netconfDeviceListeners) { | ||
| 169 | + l.deviceRemoved(deviceId); | ||
| 170 | + } | ||
| 116 | } | 171 | } |
| 117 | } | 172 | } |
| 118 | 173 | ||
| 119 | @Override | 174 | @Override |
| 120 | - public void removeDevice(NetconfDeviceInfo deviceInfo) { | 175 | + public void removeDevice(DeviceId deviceId) { |
| 121 | - if (!netconfDeviceMap.containsKey(deviceInfo.getDeviceId())) { | 176 | + if (!netconfDeviceMap.containsKey(deviceId)) { |
| 122 | - log.warn("Device {} is not present", deviceInfo); | 177 | + log.warn("Device {} is not present", deviceId); |
| 178 | + for (NetconfDeviceListener l : netconfDeviceListeners) { | ||
| 179 | + l.deviceRemoved(deviceId); | ||
| 180 | + } | ||
| 123 | } else { | 181 | } else { |
| 124 | - netconfDeviceMap.remove(deviceInfo.getDeviceId()); | 182 | + netconfDeviceMap.remove(deviceId); |
| 125 | for (NetconfDeviceListener l : netconfDeviceListeners) { | 183 | for (NetconfDeviceListener l : netconfDeviceListeners) { |
| 126 | - l.deviceRemoved(deviceInfo); | 184 | + l.deviceRemoved(deviceId); |
| 127 | } | 185 | } |
| 128 | } | 186 | } |
| 129 | } | 187 | } |
| 130 | 188 | ||
| 131 | private NetconfDevice createDevice(NetconfDeviceInfo deviceInfo) throws NetconfException { | 189 | private NetconfDevice createDevice(NetconfDeviceInfo deviceInfo) throws NetconfException { |
| 132 | NetconfDevice netconfDevice = deviceFactory.createNetconfDevice(deviceInfo); | 190 | NetconfDevice netconfDevice = deviceFactory.createNetconfDevice(deviceInfo); |
| 191 | + netconfDeviceMap.put(deviceInfo.getDeviceId(), netconfDevice); | ||
| 133 | for (NetconfDeviceListener l : netconfDeviceListeners) { | 192 | for (NetconfDeviceListener l : netconfDeviceListeners) { |
| 134 | - l.deviceAdded(deviceInfo); | 193 | + l.deviceAdded(deviceInfo.getDeviceId()); |
| 135 | } | 194 | } |
| 136 | - netconfDeviceMap.put(deviceInfo.getDeviceId(), netconfDevice); | ||
| 137 | return netconfDevice; | 195 | return netconfDevice; |
| 138 | } | 196 | } |
| 139 | 197 | ||
| 140 | - private void stopDevice(NetconfDeviceInfo deviceInfo) { | ||
| 141 | - netconfDeviceMap.get(deviceInfo.getDeviceId()).disconnect(); | ||
| 142 | - netconfDeviceMap.remove(deviceInfo.getDeviceId()); | ||
| 143 | - for (NetconfDeviceListener l : netconfDeviceListeners) { | ||
| 144 | - l.deviceRemoved(deviceInfo); | ||
| 145 | - } | ||
| 146 | - } | ||
| 147 | 198 | ||
| 148 | @Override | 199 | @Override |
| 149 | public Map<DeviceId, NetconfDevice> getDevicesMap() { | 200 | public Map<DeviceId, NetconfDevice> getDevicesMap() { |
| ... | @@ -155,6 +206,8 @@ public class NetconfControllerImpl implements NetconfController { | ... | @@ -155,6 +206,8 @@ public class NetconfControllerImpl implements NetconfController { |
| 155 | return netconfDeviceMap.keySet(); | 206 | return netconfDeviceMap.keySet(); |
| 156 | } | 207 | } |
| 157 | 208 | ||
| 209 | + | ||
| 210 | + | ||
| 158 | //Device factory for the specific NetconfDeviceImpl | 211 | //Device factory for the specific NetconfDeviceImpl |
| 159 | private class DefaultNetconfDeviceFactory implements NetconfDeviceFactory { | 212 | private class DefaultNetconfDeviceFactory implements NetconfDeviceFactory { |
| 160 | 213 | ||
| ... | @@ -171,7 +224,7 @@ public class NetconfControllerImpl implements NetconfController { | ... | @@ -171,7 +224,7 @@ public class NetconfControllerImpl implements NetconfController { |
| 171 | @Override | 224 | @Override |
| 172 | public void event(NetconfDeviceOutputEvent event) { | 225 | public void event(NetconfDeviceOutputEvent event) { |
| 173 | if (event.type().equals(NetconfDeviceOutputEvent.Type.DEVICE_UNREGISTERED)) { | 226 | if (event.type().equals(NetconfDeviceOutputEvent.Type.DEVICE_UNREGISTERED)) { |
| 174 | - removeDevice(event.getDeviceInfo()); | 227 | + removeDevice(event.getDeviceInfo().getDeviceId()); |
| 175 | } | 228 | } |
| 176 | } | 229 | } |
| 177 | 230 | ... | ... |
| ... | @@ -375,13 +375,12 @@ public class NetconfSessionImpl implements NetconfSession { | ... | @@ -375,13 +375,12 @@ public class NetconfSessionImpl implements NetconfSession { |
| 375 | 375 | ||
| 376 | private boolean close(boolean force) throws NetconfException { | 376 | private boolean close(boolean force) throws NetconfException { |
| 377 | StringBuilder rpc = new StringBuilder(); | 377 | StringBuilder rpc = new StringBuilder(); |
| 378 | - rpc.append("<rpc>"); | 378 | + rpc.append("<rpc xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">"); |
| 379 | if (force) { | 379 | if (force) { |
| 380 | - rpc.append("<kill-configuration/>"); | 380 | + rpc.append("<kill-session/>"); |
| 381 | } else { | 381 | } else { |
| 382 | - rpc.append("<close-configuration/>"); | 382 | + rpc.append("<close-session/>"); |
| 383 | } | 383 | } |
| 384 | - rpc.append("<close-configuration/>"); | ||
| 385 | rpc.append("</rpc>"); | 384 | rpc.append("</rpc>"); |
| 386 | rpc.append(ENDPATTERN); | 385 | rpc.append(ENDPATTERN); |
| 387 | return checkReply(sendRequest(rpc.toString())) || close(true); | 386 | return checkReply(sendRequest(rpc.toString())) || close(true); | ... | ... |
| ... | @@ -22,6 +22,8 @@ import org.junit.Before; | ... | @@ -22,6 +22,8 @@ import org.junit.Before; |
| 22 | import org.junit.Test; | 22 | import org.junit.Test; |
| 23 | import org.onlab.packet.IpAddress; | 23 | import org.onlab.packet.IpAddress; |
| 24 | import org.onosproject.net.DeviceId; | 24 | import org.onosproject.net.DeviceId; |
| 25 | +import org.onosproject.net.device.DeviceService; | ||
| 26 | +import org.onosproject.net.key.DeviceKeyService; | ||
| 25 | import org.onosproject.netconf.NetconfDevice; | 27 | import org.onosproject.netconf.NetconfDevice; |
| 26 | import org.onosproject.netconf.NetconfDeviceFactory; | 28 | import org.onosproject.netconf.NetconfDeviceFactory; |
| 27 | import org.onosproject.netconf.NetconfDeviceInfo; | 29 | import org.onosproject.netconf.NetconfDeviceInfo; |
| ... | @@ -44,12 +46,14 @@ import static org.junit.Assert.*; | ... | @@ -44,12 +46,14 @@ import static org.junit.Assert.*; |
| 44 | * Unit tests for the Netconf controller implementation test. | 46 | * Unit tests for the Netconf controller implementation test. |
| 45 | */ | 47 | */ |
| 46 | public class NetconfControllerImplTest { | 48 | public class NetconfControllerImplTest { |
| 49 | + | ||
| 47 | NetconfControllerImpl ctrl; | 50 | NetconfControllerImpl ctrl; |
| 48 | 51 | ||
| 49 | //DeviceInfo | 52 | //DeviceInfo |
| 50 | NetconfDeviceInfo deviceInfo1; | 53 | NetconfDeviceInfo deviceInfo1; |
| 51 | NetconfDeviceInfo deviceInfo2; | 54 | NetconfDeviceInfo deviceInfo2; |
| 52 | NetconfDeviceInfo badDeviceInfo3; | 55 | NetconfDeviceInfo badDeviceInfo3; |
| 56 | + NetconfDeviceInfo deviceInfoIpV6; | ||
| 53 | 57 | ||
| 54 | //Devices & DeviceId | 58 | //Devices & DeviceId |
| 55 | NetconfDevice device1; | 59 | NetconfDevice device1; |
| ... | @@ -68,21 +72,29 @@ public class NetconfControllerImplTest { | ... | @@ -68,21 +72,29 @@ public class NetconfControllerImplTest { |
| 68 | private static final String DEVICE_1_IP = "10.10.10.11"; | 72 | private static final String DEVICE_1_IP = "10.10.10.11"; |
| 69 | private static final String DEVICE_2_IP = "10.10.10.12"; | 73 | private static final String DEVICE_2_IP = "10.10.10.12"; |
| 70 | private static final String BAD_DEVICE_IP = "10.10.10.13"; | 74 | private static final String BAD_DEVICE_IP = "10.10.10.13"; |
| 75 | + private static final String DEVICE_IPV6 = "2001:db8::1"; | ||
| 71 | 76 | ||
| 72 | private static final int DEVICE_1_PORT = 11; | 77 | private static final int DEVICE_1_PORT = 11; |
| 73 | private static final int DEVICE_2_PORT = 12; | 78 | private static final int DEVICE_2_PORT = 12; |
| 74 | private static final int BAD_DEVICE_PORT = 13; | 79 | private static final int BAD_DEVICE_PORT = 13; |
| 80 | + private static final int IPV6_DEVICE_PORT = 14; | ||
| 81 | + | ||
| 82 | + private static DeviceService deviceService = new NetconfDeviceServiceMock(); | ||
| 83 | + private static DeviceKeyService deviceKeyService = new NetconfDeviceKeyServiceMock(); | ||
| 75 | 84 | ||
| 76 | 85 | ||
| 77 | @Before | 86 | @Before |
| 78 | public void setUp() throws Exception { | 87 | public void setUp() throws Exception { |
| 79 | ctrl = new NetconfControllerImpl(); | 88 | ctrl = new NetconfControllerImpl(); |
| 80 | ctrl.deviceFactory = new TestNetconfDeviceFactory(); | 89 | ctrl.deviceFactory = new TestNetconfDeviceFactory(); |
| 90 | + ctrl.deviceService = deviceService; | ||
| 91 | + ctrl.deviceKeyService = deviceKeyService; | ||
| 81 | 92 | ||
| 82 | //Creating mock devices | 93 | //Creating mock devices |
| 83 | deviceInfo1 = new NetconfDeviceInfo("device1", "001", IpAddress.valueOf(DEVICE_1_IP), DEVICE_1_PORT); | 94 | deviceInfo1 = new NetconfDeviceInfo("device1", "001", IpAddress.valueOf(DEVICE_1_IP), DEVICE_1_PORT); |
| 84 | deviceInfo2 = new NetconfDeviceInfo("device2", "002", IpAddress.valueOf(DEVICE_2_IP), DEVICE_2_PORT); | 95 | deviceInfo2 = new NetconfDeviceInfo("device2", "002", IpAddress.valueOf(DEVICE_2_IP), DEVICE_2_PORT); |
| 85 | badDeviceInfo3 = new NetconfDeviceInfo("device3", "003", IpAddress.valueOf(BAD_DEVICE_IP), BAD_DEVICE_PORT); | 96 | badDeviceInfo3 = new NetconfDeviceInfo("device3", "003", IpAddress.valueOf(BAD_DEVICE_IP), BAD_DEVICE_PORT); |
| 97 | + deviceInfoIpV6 = new NetconfDeviceInfo("deviceIpv6", "004", IpAddress.valueOf(DEVICE_IPV6), IPV6_DEVICE_PORT); | ||
| 86 | 98 | ||
| 87 | device1 = new TestNetconfDevice(deviceInfo1); | 99 | device1 = new TestNetconfDevice(deviceInfo1); |
| 88 | deviceId1 = deviceInfo1.getDeviceId(); | 100 | deviceId1 = deviceInfo1.getDeviceId(); |
| ... | @@ -168,7 +180,7 @@ public class NetconfControllerImplTest { | ... | @@ -168,7 +180,7 @@ public class NetconfControllerImplTest { |
| 168 | public void testConnectBadDevice() throws Exception { | 180 | public void testConnectBadDevice() throws Exception { |
| 169 | reflectedDeviceMap.clear(); | 181 | reflectedDeviceMap.clear(); |
| 170 | try { | 182 | try { |
| 171 | - ctrl.connectDevice(badDeviceInfo3); | 183 | + ctrl.connectDevice(badDeviceInfo3.getDeviceId()); |
| 172 | } finally { | 184 | } finally { |
| 173 | assertEquals("Incorrect device connection", 0, ctrl.getDevicesMap().size()); | 185 | assertEquals("Incorrect device connection", 0, ctrl.getDevicesMap().size()); |
| 174 | } | 186 | } |
| ... | @@ -180,21 +192,33 @@ public class NetconfControllerImplTest { | ... | @@ -180,21 +192,33 @@ public class NetconfControllerImplTest { |
| 180 | @Test | 192 | @Test |
| 181 | public void testConnectCorrectDevice() throws Exception { | 193 | public void testConnectCorrectDevice() throws Exception { |
| 182 | reflectedDeviceMap.clear(); | 194 | reflectedDeviceMap.clear(); |
| 183 | - ctrl.connectDevice(deviceInfo1); | 195 | + ctrl.connectDevice(deviceInfo1.getDeviceId()); |
| 184 | - ctrl.connectDevice(deviceInfo2); | 196 | + ctrl.connectDevice(deviceInfo2.getDeviceId()); |
| 185 | assertTrue("Incorrect device connection", ctrl.getDevicesMap().containsKey(deviceId1)); | 197 | assertTrue("Incorrect device connection", ctrl.getDevicesMap().containsKey(deviceId1)); |
| 186 | assertTrue("Incorrect device connection", ctrl.getDevicesMap().containsKey(deviceId2)); | 198 | assertTrue("Incorrect device connection", ctrl.getDevicesMap().containsKey(deviceId2)); |
| 187 | assertEquals("Incorrect device connection", 2, ctrl.getDevicesMap().size()); | 199 | assertEquals("Incorrect device connection", 2, ctrl.getDevicesMap().size()); |
| 188 | } | 200 | } |
| 189 | 201 | ||
| 202 | + /** | ||
| 203 | + * Check for correct ipv6 device connection. In this case the device map get modified. | ||
| 204 | + */ | ||
| 205 | + @Test | ||
| 206 | + public void testConnectCorrectIpv6Device() throws Exception { | ||
| 207 | + reflectedDeviceMap.clear(); | ||
| 208 | + ctrl.connectDevice(deviceInfoIpV6.getDeviceId()); | ||
| 209 | + assertTrue("Incorrect device connection", ctrl.getDevicesMap() | ||
| 210 | + .containsKey(deviceInfoIpV6.getDeviceId())); | ||
| 211 | + assertEquals("Incorrect device connection", 1, ctrl.getDevicesMap().size()); | ||
| 212 | + } | ||
| 213 | + | ||
| 190 | 214 | ||
| 191 | /** | 215 | /** |
| 192 | * Check for connect devices already added to the map. | 216 | * Check for connect devices already added to the map. |
| 193 | */ | 217 | */ |
| 194 | @Test | 218 | @Test |
| 195 | public void testConnectAlreadyExistingDevice() throws Exception { | 219 | public void testConnectAlreadyExistingDevice() throws Exception { |
| 196 | - NetconfDevice alreadyExistingDevice1 = ctrl.connectDevice(deviceInfo1); | 220 | + NetconfDevice alreadyExistingDevice1 = ctrl.connectDevice(deviceInfo1.getDeviceId()); |
| 197 | - NetconfDevice alreadyExistingDevice2 = ctrl.connectDevice(deviceInfo2); | 221 | + NetconfDevice alreadyExistingDevice2 = ctrl.connectDevice(deviceInfo2.getDeviceId()); |
| 198 | assertEquals("Incorrect device connection", alreadyExistingDevice1.getDeviceInfo().getDeviceId(), | 222 | assertEquals("Incorrect device connection", alreadyExistingDevice1.getDeviceInfo().getDeviceId(), |
| 199 | deviceInfo1.getDeviceId()); | 223 | deviceInfo1.getDeviceId()); |
| 200 | assertEquals("Incorrect device connection", alreadyExistingDevice2.getDeviceInfo().getDeviceId(), | 224 | assertEquals("Incorrect device connection", alreadyExistingDevice2.getDeviceInfo().getDeviceId(), |
| ... | @@ -206,7 +230,7 @@ public class NetconfControllerImplTest { | ... | @@ -206,7 +230,7 @@ public class NetconfControllerImplTest { |
| 206 | */ | 230 | */ |
| 207 | @Test | 231 | @Test |
| 208 | public void testDisconnectDevice() throws Exception { | 232 | public void testDisconnectDevice() throws Exception { |
| 209 | - ctrl.disconnectDevice(deviceInfo1); | 233 | + ctrl.disconnectDevice(deviceInfo1.getDeviceId(), true); |
| 210 | assertFalse("Incorrect device removal", ctrl.getDevicesMap().containsKey(deviceId1)); | 234 | assertFalse("Incorrect device removal", ctrl.getDevicesMap().containsKey(deviceId1)); |
| 211 | } | 235 | } |
| 212 | 236 | ||
| ... | @@ -215,7 +239,7 @@ public class NetconfControllerImplTest { | ... | @@ -215,7 +239,7 @@ public class NetconfControllerImplTest { |
| 215 | */ | 239 | */ |
| 216 | @Test | 240 | @Test |
| 217 | public void testRemoveDevice() throws Exception { | 241 | public void testRemoveDevice() throws Exception { |
| 218 | - ctrl.removeDevice(deviceInfo1); | 242 | + ctrl.removeDevice(deviceInfo1.getDeviceId()); |
| 219 | assertFalse("Incorrect device removal", ctrl.getDevicesMap().containsKey(deviceId1)); | 243 | assertFalse("Incorrect device removal", ctrl.getDevicesMap().containsKey(deviceId1)); |
| 220 | } | 244 | } |
| 221 | 245 | ||
| ... | @@ -234,13 +258,13 @@ public class NetconfControllerImplTest { | ... | @@ -234,13 +258,13 @@ public class NetconfControllerImplTest { |
| 234 | @Test | 258 | @Test |
| 235 | public void testDeviceDownEventListener() throws Exception { | 259 | public void testDeviceDownEventListener() throws Exception { |
| 236 | reflectedDeviceMap.clear(); | 260 | reflectedDeviceMap.clear(); |
| 237 | - ctrl.connectDevice(deviceInfo1); | 261 | + ctrl.connectDevice(deviceInfo1.getDeviceId()); |
| 238 | boolean result1 = reflectedDownListener.isRelevant(eventForDeviceInfo2); | 262 | boolean result1 = reflectedDownListener.isRelevant(eventForDeviceInfo2); |
| 239 | assertFalse("Irrelevant Device Event", result1); | 263 | assertFalse("Irrelevant Device Event", result1); |
| 240 | assertEquals("Incorrect device map size", 1, ctrl.getDevicesMap().size()); | 264 | assertEquals("Incorrect device map size", 1, ctrl.getDevicesMap().size()); |
| 241 | reflectedDownListener.event(eventForDeviceInfo1); | 265 | reflectedDownListener.event(eventForDeviceInfo1); |
| 242 | assertEquals("Incorrect device map size", 1, ctrl.getDevicesMap().size()); | 266 | assertEquals("Incorrect device map size", 1, ctrl.getDevicesMap().size()); |
| 243 | - ctrl.connectDevice(deviceInfo2); | 267 | + ctrl.connectDevice(deviceInfo2.getDeviceId()); |
| 244 | boolean result2 = reflectedDownListener.isRelevant(eventForDeviceInfo2); | 268 | boolean result2 = reflectedDownListener.isRelevant(eventForDeviceInfo2); |
| 245 | assertTrue("Irrelevant Device Event", result2); | 269 | assertTrue("Irrelevant Device Event", result2); |
| 246 | assertEquals("Incorrect device map size", 2, ctrl.getDevicesMap().size()); | 270 | assertEquals("Incorrect device map size", 2, ctrl.getDevicesMap().size()); |
| ... | @@ -269,7 +293,7 @@ public class NetconfControllerImplTest { | ... | @@ -269,7 +293,7 @@ public class NetconfControllerImplTest { |
| 269 | 293 | ||
| 270 | public TestNetconfDevice(NetconfDeviceInfo deviceInfo) throws NetconfException { | 294 | public TestNetconfDevice(NetconfDeviceInfo deviceInfo) throws NetconfException { |
| 271 | netconfDeviceInfo = deviceInfo; | 295 | netconfDeviceInfo = deviceInfo; |
| 272 | - if (netconfDeviceInfo.ip() != badDeviceInfo3.ip()) { | 296 | + if (!badDeviceInfo3.getDeviceId().equals(deviceInfo.getDeviceId())) { |
| 273 | netconfSession = EasyMock.createMock(NetconfSession.class); | 297 | netconfSession = EasyMock.createMock(NetconfSession.class); |
| 274 | deviceState = true; | 298 | deviceState = true; |
| 275 | } else { | 299 | } else { | ... | ... |
protocols/netconf/ctl/src/test/java/org/onosproject/netconf/ctl/NetconfDeviceKeyServiceMock.java
0 → 100644
| 1 | +/* | ||
| 2 | + * Copyright 2016 Open Networking Laboratory | ||
| 3 | + * | ||
| 4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 5 | + * you may not use this file except in compliance with the License. | ||
| 6 | + * You may obtain a copy of the License at | ||
| 7 | + * | ||
| 8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
| 9 | + * | ||
| 10 | + * Unless required by applicable law or agreed to in writing, software | ||
| 11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
| 12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 13 | + * See the License for the specific language governing permissions and | ||
| 14 | + * limitations under the License. | ||
| 15 | + */ | ||
| 16 | + | ||
| 17 | +package org.onosproject.netconf.ctl; | ||
| 18 | + | ||
| 19 | +import org.onlab.packet.IpAddress; | ||
| 20 | +import org.onosproject.net.key.DeviceKey; | ||
| 21 | +import org.onosproject.net.key.DeviceKeyId; | ||
| 22 | +import org.onosproject.net.key.DeviceKeyListener; | ||
| 23 | +import org.onosproject.net.key.DeviceKeyService; | ||
| 24 | +import org.onosproject.netconf.NetconfDeviceInfo; | ||
| 25 | + | ||
| 26 | +import java.util.Collection; | ||
| 27 | + | ||
| 28 | +/** | ||
| 29 | + * Mock DeviceKey service to return device keys. | ||
| 30 | + */ | ||
| 31 | +class NetconfDeviceKeyServiceMock implements DeviceKeyService { | ||
| 32 | + | ||
| 33 | + private static final String DEVICE_1_IP = "10.10.10.11"; | ||
| 34 | + private static final String DEVICE_2_IP = "10.10.10.12"; | ||
| 35 | + private static final String BAD_DEVICE_IP = "10.10.10.13"; | ||
| 36 | + private static final String DEVICE_IPV6 = "2001:db8::1"; | ||
| 37 | + | ||
| 38 | + private static final int DEVICE_1_PORT = 11; | ||
| 39 | + private static final int DEVICE_2_PORT = 12; | ||
| 40 | + private static final int BAD_DEVICE_PORT = 13; | ||
| 41 | + private static final int IPV6_DEVICE_PORT = 14; | ||
| 42 | + | ||
| 43 | + //DeviceInfo | ||
| 44 | + private NetconfDeviceInfo deviceInfo1 = | ||
| 45 | + new NetconfDeviceInfo("device1", "001", IpAddress.valueOf(DEVICE_1_IP), | ||
| 46 | + DEVICE_1_PORT); | ||
| 47 | + private NetconfDeviceInfo deviceInfo2 = | ||
| 48 | + new NetconfDeviceInfo("device2", "002", IpAddress.valueOf(DEVICE_2_IP), | ||
| 49 | + DEVICE_2_PORT); | ||
| 50 | + private NetconfDeviceInfo badDeviceInfo3 = | ||
| 51 | + new NetconfDeviceInfo("device3", "003", IpAddress.valueOf(BAD_DEVICE_IP), | ||
| 52 | + BAD_DEVICE_PORT); | ||
| 53 | + private NetconfDeviceInfo deviceInfoIpV6 = | ||
| 54 | + new NetconfDeviceInfo("deviceIpv6", "004", IpAddress.valueOf(DEVICE_IPV6), IPV6_DEVICE_PORT); | ||
| 55 | + | ||
| 56 | + @Override | ||
| 57 | + public Collection<DeviceKey> getDeviceKeys() { | ||
| 58 | + return null; | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + @Override | ||
| 62 | + public DeviceKey getDeviceKey(DeviceKeyId deviceKeyId) { | ||
| 63 | + if (deviceKeyId.toString().equals(deviceInfo1.getDeviceId().toString())) { | ||
| 64 | + return DeviceKey.createDeviceKeyUsingUsernamePassword( | ||
| 65 | + DeviceKeyId.deviceKeyId(deviceInfo1.getDeviceId().toString()), | ||
| 66 | + null, deviceInfo1.name(), deviceInfo1.password()); | ||
| 67 | + } else if (deviceKeyId.toString().equals(deviceInfo2.getDeviceId().toString())) { | ||
| 68 | + return DeviceKey.createDeviceKeyUsingUsernamePassword( | ||
| 69 | + DeviceKeyId.deviceKeyId(deviceInfo2.getDeviceId().toString()), | ||
| 70 | + null, deviceInfo2.name(), deviceInfo2.password()); | ||
| 71 | + } else if (deviceKeyId.toString().equals(badDeviceInfo3.getDeviceId().toString())) { | ||
| 72 | + return DeviceKey.createDeviceKeyUsingUsernamePassword( | ||
| 73 | + DeviceKeyId.deviceKeyId(badDeviceInfo3.getDeviceId().toString()), | ||
| 74 | + null, badDeviceInfo3.name(), badDeviceInfo3.password()); | ||
| 75 | + } else if (deviceKeyId.toString().equals(deviceInfoIpV6.getDeviceId().toString())) { | ||
| 76 | + return DeviceKey.createDeviceKeyUsingUsernamePassword( | ||
| 77 | + DeviceKeyId.deviceKeyId(deviceInfoIpV6.getDeviceId().toString()), | ||
| 78 | + null, deviceInfoIpV6.name(), deviceInfoIpV6.password()); | ||
| 79 | + } | ||
| 80 | + return null; | ||
| 81 | + } | ||
| 82 | + | ||
| 83 | + @Override | ||
| 84 | + public void addListener(DeviceKeyListener listener) { | ||
| 85 | + | ||
| 86 | + } | ||
| 87 | + | ||
| 88 | + @Override | ||
| 89 | + public void removeListener(DeviceKeyListener listener) { | ||
| 90 | + | ||
| 91 | + } | ||
| 92 | +} |
protocols/netconf/ctl/src/test/java/org/onosproject/netconf/ctl/NetconfDeviceServiceMock.java
0 → 100644
| 1 | +/* | ||
| 2 | + * Copyright 2016 Open Networking Laboratory | ||
| 3 | + * | ||
| 4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 5 | + * you may not use this file except in compliance with the License. | ||
| 6 | + * You may obtain a copy of the License at | ||
| 7 | + * | ||
| 8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
| 9 | + * | ||
| 10 | + * Unless required by applicable law or agreed to in writing, software | ||
| 11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
| 12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 13 | + * See the License for the specific language governing permissions and | ||
| 14 | + * limitations under the License. | ||
| 15 | + */ | ||
| 16 | + | ||
| 17 | +package org.onosproject.netconf.ctl; | ||
| 18 | + | ||
| 19 | +import org.onosproject.net.Device; | ||
| 20 | +import org.onosproject.net.DeviceId; | ||
| 21 | +import org.onosproject.net.MastershipRole; | ||
| 22 | +import org.onosproject.net.Port; | ||
| 23 | +import org.onosproject.net.PortNumber; | ||
| 24 | +import org.onosproject.net.device.DeviceListener; | ||
| 25 | +import org.onosproject.net.device.DeviceService; | ||
| 26 | +import org.onosproject.net.device.PortStatistics; | ||
| 27 | + | ||
| 28 | +import java.util.List; | ||
| 29 | + | ||
| 30 | +/** | ||
| 31 | + * Mock device Service. | ||
| 32 | + */ | ||
| 33 | +class NetconfDeviceServiceMock implements DeviceService { | ||
| 34 | + | ||
| 35 | + @Override | ||
| 36 | + public int getDeviceCount() { | ||
| 37 | + return 0; | ||
| 38 | + } | ||
| 39 | + | ||
| 40 | + @Override | ||
| 41 | + public Iterable<Device> getDevices() { | ||
| 42 | + return null; | ||
| 43 | + } | ||
| 44 | + | ||
| 45 | + @Override | ||
| 46 | + public Iterable<Device> getDevices(Device.Type type) { | ||
| 47 | + return null; | ||
| 48 | + } | ||
| 49 | + | ||
| 50 | + @Override | ||
| 51 | + public Iterable<Device> getAvailableDevices() { | ||
| 52 | + return null; | ||
| 53 | + } | ||
| 54 | + | ||
| 55 | + @Override | ||
| 56 | + public Iterable<Device> getAvailableDevices(Device.Type type) { | ||
| 57 | + return null; | ||
| 58 | + } | ||
| 59 | + | ||
| 60 | + @Override | ||
| 61 | + public Device getDevice(DeviceId deviceId) { | ||
| 62 | + return null; | ||
| 63 | + } | ||
| 64 | + | ||
| 65 | + @Override | ||
| 66 | + public MastershipRole getRole(DeviceId deviceId) { | ||
| 67 | + return null; | ||
| 68 | + } | ||
| 69 | + | ||
| 70 | + @Override | ||
| 71 | + public List<Port> getPorts(DeviceId deviceId) { | ||
| 72 | + return null; | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + @Override | ||
| 76 | + public List<PortStatistics> getPortStatistics(DeviceId deviceId) { | ||
| 77 | + return null; | ||
| 78 | + } | ||
| 79 | + | ||
| 80 | + @Override | ||
| 81 | + public List<PortStatistics> getPortDeltaStatistics(DeviceId deviceId) { | ||
| 82 | + return null; | ||
| 83 | + } | ||
| 84 | + | ||
| 85 | + @Override | ||
| 86 | + public Port getPort(DeviceId deviceId, PortNumber portNumber) { | ||
| 87 | + return null; | ||
| 88 | + } | ||
| 89 | + | ||
| 90 | + @Override | ||
| 91 | + public boolean isAvailable(DeviceId deviceId) { | ||
| 92 | + return false; | ||
| 93 | + } | ||
| 94 | + | ||
| 95 | + @Override | ||
| 96 | + public void addListener(DeviceListener listener) { | ||
| 97 | + | ||
| 98 | + } | ||
| 99 | + | ||
| 100 | + @Override | ||
| 101 | + public void removeListener(DeviceListener listener) { | ||
| 102 | + | ||
| 103 | + } | ||
| 104 | +} | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
This diff is collapsed. Click to expand it.
-
Please register or login to post a comment